$30 off During Our Annual Pro Sale. View Details »

Middleware Configuration as Code

Middleware Configuration as Code

connect infra engineers with app engineers

MATSUMOTO Ryosuke
PRO

August 08, 2015
Tweet

More Decks by MATSUMOTO Ryosuke

Other Decks in Technology

Transcript

  1. DPOOFDUJOGSBFOHJOFFSTXJUIBQQFOHJOFFST GMO Pepabo, Inc. ٕज़ج൫νʔϜ ΞυόϯευγχΞ MATSUMOTO, Ryosuke @matsumotory 2015/08/08

    ୈ68ճ Rubyؔ੢ ษڧձ .JEEMFXBSF $POpHVSBUJPOBT$PEF
  2. ࣗݾ঺հ  দຊ྄հ!NBUTVNPUPSZ  ٕज़ج൫νʔϜΞυόϯευγχΞ  ෱Ԭࢧࣾ೥݄ೖࣾ  ओʹձࣾશମͷΠϯλʔωοτج൫ٕज़Λ୲౰ 

    044׆ಈ΍ࣾ֎޲͚ͷٕज़ൃදͳͲ  IUUQSFTFBSDINBUTVNPUPSKQ 
  3. ϖύϘͷݚڀɾ։ൃ୲౰ IUUQICNBUTVNPUPSKQFOUSZ

  4. None
  5. ࠷ۙऔΓ૊ΜͰ͍Δ044։ൃ  NPE@NSVCZ  OHY@NSVCZ  IP@NSVCZ  5SVTUFSE)5518FC4FSWFS 

    NSVCZɾNSVCZͷNSCHFNଟ਺
  6. ໨࣍  എܠ  ఆٛ  ࣮૷ʹ͍ͭͯ  ؆୯ͳνϡʔτϦΞϧ 

    ࣄྫ঺հ 
  7. എܠ

  8. ϛυϧ΢ΣΞͷߏ੒ͷมԽ ˞ ྫ͑͹8FCαʔό  $(*͸GPSL ͷίετʹΑΓ஗͍  ΠϯλϓϦλΛαʔόʹ૊ΈࠐΉ  ίϯςϯπͱ8FCαʔό͕ີ݁߹

     ΞϓϦέʔγϣϯαʔόͱϓϩΩγͷ෼཭  ͍͔ʹ֤ػೳΛޮ཰ྑ͘࿈ܞͤ͞Δ͔ ˞NSVCZͱ͜Ε͔Βͷ8FCαʔόٕज़ IUUQTTQFBLFSEFDLDPNNBUTVNPUP@S NSVCZUPLPSFLBSBGBMTFXFCTBCBKJTIV 3VCZ౦ژϓϨθϯςʔγϣϯςΫχΧϧτʔΫ 'FC 
  9. $ݴޠʹΑΔϛυϧ΢ΣΞͷ֦ு  ϛυϧ΢ΣΞΛΑΓߴ౓ʹ֦ு͍ͨ͠  ओઓ৔͕--ͷ8FCΤϯδχΞʹ͸೉͍͠  $ݴޠʹΑΔੜ࢈ੑɾอकੑͷ՝୊  ؆୯ͳॲཧΛ؆୯ʹॻ͖͍ͨ 

    $ݴޠΛॻ͖ͨ͘ͳ͍  ϛυϧ΢ΣΞͷৄࡉ࢓༷Λ஌Δ͜ͱͳ͘ॻ͖͍ͨ 
  10. ݹ͔͘Β͋Δ8FCαʔόͷ֦ு  NPE@QFSMɺNPE@SVCZͳͲ  $(*Ϟσϧͷվળ  8FCαʔόͷ಺෦֦ு΋Մೳ˞   ੑೳ໘ɾϝϞϦ໘Ͱͷ՝୊

     ˞!YUFUTVKJ lϞμϯNPE@QFSMೖ໳z IUUQXXXTMJEFTIBSFOFUYUFUTVKJ NPEFSONPEQFSMHVJEFZBQDBTJB :"1$"TJB5PLZP 4FQ
  11. ಺෦֦ுΛ໨తʹ࠷దԽ  ΋ͬͱߴ଎ʹɾ΋ͬͱܰྔʹ  8FCΤϯδχΞʹ਎ۙͳݴޠͰ  ΠϯϑϥɾΞϓϦΛͭͳ͙  ϨΠϠʔͷҧ͏ΤϯδχΞΛͭͳ͙ 

    ΋ͬͱ࢖͍΍͘͢ 
  12. .JEEMFXBSF $POpHVSBUJPOBT$PEF

  13. XJUINSVCZ

  14. ఆٛ

  15. .JEEMFXBSF $POpHVSBUJPOBT$PEF

  16. ༷ʑͳݴޠͰ࣮૷͞Εͨϛυϧ΢ΣΞʹର͠ɺϛ υϧ΢ΣΞͷಈ࡞Λ੍ޚ͢Δ"1*΍σʔλߏ଄Λɺ ૊ࠐΈεΫϦϓτݴޠʹΑͬͯૢ࡞Ͱ͖ΔΑ͏ʹ ͠ɺϢʔβ͸εΫϦϓτݴޠΛ௨ͯ͡ϛυϧ΢Σ ΞͷৼΔ෣͍Λઃఆɾ੍ޚՄೳͱͳΔ

  17. .JEEMFXBSF$POpHVSBUJPOBT$PEF  ߴੑೳͳϛυϧ΢ΣΞͷઃఆΛίʔυԽ  ίʔυ෦෼ͷΦʔόʔϔου͕গͳ͍  ίʔυԽʹΑΓ౰વςετ΋Մೳ  ίʔυͷϥΠϒϥϦͱͯ͠ػೳ֦ு΋༰қ 

    γεςϜͷૄ݁߹ͳίϯϙʔωϯτΛॊೈ ʹ࿈ܞՄೳ 
  18. ಋೖ·Ͱͷϓϩηε΍ςετ  ৄࡉͳߟ͑ํ͸ࠓճ͸লུ  ͱ͍͏ͷ΋ʜ 

  19. ฐࣾ!ITCUͷ׆ಈʹ஫໨ !ITCU l.JEEMFXBSFBT$PEFXJUINSVCZz IUUQXXXTMJEFTIBSFOFUITCUNJEEMFXBSFBTDPEFXJUI NSVCZ 3FE%PU3VCZ$POG  +VOF %FUBJMTPGNSVCZVTBHFJOQSPEVDUJPO 

  20. Ҏ߱ͷ಺༰  ࣮૷ʹ͍ͭͯ  ؆୯ͳνϡʔτϦΞϧ  ฐࣾͰͷࣄྫ঺հ 

  21. ࣮૷ʹ͍ͭͯ

  22. 044Խ͞Ε࣮ͨ૷ྫ  NPE@NSVCZ NPE@MVB  OHY@NSVCZ MVBOHJOYNPEVMF  IP@NSVCZ 

    5SVTUFSE)5518FC4FSWFS  NSVCZJQWT WJSUVBMJOH  UT@NSVCZGPS"QBDIF5SB⒏D4FSWFS  MJCWNPE@NSVCZGPS7BSOJTI$BDIF  NZTRMNSVCZ )PMZDPSOGPS%BUB4UPSF 
  23. 044Խ͞Ε࣮ͨ૷ྫ  NPE@NSVCZ NPE@MVB  OHY@NSVCZ MVBOHJOYNPEVMF  IP@NSVCZ 

    5SVTUFSE)5518FC4FSWFS  NSVCZJQWT WJSUVBMJOH  UT@NSVCZGPS"QBDIF5SB⒏D4FSWFS  MJCWNPE@NSVCZGPS7BSOJTI$BDIF  NZTRMNSVCZ )PMZDPSOGPS%BUB4UPSF 
  24. جຊతͳ࣮૷ϙϦγʔ ˞Ҏ߱NSVCZʹΑΔ࣮૷લఏͰ͢  εϨου୯ҐͰ7.ΛϚοϐϯά  ϛυϧ΢ΣΞىಈ࣌ʹ7.ϚοϐϯάͱίϯύΠϧ  ϛυϧ΢ΣΞͷσʔλߏ଄ΛϝιουʹϚοϐϯά  ϛυϧ΢ΣΞͷ"1*ΛϝιουʹϚοϐϯά

     ϛυϧ΢ΣΞͷఆ਺ΛϚοϐϯά  ༻్ຖʹΫϥεͰ෼཭  ֦ு͸ݴޠͷϥΠϒϥϦΛར༻ 
  25. ࣮૷໘ͰؾΛ͚͍ͭͯΔࣄ  ϋΠύϑΥʔϚϯε  ΦʔόʔϔουʹͳΓʹ͍͘  ϝϞϦ͕୯ௐ૿Ճ͠ͳ͍Α͏ʹ͢Δ  ֶशίετΛݮΒ͢ 

    γϯϓϧͳΫϥεͱϝιου  ػೳ֦ு͸Ͱ͖Δ͚ͩNSCHFN˞ ˞$3VCZͷHFNʹ͋ͨΔNSVCZͷϞδϡʔϧ 
  26. ϋΠύϑΥʔϚϯε  NSVCZΛ࠾༻ͯ͠ੑೳ໘Ͱ࠷దԽ  εϨου୯ҐͰ7.୯ҐͰ࣋ͯΔ  +*4ن֨ʹ४ڌͨ͠࢓༷ʹΑΓܰྔ  ࣄલʹόΠτίʔυʹ͓ͯ͘͠ͱߴ଎ 

    3VCZίʔυͷෳ਺ճ࣮ߦͰ͸ܰྔͳΠϯλϓ Ϧλ͕଎౓ʹ΋ޮ͍ͯ͘Δ  ৄ͘͠͸࿦จ˞ ˞দຊ྄հɾԬ෦णஉ NPE@NSVCZɿεΫϦϓτݴޠͰߴ଎͔ͭলϝϞϦʹ֦ுՄೳͳ8FCαʔόͷػೳ֦ ுࢧԉػߏ ৘ใॲཧֶձ࿦จࢽ 7PM /P QQ ೥݄
  27. ੈքதͷ8FCϑϨʔϜϫʔΫͷ଎౓Λڝ͏ίϯςετ $ɺ$ ɺ+BWBɺ(P౳ͷதɺ3VCZͰؤு͍ͬͯΔ Ґ SFGIUUQTXXXUFDIFNQPXFSDPNCFODINBSLT

  28. SFGIUUQTXXXUFDIFNQPXFSDPNCFODINBSLT ݴޠΛ3VCZʹݶఆͨ݁͠Ռ ѹ౗తҐ

  29. ֶशίετΛݮΒ͢  ҟͳΔϛυϧ΢ΣΞͰ΋Ϋϥε΍ϝ ιου໊Λಉ͡ʹ͓ͯ͘͠  NSCHFNͰॻ͚Δॴ͸ॻ͘ࣄͰҟͳ Δϛυϧ΢ΣΞͰ΋ར༻Մೳ  ͲΕ͔Ұֶͭश͢Ε͹ଞͷϛυϧ΢Σ Ξͷ֦ு΋େମཧղͰ͖Δ

  30. ϛυϧ΢ΣΞͷΫϥεΛऔಘ 6TFSEBUBΫϥε͸NSCHFN

  31. ؆୯ͳνϡʔτϦΞϧ

  32. OHY@NSVCZΛΧδϡΞϧʹࢼ͢  7BHSBOU؀ڥΛ༻ҙ͢Δ͚ͩ  7BHSBOU %PDLFSΛར༻  $PSF04Λ7BHSBOU؀ڥͰىಈ  $PSF04ͷதͰ%PDLFSΛىಈ

     OHY@NSVCZͷ%PDLFSΠϝʔδىಈ 
  33. OHY@NSVCZνϡʔτϦΞϧ  EPDLFS؀ڥ੔උ OHY@NSVCZͷ%PDLFSΠϝʔδΛऔಘ 

  34. OHY@NSVCZνϡʔτϦΞϧ  EPDLFSIPPLUFTUSCΛมߋͯ͠ڍಈΛ֬ೝ %PDLFSΛϏϧυ͠௚ͯ͠࠶࣮ߦ 

  35. OHY@NSVCZνϡʔτϦΞϧ  ৽͍͠MPDBUJPOઃఆͱΠϯϥΠϯίʔυΛ௥Ճͯ͠ڍಈ֬ೝ NSVCZBVUIʹରͯ͠Ҏ֎͔ΒͷΞΫηε͸  EPDLFSDPOGOHJOYDPOGΛมߋͯ͠ڍಈΛ֬ೝ

  36. ࣄྫ঺հ

  37. ฐࣾͷࣄྫ঺հ  %P4తΞΫηεͷࣗಈ੍ޚ  υϝΠϯผͷಈతϓϩΩγ  ෳࡶͳϝϯςφϯεը໘੾Γସ͑  ಈతը૾ม׵αʔόͷ63-Ճ޻ 

    *1ΞυϨε΍63*ͷΞΫηε੍ޚ 
  38. ฐࣾͷࣄྫ঺հ  %P4తΞΫηεͷࣗಈ੍ޚ  υϝΠϯผͷಈతϓϩΩγ  ෳࡶͳϝϯςφϯεը໘੾Γସ͑  ಈతը૾ม׵αʔόͷ63-Ճ޻ 

    *1ΞυϨε΍63*ͷΞΫηε੍ޚ 
  39. ୲౰!IBSBTPV JOGSBFOHJOFFS

  40. େྔΞΫηε %%P4 XFC αʔό ߈ܸऀ 

  41. େྔΞΫηεͷࣗಈ੍ޚ ˞  ϗετ୯ҐͰ੍ޚ  ϑΝΠϧ୯ҐͰ੍ޚ  ʙ୯Ґ͸ࣗ༝ʹܾΊΒΕΔ  େྔΞΫηεͱݕ஌ͨ͠Β೚ҙͷ੍ޚ

     ෳࡶͳ৚݅Ͱ΋؆୯ʹॻ͚ΔΑ͏ʹ ˞!IBSBTPV lؔ੢3VCZձٞʹొஃͤͯ͞΋Βͬͨ IUUQIBSBTPVHJUIVCJPؔ੢3VCZձ ٞʹొஃͤͯ͞΋Βͬͨ ؔ੢3VCZձٞ +VMZ 
  42. NPE@NSVCZͰ࣮૷  IUUQEPTEFUFDUPS  ೚ҙͷΞΫηεύλʔϯΛݕ஌  ݕ஌தʹ೚ҙͷॲཧΛ࣮ߦ  IUUQBDDFTTDPVOUFS 

    ೚ҙͷଐੑʢϑΝΠϧ໊ɾVJE౳ʣΛΧ΢ϯτ  Χ΢ϯτ͕ᮢ஋Λ௒͑ͨΒݕ஌  ݕ஌தʹ೚ҙͷॲཧΛ࣮ߦ
  43. ུ֓ਤ  IUUQEPTEFUFDUPSIUUQBDDFTTMJNJUUFS "QBDIF ਌ϓϩηε NSVCZ XPSLFS NSVCZ XPSLFS NSVCZ

    XPSLFS NSVCZ XPSLFS NSVCZ ڞ༗ϝϞϦ HMPCBMMPDL ᶄΧ΢ϯλ ΠϯΫˠॲཧˠσΫϦ MPDBMNFNDBDIF ,74 ᶃUSZ@MPDL ᶅVOMPDL 
  44. NPE@NSVCZͷઃఆ 

  45. EPT@EFUFDUPSSC ϗετʹରͯ͠ඵؒʹΞΫηε͋ͬͨΒ ඵ͔ؒϦΫΤετ਺෼%P4ݕ஌ঢ়ଶͱ͢Δ %P4ݕ஌ঢ়ଶͷؒ͸Λฦ͢ 

  46. BDDFTT@MJNJUUFS@TUBSUSC ΞΫηεϑΝΠϧ໊ͰΧ΢ϯλΛΠϯΫϦϝϯτ Χ΢ϯλ͕ᮢ஋Λ௒͍͑ͯͨΒΛฦ͢ 

  47. BDDFTT@MJNJUUFS@FOESC ΞΫηεϑΝΠϧ໊ͰΧ΢ϯλΛσΫϦϝϯτ 

  48. ฐࣾͷNSVCZࣄྫ঺հ  %P4తΞΫηεͷࣗಈ੍ޚ  ϗετϕʔεͷಈతϓϩΩγ  ෳࡶͳϝϯςφϯεը໘੾Γସ͑  ಈతը૾ม׵αʔόͷ63-Ճ޻ 

    *1ΞυϨε΍63*ͷΞΫηε੍ޚ 
  49. ୲౰!UTITU@ JOGSBFOHJOFFS

  50. ϗετϕʔεͷಈతϓϩΩγ  ϗετ͸όοΫΤϯυͷαʔόʹࣗ༝ ʹ഑ஔɾҠಈ  ϗετͷډ৔ॴ͸%#Ͱ؅ཧ  %#͔ΒಈతʹϦόʔεϓϩΩγ  Ͱ͖Δ͚ͩੑೳΛߴ͍ͨ͘͠

     "QBDIF Ϟδϡʔϧ͔ΒϦϓϨʔε 
  51. ऩ༰αʔό ऩ༰αʔό ϦόʔεϓϩΩγ %# OHY@NSVCZ MPDBMNFNDBDIF %# NSVCZ ϦόʔεϓϩΩγ UFYBNQMFKQ

    UFYBNQMFKQ UFYBNQMFKQ -# )PTUUFYBNQMFKQ ϨϓϦέʔγϣϯ %#ߋ৽͋Ε͹Ωϟογϡ࡟আ Ωϟογϡͳ͚Ε͹औಘͯ͠ΩϟογϡԽ όοΫΤϯυ৘ใऔಘ ϦόʔεϓϩΩγ ऩ༰αʔό ऩ༰αʔό
  52. ಈతʹબ୒ͨ͠όοΫΤϯυͱLFFQBMJWF͢Δ OHJOYىಈ࣌ʹ%#ɾΩϟογϡͱ઀ଓ OHJOYఀࢭ࣌ʹ%#઀ଓΛDMPTF 

  53. Ωϟογϡʹͳ͚Ε͹ϩʔΧϧ%#͔Βऔಘ όοΫΤϯυͷ৘ใΛऔಘ ಈతબ୒ͨ͠όοΫΤϯυͱLFFQBMJWFͰ઀ଓ 

  54. BQBDIFͱOHJOY NSVCZ ͷੑೳൺֱ SFRTFD      ૯ΞΫηε਺

              BQBDIF OHJOY NSVCZ ಉ࣌઀ଓ਺
  55. “ –ϖύϘ෱ԬΠϯϑϥνʔϜ αϒϚωʔδϟʔ @tshst_ࢯ l$ݴޠͰॻ͔Εͨ"QBDIFϞδϡʔϧΛؚΉϓϩΩγ αʔόΛOHJOYͰϦϓϨʔε͢ΔͷʹɺOHY@NSVCZΛ ࢖͏ͱ$ݴޠ͸΋ͪΖΜ3VCZ͢Βॻ͍ͨࣄͷͳ͍ࢲ͕ɺ ਺࣌ؒͰಉ౳ͷॲཧΛे਺ߦͰ࣮૷Ͱ͖·ͨ͠z 

  56. ฐࣾͷࣄྫ঺հ  %P4తΞΫηεͷࣗಈ੍ޚ  υϝΠϯผͷಈతϓϩΩγ  ෳࡶͳϝϯςφϯεը໘੾Γସ͑  ಈతը૾ม׵αʔόͷ63-Ճ޻ 

    *1ΞυϨε΍63*ͷΞΫηε੍ޚ 
  57. ୲౰!MBNBOPUSBNB JOGSBFOHJOFFS

  58. ϝϯςφϯεը໘੾Γସ͑ ˞  WBSUNQNBJOU͕ଘࡏͨ͠Βϝϯς φϯεը໘  WBSUNQNBJOU@JHOPSF@P⒏DF͕ଘ ࡏͯ͠ɺ׌ͭΞΫηεݩ͕ Ͱ͋Ε͹ɺͦ͜͸௨ৗ௨ΓϨεϙϯε 

    OHJOYDPOGʹͦͷ··ίʔυΛهड़ ˞!MBNBOPUSBNB lOHY@NSVCZΛ࢖ͬͯಛఆϗετҎ֎͔ΒͷΞΫηεΛϝϯςφϯεը໘ʹ͢Δz  IUUQMBNBOPUSBNBIBUFCMPKQFOUSZ "VH 
  59. MBNCEBͰ͔ͬ͜ྑ͘/HJOYSFUVSO ͱϝϯςφϯεϖʔδΛඥ෇͚ 

  60. ฐࣾͷࣄྫ঺հ  %P4తΞΫηεͷࣗಈ੍ޚ  υϝΠϯผͷಈతϓϩΩγ  ෳࡶͳϝϯςφϯεը໘੾Γସ͑  ಈతը૾ม׵αʔόͷ63-Ճ޻ 

    *1ΞυϨε΍63*ͷΞΫηε੍ޚ 
  61. ୲౰!ZBOP BQQFOHJOFFS

  62. ಈతը૾ม׵αʔόͷ63-Ճ޻ ˞  63-ϕʔεͷಈతը૾ม׵ॲཧ  ΫϥΠΞϯτ͕উखʹը૾ม׵Ͱ͖ ͳ͍Α͏ʹ63-ͷҰ෦ΛϋογϡԽ  OHY@NSVCZͰ63-Λղੳ͠όοΫ Τϯυͷը૾ετϨʔδ΁

    ˞!ZBOP l%ZOBNJDJNBHFUSBOTGPSNBUJPOTFSWFS0LBSB#&5"z IUUQTTQFBLFSEFDLDPNZBOP EZOBNJDJNBHFUSBOTGPSNBUJPOTFSWFSPLBSBCFUB ୈҰճϖύϘςοΫΧϯϑΝϨϯε "QS 
  63. ϦΫΤετ63-ʹؚ·ΕΔϋογϡ͕ద੾ͳ஋͔νΣοΫ ϦΫΤετ63-͔Βը૾΁ͷ63-Λੜ੒ͯ͠ϦόʔεϓϩΩγ 

  64. ϦΫΤετ63-ʹؚ·ΕΔϋογϡ͕ਖ਼͍͔͠ධՁ ϦΫΤετ63-ʹؚ·ΕΔจࣈྻΛOHJOY಺෦ม਺͔Βऔಘ

  65. ϦΫΤετ63-ʹؚ·ΕΔจࣈྻΛOHJOYͷ಺෦ม਺͔Βऔಘ ը૾΁ͷ63-Λੜ੒ ϦΫΤετ63-Λ৭ʑղੳ

  66. ಈతը૾ม׵αʔό͓͔ΒΛ !ZBOP͕044Խ͢Δ༧ఆ Ͱ͢

  67. ฐࣾͷࣄྫ঺հ  %P4తΞΫηεͷࣗಈ੍ޚ  υϝΠϯผͷಈతϓϩΩγ  ෳࡶͳϝϯςφϯεը໘੾Γସ͑  ಈతը૾ม׵αʔόͷ63-Ճ޻ 

    ը૾αʔϏεͷΞΫηε੍ޚ 
  68. ୲౰!ITCU BQQFOHJOFFS

  69. ը૾αʔϏεͷΞΫηε੍ޚ ˞  ηογϣϯ*%ͷೝূ  NFNDBDIFEʹηογϣϯ*%อଘ  63-ϕʔεͷೝূ  *1ΞυϨεϕʔεͷೝূ

    ˞!ITCU l.JEEMFXBSFBT$PEFXJUINSVCZz IUUQXXXTMJEFTIBSFOFUITCUNJEEMFXBSFBT DPEFXJUINSVCZ 3FE%PU3VCZ$POG  +VOF 
  70. αʔόىಈ࣌ʹNFNDBDIFEͱ઀ଓ͢Δॲཧ͸লུ αʔόఀࢭ࣌ʹNFNDBDIFEͱ੾அ͢Δॲཧ͸লུ 

  71. ௚઀ΞΫηεΛڋ൱͍ͨ͠63-ͷ੍ޚ TFTTJPO@JEΛΩʔʹNFNDBDIFE͔ΒΞΫηε੍ޚ৘ใΛऔಘ 

  72. ͜ΕҎ֎ʹ΋·ͩ·ͩ ৭ʑ΍͍ͬͯ·͢

  73. )0ͷNSVCZ֦ு

  74. 3VCZεΫϦϓτΛϑοΫ

  75. ڐՄηάϝϯτʹؚ·Ε͍ͯͨΒ࣍ͷॲཧ΁Ҡߦ

  76. ·ͱΊ

  77. .JEEMFXBSF$POpHVSBUJPOBT$PEF  ૄ݁߹ͳϛυϧ΢ΣΞͷ࿈ܞ  ෳࡶͳ࿈ܞΛ3VCZͰ៉ྷʹॻ͚Δ  ΞϓϦΤϯδχΞ͕ΠϯϑϥΛ੍ޚ  ΠϯϑϥΤϯδχΞ͕3VCZͰ੍ޚ 

    ϓϩάϥϛϯάͷ෯͕޿͕Δ 
  78. .JEEMFXBSF $POpHVSBUJPOBT$PEF

  79. DPOOFDUJOGSBFOHJOFFST XJUIBQQFOHJOFFST