Upgrade to Pro — share decks privately, control downloads, hide ads and more …

“Railsな人” のための低レイヤへの招待 / introduction-to-low-level-mruby

“Railsな人” のための低レイヤへの招待 / introduction-to-low-level-mruby

2cf373725ded741824c50fd571eda6e1?s=128

KONDO Uchio

May 21, 2021
Tweet

Transcript

  1. l3BJMTͳਓzͷͨΊͷ௿ϨΠϠ΁ͷট଴ 6DIJP,POEP(.01FQBCP *OD ۜ࠲3BJMT ͦΕɺNSVCZͰ

  2. γχΞɾϓϦϯγύϧΤϯδχΞ ۙ౻ Ӊஐ࿕ / @udzura https://blog.udzura.jp/ Uchio Kondo ٕज़෦ ٕज़ج൫νʔϜ

    @ GMOϖύϘ / ෱Ԭ ΤϯδχΞΧϑΣʢ෱Ԭࢢ੺ẂנจԽձؗʣ αϙʔλʔ Duolingo Diamond Leaguer 💎 #Ruby #Rust #mruby #Containers #eBPF #CRIU #Seccomp #RubyKaigi #CloudNativeDays #Zumba #γϨϯ #FitBoxing2
  3. ͜͏͍͏ຊΛॻ͖·ͨ͠

  4. ௿ϨΠϠ γεςϜϓϩάϥϛϯά

  5. γεςϜϓϩάϥϛϯάͱ͸ w Α͘ݟ͔͚Δͷ͸࣍ͷΑ͏ͳ಺༰Λࢦͯ͠ʮγεςϜϓϩάϥϛϯάʯͱ͍͏৔߹Ͱ͢ɻ w $ݴޠʹΑΔϓϩάϥϛϯά w ΞηϯϒϦݴޠΛҙࣝͨ͠$ݴޠʹΑΔϓϩάϥϛϯά w ݴޠॲཧܥʢΠϯλϓϦλΛؚΉʣɺಛʹωΠςΟϒίʔυΛੜ੒͢ΔίϯύΠϥͷ։ൃ w

    04ࣗ਎ͷϓϩάϥϛϯά w 04ͷఏڙ͢ΔػೳΛ࢖ͬͨϓϩάϥϛϯά w ຊ࿈ࡌͰ͸ɺҰ൪࠷ޙͷʮ04ͷఏڙ͢ΔػೳΛ࢖ͬͨϓϩάϥϛϯάʯΛγεςϜϓϩάϥ ϛϯάͷఆٛͱͯ͠࿩Λ͢͢Ί·͢ɻ (PͳΒΘ͔ΔγεςϜϓϩάϥϛϯάୈճΑΓ
  6. 04ͷػೳͱ͸ wϑΝΠϧҰͭಡΉɺλʔϛφϧʹҰͭจࣈΛදࣔ͢ΔɺϓϩηεΛ࡞ ΔɺͦͷதͰ04ͷػೳ͕࢖ΘΕ͍ͯΔɻ w͔͠͠ɺීஈ͸ɺΈͳ͞Μ͕͍͍ײ͡ʹϓϩάϥϜΛಈ͔ͤΔΑ͏ɺ ࠷௿ݶͷͱ͜ΖҎ֎͸ӅΕ͍ͯΔͱ΋ݴ͑Δɻ w04ͷػೳͷதʹ͸ɺηΩϡϦςΟɺαʔόͷՄ༻ੑ΍ϓϩάϥϜͷ ύϑΥʔϚϯεʹܨ͕Δߴ౓ͳ΋ͷ΋͋Δɻ

  7. γεςϜίʔϧ w04ͷػೳΛ࢖͏ͨΊͷΠϯλϑΣʔε w$16ʹ͸ɺϢʔβϞʔυͱΧʔωϧϞʔυ͕͋Δɻ wΧʔωϧϞʔυͰ͸ɺॏཁͳ$16໋ྩΛ࣮ߦͰ͖ͯ͠·͏ͷͰɺ Ϣʔβ͕ීஈ͔Βͦ͏͍͏໋ྩΛݺͼग़ͤΔͱةݥɻ wͳͷͰɺϞʔυΛ෼͚ɺී௨ͷϓϩάϥϜ͕ةݥͳૢ࡞ΛͰ͖ͳ͍Α ͏ɺඞཁͳ෦෼ͷΈ04͕ΠϯλϑΣʔεΛ༻ҙ͍ͯ͠Δ ৄࡉ͸ʮΈ͔ΜຊʯลΓΛಡΉͱ͍͍Ͱ͢

  8. $16ͷϞʔυͱγεςϜίʔϧ ϓϩηε ϢʔβϞʔυ $16 ΧʔωϧϞʔυ ϢʔβϞʔυ γεςϜίʔϧ ॏཁͳ$16ػೳΛ࢖ͬͯ 04ͷ͓࢓ࣄΛ͢Δ ੍ޚΛ໭͢

    Χʔωϧͷ͓࢓ࣄͱɺϢʔβͷ͓࢓ࣄ͸෼͔Ε͍ͯΔɺ͙Β͍ͷཧղͰ͍ͬͨΜ0,
  9. ΞϓϦέʔγϣϯΛࢧ͑ΔϨΠϠΛ஌Δ wϢʔβϥϯυͷϓϩάϥϜ͸ɺڀۃతʹʮϢʔβϥϯυͰͷܭࢉʯͱ ʮγεςϜίʔϧͷݺͼग़͠ʯͷΈΛ͍ͯ͠Δͱߟ͑ΒΕΔ w΍Γ͍ͨ͜ͱΛ࣮ݱ͢Δ্Ͱॏཁͳɺ04ͷੈքͰͷ࢓ࣄΛ஌Ζ͏

  10. ໾ʹཱͭͷʁ

  11. ʮ௿ϨΠϠʯͷΞϓϩʔνΛͯ͠ΈΑ͏ w௿ϨΠϠʮछͷਆثʯ wͦͷதͰ΋ɺstrace(1)ͱperf(1)ͷ࢖͍ํΛσϞ͠·͢ wʢ໰୊ࣗମ͸ਓ޻తͳγνϡΤʔγϣϯͰ͢ʣ strace(1) gdb(1) perf(1) valgrind(1)

  12. TUSBDF

  13. strace(1) wର৅ͷϓϩάϥϜ͕ൃߦ͢Δ γεςϜίʔϧΛ؂ࢹ͠ɺ Կ͕Ͳ͏ݺͼग़͞Ε͔ͨ දࣔ͢Δπʔϧ w ΦϓγϣϯʹΑΓɺݺͼग़͠ͷ౷ܭ΋දࣔͰ͖Δʢࠓճ͸ෆ࢖༻ʣ ͍͕ͭ͜ϚείοτΩϟϥʁ

  14. ໰୊ wҎԼͷΑ͏ͳ4JOBUSBͷΞϓϦέʔγϣϯΛ্ཱͪ͛ͨɻ

  15. ໰୊ ଓ͖ w͜ͷΞϓϦέʔγϣϯΛಈ͔͍ͯ͠Δ؀ڥͰ͸ɺ wlocalhost:4567͸ΞΫηεͰ͖Δ w127.0.0.1:4567͸ΞΫηεͰ͖ͳ͍ w͜Ε͸Ͳ͏ͯ͠ʁ ·͋ɺ͙͢צ͖ͮͦ͏ͳ໰୊Ͱ͕͢

  16. TUSBDFͰோΊͯΈΑ͏ •strace -e network ${command}

  17. TUSBDFͰோΊͯΈΑ͏ •strace -e network ${command} ໌Β͔ʹෆࣗવͳCJOE  ͷൃߦ͕͋Δ "'@*/&5 

  18. DVSMͷଆ͸ wMPDBMIPTU͸*1Wɺ͸ʢ౰વʣ*1WͰͭͳ͗ʹߦ͘

  19. ղܾฤ wMPDBMIPTUͷղܾ͕ม͔΋ɻؔ܎ͦ͠͏ͳϑΝΠϧ͸FUDIPTUT ⁉ ⁉ ⁉ ⁉  ୭ͩΑ͜ΜͳઃఆೖΕͨ΍ͭ

  20. IPTUTΛ໭͢ͱͪΌΜͱ͜͏ͳΔɻ

  21. QFSG

  22. perf(1) w-JOVYͷͨΊͷߴػೳύϑΥʔϚϯε෼ੳπʔϧɻ w$16ͷΧ΢ϯλ౷ܭ৘ใɺ ֤ؔ਺ͷΦʔόϔουɺ ͳͲͳͲΛूܭදࣔ

  23. ໰୊ w࣍ͷ3BJMTΞϓϦέʔγϣϯͷIFMMPJOEFYͷΞΫηε͕ົʹ஗͍ɻ ιʔείʔυΛݟͳ͍ͰݪҼΛਪଌ͠Α͏

  24. ݱࡏͷύϑΥʔϚϯε w͜Ε͸͔֬ʹ

  25. QFSGͰ෼ੳ͠Α͏ 7.ͷผͷλʔϛφϧͰ QFSGSFDPSEΛΞλον ҰԠ ϕϯνϚʔΫ͸ ผͷϗετ ࠓճ͸ϗετϚγϯ ͚ͩͲ ͔Β૸ΒͤΔ

  26. ݁Ռ

  27. ݁Ռͷߟ࡯ ($͕๫ΕͯΔײ ($͕๫ΕͯΔͷͰɺ ڊେͳΦϒδΣΫτΛ ܁Γฦ͠࡞ͬͯ͸ࣺ͍ͯͯΔʁ ͔΋͙Β͍͸૝૾Ͱ͖Δ

  28. ݁Ռͷߟ࡯ +40/ KTPOHFN ͷ ؔ਺͕ΘΓͱ্Ґʹ͍Δ ͔͠΋HFOFSBUFͰ͸ͳ͘ QBSTFͷํͳͷͰɺ ڊେͳઃఆ+40/Λύʔε ͯ͠Δͱ͔ʁ

  29. ࢀߟίʔϧάϥϑ w໊લ͕ղܾͰ͖ͳ͍ؔ਺্͕ʹ͍Δ͚ͲɺࣅͨΑ͏ͳ෼ੳʹͳΓͦ͏

  30. ղܾฤ wϦΫΤετຖʹڊେ+40/ઃఆΛύʔε͠ɺίϯτϩʔϥͷΠϯελ ϯεม਺ʹΞαΠϯ͍ͯͨ͠ɻ

  31. ίʔυमਖ਼ޙͷύϑΥʔϚϯε wҰԠΫϥεม਺ʹΩϟογϡ͢ΔΑ͏ʹͨ͠Β͜͏͍͏ײ͡

  32. ίʔυमਖ਼ޙͷQFSG wʢҰճΞΫηε͔ͯ͠Βͷܭଌʣ

  33. ͜͜·Ͱͷ·ͱΊ wγεςϜͷ஌͕ࣝ͋Δ͜ͱͷϝϦοτͷҰͭͱͯ͠ɺ γεςϜͷσόοάπʔϧ͕࢖͑ΔΑ͏ʹͳΔ͜ͱ͕ڍ͛ΒΕͦ͏ɻ wݴޠ΍ϛυϧ΢ΣΞΛ໰Θͳ͍ීวతͳ΍ΓํͰσόοά΍ύϑΥʔ ϚϯεվળΛ࣮ࢪͰ͖Δɻ·ͨɺ೉͍͠໰୊Λݟ͚ͭΒΕΔɻ w֤ݴޠݻ༗ͷσόοΨʔʢ3VCZͳΒQSZ CZFCVH TUBDLQSPGʣΛ ࢖͏ͱ͖ʹ΋ɺγεςϜͷ஌͕ࣝ͋Δํ͕ղ૾౓ߴ͘࢖͑Δ͸ͣ

  34. γεςϜΛֶͿ

  35. γεςϜͷ͜ͱΛֶͿۙಓ wલड़ͨ͠Α͏ͳπʔϧ͸ɺγεςϜͷ஌͕ࣝ͋Δఔ౓ͳ͍ͱ࢖͍͜ͳ ͤͳ͍ɻͦͷ஌ࣝ͸Ͳ͏͚ͭΔʁ wࢲͨͪ͸ϓϩάϥϚͳͷͰɺγεςϜʹؔ͢ΔϓϩάϥϛϯάΛ͢Δ ͱɺର৅υϝΠϯʹ͍ͭͯͷཧղ͕ਂ·ΔͷͰ͸ʁ ˠγεςϜϓϩάϥϛϯάΛ࢝ΊΑ͏ʂ

  36. γεςϜϓϩάϥϛϯάͷͨΊͷಓ۩ w$ݴޠʁ

  37. લఏ$ݴޠͷ஌ࣝ͸໾ʹཱͭ wγεςϜͷ͜ͱΛ஌Δʹ͸ઌड़ͨ͠04ͷΠϯλϑΣʔεͰ͋Δ γεςϜίʔϧΛཧղ͢Δͱ͜Ζ͔Β࢝ΊΔͷ͕ྑ͍ʢࢲݟʣ wγεςϜίʔϧΛͲ͏ݺͼग़͔͢͸ɺ$ݴޠͷؔ਺ͷఆٛͰཧղ͢Δ ͷ͕Ұ൪खͬऔΓૣ͘ɺௐ΂΍͍͢ɻ w࢖ͬͯΈΔͷ΋$ݴޠ͕Ұ൪ૣ͍ɻ

  38. ':*$ݴޠΛ֮͑Δࡍͷίπ w࣍ͷΑ͏ͳ؍఺Ͱ֮͑Δͱ͍͍͔΋ wجຊจ๏ wϙΠϯλͷجૅ wΦϒδΣΫτ͕ϝϞϦͷͲ͜ʹ഑ஔ͞ΕΔ͔ ώʔϓελοΫ  wMJCDΛ͸͡Ίͱͨ͠جຊతͳϥΠϒϥϦͷ஌ࣝ wίϯύΠϧ΍ϦϯΫͷखॱɺ࡞๏

  39. ͦΕͰ΋$ݴޠ͸೉͍͠ w$ݴޠͰϝϞϦͷҙ͕ࣝߴ·Δͷ͸͍͍͕ɺਓྨ͕ਖ਼͘͠ϝϞϦΛѻ ͏ͷ͸೉͍͠ɻ w$8&5PQ ·ͩ·ͩෆద੾ͳ ϝϞϦͷѻ͍ʹؔ͢Δ ੬ऑੑ͕ଟ͍ IUUQTOFXTNZOBWJKQBSUJDMF

  40. $ݴޠͷ೉͠͞ wϝϞϦʹؔ͢ΔόάΛճආ͢Δͷ͕ͱʹ͔͘೉͍͠ wϝϞϦϦʔΫɺμϯάϦϯάϙΠϯλɺ0P# wจࣈྻ΍ɺ഑ྻɾϚοϓͳͲجຊతͳσʔλߏ଄Λѻ͏ͷ΋໘౗ wγεςϜίʔϧΛ୯ҰͰݺͿͷ͸͍͍͕ɺ࣮ࡍʹ͸ෳ਺ͷγεςϜ ίʔϧͰσʔλΛ΍ΓऔΓ͢Δͷ͕ී௨ɻ wશͯͷσʔλՃ޻Λ$ݴޠͰ΍Δͷ͸େม

  41. ͦ͜Ͱ

  42. ɹɹɹɹͬͯʁ w૊ΈࠐΈͷͨΊͷ3VCZ࣮૷ɻ wҰ෦ͷϥΠϒϥϦͷΈΛؚΉόΠφϦΛ࡞੒Ͱ͖ͨΓ͢Δ w$ݴޠͱͷӡ༻ੑͷྑ͔͞Βɺϛυϧ΢ΣΞ΍αʔό΁ͷ૊ΈࠐΈ༻ ్ʹ΋׆༻Ͱ͖Δ wγεςϜϓϩάϥϛϯάͱͯ͠͸ͬͪ͜ͷಛ௃͕ੜ͖Δ

  43. NSVCZͱ.3* w͋͘·Ͱ΋ผͷ࣮૷ɺ໨తͷҟͳΔݴޠ͕ͩɺֶश͠΍͍͢Α͏ʹ ֩ͱͳΔ࢓༷ʢ*403VCZ૬౰ʣ͸ڞ௨ɻ࠷৽ͷػೳ΋ॱ࣍ϙʔτ ͞Ε͍ͯΔɻ ʮ8FCͰ࢖͑ΔNSVCZγεςϜϓϩάϥϛϯάೖ໳ʯQ

  44. NSVCZͷڧΈ wจࣈྻૢ࡞ɺجຊతͳσʔλߏ଄͸3VCZʹ೚ͤΒΕΔ wϝϞϦ͸ͦΕͰ΋·ͩ೉͍͕͠ɺ($ͱɺϝϞϦ্ͷΦϒδΣΫτͷ ͷ֬อղ์Λ($ʹ৐ͤΔ࢓૊Έ͕༻ҙ͞Ε͍ͯΔ w͓࡞๏ʹैͬͯ֬อղ์͢Ε͹ɺϝϞϦϦʔΫͷ৺഑͕ݮΔ w$"1*͕.3*ΑΓ੔ཧ͞Εɺ$ͷੈքͱ3VCZͷੈքͷߦ͖དྷָ͕ʹ ͳ͍ͬͯΔɻ

  45. ':*3VCZͰ΋$CJOEJOHॻ͚Δ͚Ͳ wͱ͍͏ΑΓɺͦ΋ͦ΋3VCZ΋ɺ6/*9ͰͷγεςϜίʔϧΛ͸͡Ίͱ ֤ͨ͠छػೳΛखܰʹ࢖͏ͨΊʹ։ൃ͞Εͨʢཁग़య ʣ wͨͩɺࠓͷ3VCZͰͷ$CJOEJOH͸͔ͳΓಛघͳ৔໘Λ૝ఆ wNSVCZ͸ɺ$ݴޠͱͷ࿈ܞੑΛୈҰʹߟ͍͑ͯΔͷͰएׯॻ͖΍͘͢ ͳ͍ͬͯΔʢ͜Ε΋ࢲݟͰ͕͢ʣɻ

  46. ॻ͍ͯΈ·͠ΐ͏

  47. ؆୯ͳྫ wϗετ໊΍ɺϚγϯͷ৘ใΛऔಘ͢Δuname(1)ίϚϯυ w͜ͷ಺෦Ͱ࢖ΘΕ͍ͯΔγεςϜίʔϧΛ෼ੳ͠ɺಉ݁͡ՌΛग़͢ί ϚϯυΛ࡞ͬͯΈΔ

  48. NSVCZͷϓϩδΣΫτΛͭ͘Δ wNSCHFNNSVCZʹ͓͚ΔHFNͷϓϩδΣΫτΛ࡞ͬͯΈΔ wNSCHFNUFNQMBUFίϚϯυͰੜ੒ɻҎԼ͸-JOVYͰ $ apt install gperf bison build-essential $

    brew tap mrbgems/mrbgem-template # using linuxbrew $ brew install mrbgem-template $ mrbgem-template -B myuname -m 3.0.0 mruby-myuname
  49. ϓϩδΣΫτ͕Ͱ͖ͨ

  50. VOBNF  ͸ԿΛ͍ͯ͠Δʁ wTUSBDFͰ௥͍͔͚ͯΈΔ wVOBNF  ͱ͍͏ରԠ͢ΔγεςϜίʔϧΛݺΜͰ͍Δ 

  51. VOBNF  ͷ࢖͍ํ wNBOίϚϯυͰ֬ೝͰ͖Δʢ͠ɺݕࡧͯ͠΋0,ʣ wηΫγϣϯ

  52. $ͷίʔυΛฤू wࣗಈੜ੒͞Εͨ$ϑΝΠϧΛฤूɺVOBNF  Λ࢖͏ؔ਺Λॻ͘ ໭Γ஋ɺҾ਺ͷܕʹ஫໨

  53. ϝιουʹ͢Δ wࣗಈੜ੒͞ΕͨॳظԽ༻ؔ਺಺෦ʹهड़ɻ$3VCZʹࣅͯΔ

  54. Ϗϧυͯ֬͠ೝ wNJSCͱ͍͏ɺJSCతͳ΋ͷ͕͋Δ wͳͷͰNSVCZͷϝιουʹͰ͖Ε͹͋ͱ͸͍ͭ΋ͷ3VCZ ϗετ໊ΛऔಘͰ͖ͨʂ

  55. ͜ͷޙ͸ wNBOͷఆٛΛݟͯਅ໘໨ʹϝϯό͝ͱʹϝιουΛ࡞Γɺ දࣔ͢Δ͚ͩ wͳ͓ɺNSVCZͰίϚϯυϥΠϯπʔϧ΋࡞Ε·͢ wϫϯόΠφϦͰ͢ʢελςΟοΫϦϯΫ·Ͱ͸ͪΐͬͱΉ͍ͣʣ wৄࡉ͸NSVCZͳΜͪΌΒೖ໳ͱ͍͏ຊʹɻ

  56. ͞ΒͳΔ NSVCZγεϓϩͷੈք

  57. 3BJMTΛηΩϡΞʹ͢Δ w੬ऑੑ͕͋Δ3BJMTΞϓϦέʔγϣϯ͕͋Δɺͱ͢Δɻ wྫ͑͹ wNLOPE  γεςϜίʔϧΛNLOPE  ܦ༝Ͱൃߦ͞ΕΔͱ͢Δ wNLOPE 

    σόΠεϑΝΠϧΛ࡞੒͢Δ wFH/dev/zero, /dev/null, /dev/urandom
  58. 3$& ͷྫ wQJOHͷ݁ՌΛग़ྗ͢Δ ͸͕ͣɻ 3$&3FNPUF$PEF&YFDVUJPO ԕִૢ࡞ FH8FCΞΫηε Ͱࣗ༝ʹίϚϯυΛൃߦͤ͞ΒΕΔ੬ऑੑͷҰൠతͳݺশ

  59. NLOPEͰ߈ܸͰ͖ͦ͏ͳྫ wྫઃఆϑΝΠϧͳͲΛىಈ࣌ͳͲͰಡΈࠐΜͰ͍ΔΑ͏ͳ৔߹ wͦͷઃఆϑΝΠϧΛNLOPEʹΑΓɺແݶʹσʔλΛऔΓग़ͤΔ ΩϟϥΫλσόΠε FH/dev/urandom ʹมߋ͞ΕΔͱɺಡΈࠐ Έ͕ऴΘΒͣʹ%P4߈ܸ͕੒ཱ͢Δɻ wNLOPE  γεςϜίʔϧΛࣗ༝ʹൃߦͰ͖Δͱةݥ

  60. Ծʹ੬ऑੑ͕͋ͬͨͱͯ͠΋ w3$&ͷΑ͏ͳಛڃͷ੬ऑੑ͕͋ͬͨ৔߹Ͱ΋ɺ ࠷ޙͷࡆͱͯ͠ةݥͳγεςϜίʔϧͷ࣮ߦΛ๷͙࢓૊Έ͸ͳ͍͔ʁ wˠҰͭͷҊͱͯ͠ɺTFDDPNQΛར༻͢Δ

  61. TFDDPNQͱ͸ wγεςϜίʔϧݺͼग़͠ΛϑΟϧλϦϯά͢Δ࢓૊Έ wྫ͑͹ɺಛఆͷγεςϜίʔϧͷΈڐՄ BMMPXMJTU ɺ ٯʹېࢭ EFOZMJTU ɺͱ͍ͬͨઃఆΛద༻Ͱ͖Δ w˞࣮͸%PDLFSͳͲɺҰൠʹ࢖ΘΕΔίϯςφٕज़Ͱ͸಺෦Ͱطʹ ར༻͞Ε͍ͯΔͷͰɺࠓճ͸7.্ͷ͍ͪϓϩηε΁ͷద༻ྫɻ

  62. NSVCZTFDDPNQ wNSVCZ͔ΒTFDDPNQ  γεςϜίʔϧʢਖ਼֬ʹ͸MJCTFDDPNQΛ ܦ༝ͯ͠ʣʹΞΫηε͢ΔͨΊͷNSCHFN w!VE[VSB͕ੲίϯςφΛࣗ࡞͢Δͱ͖ʹҰॹʹ࡞ͬͨ IUUQTHJUIVCDPNIBDPOJXBNSVCZTFDDPNQ

  63. NSVCZTFDDPNQ w͜͏͍͏%4-ͰϑΟϧλϦϯάઃఆ͕Ͱ͖Δʂ

  64. ىಈ༻ͷNSVCZεΫϦϓτΛॻ͘ wTFDDPNQͷίϯςΫετΛϩʔυ͢ΔˠSBJMTʹFYFDWF  ͢Δ wNSVCZTFDDPNQΛ૊ΈࠐΜͩNSVCZόΠφϦΛ༻ҙ͠ɺ ΞϓϦέʔγϣϯىಈ࣌ʹɺ͜ͷεΫϦϓτΛ౉͢

  65. ࣮ࡍʹ߈ܸͯ͠ΈΔ wNLOPE  ͷݺͼग़͠ΛΤϥʔʹͰ͖ͨʂ 3BJMTͷϩάʹ͜Ε͕ग़ྗ͞ΕΔɻ

  66. ิ଍આ໌ w΋ͪΖΜଞʹ΋ةݥͳγεςϜίʔϧ͸͋ΔͷͰɺBMMPXMJTUϕʔεͰ ϦετΛӡ༻͢Δͷ͕ཧ૝ɻͦΕ͸݁ߏେมɻ w͋ͱͦ΋ͦ΋ɺSPPUͰಈ͔ͪ͠Όμϝʢ͚ͩͲɺಛݖঢ͕֨Ͱ͖ Δ߈ܸͩͬͯ͋Γ͏ΔͷͰʣ

  67. NSVCZΛγεϓϩͰ࢖͏ྑ͞ w͜͜·ͰΛɺৼΓฦΔͱ wγεςϜίʔϧͷݺͼग़͠ن໿͸ϞϊʹΑͬͯ͸೉͍͕͠ɺ%4-Λ ࡞੒ͯ͠ϥοϓ͠ɺӡ༻Λ͠΍͘͢Ͱ͖Δ఺ wϫϯόΠφϦͷίϚϯυʹݻΊΒΕΔ఺ ʢݱࡏͷ$3VCZͰ͸΍΍೉͍͠ʣ wϫϯόΠφϦͷπʔϧʹɺ͞Βʹ֎෦ͷઃఆ%4-ΛಡΈࠐ·ͤΔɺ ͱ͍͏࢖͍ํ΋ՄೳɻDGNPE@NSVCZOHY@NSVCZ

  68. ଟ෼͕࣌ؒͳͯ͘ݴ͑ͳ͍τϐοΫ

  69. NSVCZͷιϑτ΢ΣΞ૊ΈࠐΈ wNSVCZͷԠ༻ྫͱͯ͠ɺιϑτ΢ΣΞʹ૊ΈࠐΉྫΛ঺հ͠·͢ wNSVCZ͕૊Έࠐ·Εͨϛυϧͷ୅ද wNPE@NSVCZ"QBDIF)5514FSWFS NSVCZ wOHY@NSVCZOHJOY NSVCZ wIPIUUQରԠͷߴ଎8FCαʔόͷઃఆΛNSVCZͰॻ͚Δ

  70. ιϑτ΢ΣΞʹ૊ΈࠐΉͱ͸ w͍Ζ͍Ζͳϛυϧ΢ΣΞʹ͸ɺ$ݴޠʹΑΓϓϥάΠϯ΍֦ுػೳΛ ॻͨ͘ΊͷΠϯλϑΣʔε͕͋Δ wͦͷ$ݴޠͷΠϯλϑΣʔεʹର͠ɺNSVCZͰCJOEJOHΛॻ͚͹ɺ NSVCZͷεΫϦϓτ͔Βͦͷϛυϧ΢ΣΞΛ੍ޚͰ͖Δ wγεςϜϓϩάϥϛϯά΋ɺ ͋Δҙຯ04ʹର͠NSVCZΛ ૊ΈࠐΜͰ͍Δɺͱݴ͑Δ

  71. ·ͱΊ

  72. NSVCZͰ੾ΓࠐΜͰ͍͘ੈք wࠓ·Ͱ$ݴޠͷ੎ྗ͕ڧ͔ͬͨൣғͰ΋ɺ3VCZΛ׆༻Ͱ͖ΔΑ͏ʹ wγεςϜϓϩάϥϛϯά wϛυϧ΢ΣΞͷ֦ு wকདྷ͸ɺ-JOVYΧʔωϧͷ֦ுͳΜ͔΋

  73. 3VCZΛ࢖͑Δൣғͷ޿͕Γ w3BJMTͷΑ͏ͳ8FCͷੈք͔Βɺ Πϯϑϥʹ͓͚ΔϓϩάϥϛϯάͷੈքͰ΋ ׆༻Ͱ͖ΔΑ͏ʹͳΔͷͰ͸

  74. γεςϜϓϩάϥϛϯά͸໘ന͍ wʮී௨ͷ΍ͭΒͷԼΛߦ͚ʯ IUUQYDDOFUCMPHBSDIJWFTIUNMɹ

  75. ʮ#JOBSZ)BDLTʯॻධCZͩ͞͞͞Μ wόΠφϦΞϯ͕ܦݧ͍ͯ͠ΔͰ͋Ζ͏௿Ϩϕϧϓϩάϥϛϯά͕࣋ ͭʮυΩυΩײʯ͸ɺॻ੶ͰֶͿ΋ͷͰ΋ͳ͍ͷ͔΋͠Ε·ͤΜͷ ͰɺͦͷΑ͏ͳॻ੶͸͋Γ͑ͳ͍ͷ͔΋͠Ε·ͤΜɻͨͩɺຊॻΛಡ ΜͰɺͳΜ͔ͩΑ͘Θ͔Βͳ͍͚ͲʮυΩυΩײʯΛײ͡Δͱ͍͏ਓ ͸ɺ͢ͰʹόΠφϦΞϯͳͷ͔΋͠Ε·ͤΜɻ ʮ3VCZJTU.BHB[JOFʯ߸ॻ੶঺հʰ#JOBSZ)BDLTʱ IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT#PPL#JOBSZ)BDLTIUNM

  76. ௿ϨΠϠͰ΋ 3VCZΛܾΊ·͠ΐ͏

  77. <13> wNSVCZۀք།ҰॻళͰฒͿ঎ۀॻ੶Ͱ͸ɺγεϓϩͷҎԼͷΑ͏ͳτ ϐοΫΛهड़͍ͯ͠·͢ w$ϥΠϒϥϦͷ࢖͍ํ w"QBDIF֦ு αʔό૊ࠐ ͷॻ͖ํ w$ͷηΩϡϦςΟ όοϑΝΦʔόʔϥϯ 

    w֤छσόοάπʔϧ छͷਆث ͷղઆ ࣮ྫʴ෇࿥Ͱ݁ߏஸೡʹ΍ͬͯ·͢