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

失敗しない!Kubernetes向けストレージ選び5つのポイント

 失敗しない!Kubernetes向けストレージ選び5つのポイント

DBのようなデータを抱えるStatefulアプリケーションを動かすためには、Kubernetesと連携したストレージが必要不可欠です。特にプライベートクラウドでは、Kubernetesと相性の良いストレージを選ぶことが重要になります。本講演では、弊社で取り組んでいるStatefulアプリケーション向けKubernetesにおけるストレージ選びの5つのポイントについて紹介します。

Yukinori Sakashita

July 22, 2019
Tweet

More Decks by Yukinori Sakashita

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ ‣ٕज़ݚڀΤϦΞ  ӡ༻؅ཧٕज़  Ϋϥ΢υ  αʔόετϨʔδ  ࣗಈࣗ཯ίϯϐϡʔςΟϯά

     "*.- // ).. #BZFTJBO/FUXPSL  ‣৬ྺ  ૯߹ిػϝʔΧʔ 㾎ݚڀॴ ओ೚ݚڀһ  㾎ւ֎ݚڀॴ!γϦίϯόϨʔ ϥϘ௕   αʔόϕϯμʔ ςΫχΧϧ4& !2 ࡔԼ޾ಙ ത࢜  :VLJOPSJ4BLBTIJUB 1I% ‣ ϠϑʔגࣜձࣾθοτϥϘגࣜձࣾ ‣ 4/*"೔ຊࢧ෦ٕज़ҕһձ෭ҕһ௕
  2. ,VCFSOFUFTBTB4FSWJDF ‣ :BIPP+"1"/ͷ8FCαʔϏεͷҰ෦͸,VCFSOFUFT্ͰՔಇ ‣ Ϛωʔδυ,VCFSOFUFTαʔϏε ,VCFSOFUFTBTB4FSWJDF Λ։ൃ  Ќ 

    (" ‣ ,VCFSOFUFTBTB4FSWJDF $BB4 ʹΑΓ1SPEVDUJWJUZͱ4VTUBJOBCJMJUZ͕޲্ ‣  ,VCFSOFUFTΫϥελΛӡ༻த !9
  3. εέʔϧ͢Δ.Z42-ͷҰྫ ‣ .Z42- .BTUFS4MBWFߏ੒ ͷ4MBWF௥Ճ࣌ͷߏஙεςοϓΛ࣮૷ ‣ .Z42-ͷߏஙεςοϓͷ஌͕ࣝͳ͍؅ཧऀͰ΋εέʔϧՄೳ
 FHLVCFDUMTDBMFŠSFQMJDBTTUTNZTRM 
 7PMVNF

    .BTUFS 4MBWF .BTUFS /FX .BTUFS /FX #BDLVQ%BUB -PH1PTJUJPO .BTUFS  *NQPSUCBDLVQUPOFXOPEF /FX #BDLVQ%BUB -PH1PTJUJPO .BTUFS  4UBSU4MBWF 4MBWF 3FBE42- 8SJUF42- .Z42-$MJFOUT .Z42-.BTUFS4MBWF !14  %FQMPZOFXOPEF   (FUCBDLVQGSPN.BTUFS 4DBMJOHQSPDFTT
  4. ίϯςφͰͷσʔλӬଓԽͱ͸ !16 bin/lib Container App Logic Data bin/lib Container App

    Logic Data ‣ աڈ  ίϯςφ͸εςʔτ σʔλ Λ࣋ͭ
 ΞϓϦ͕ۤख  ίϯςφ͕σϓϩΠ͞ΕΔ౎౓
 σʔλ͕ॳظԽ ‣ ݱࡏ ೥ࠒʙ   ϩδοΫͱσʔλΛ෼཭  σʔλΛ֎෦ετϨʔδʹอଘ ӬଓԽ
  5. ,VCFSOFUFT !17 ‣ ίϯςφΦʔέετϨʔγϣϯͷ
 σϑΝΫτελϯμʔυ ‣ $/$'ͷΤίγεςϜͷத৺తଘࡏ
 $MPVE/BUJWF$PNQVUJOH'PVOEBUJPO  ‣

    ओͳػೳ  4FMGIFBMJOH  )PSJ[POUBMTDBMJOH  4FSWJDFEJTDPWFSZBOEMPBECBMBODJOH  "VUPNBUFESPMMPVUTBOESPMMCBDLT  4UPSBHFPSDIFTUSBUJPO
  6. ‣ ,VCFSOFUFTW `   %ZOBNJD1SPWJTJPOJOH ‣ ,VCFSOFUFTW ` 

     'MFY7PMVNF ‣ ,VCFSOFUFTW `   $4* "MQIB  ‣ ,VCFSOFUFTW `   -PDBM7PMVNF #FUB  ‣ ,VCFSOFUFTW `   7PMVNF3FTJ[JOH !20 ‣ ,VCFSOFUFTW `   7PMVNF4OBQTIPU "MQIB   5PQPMPHZ"XBSF7PMVNF 1SPWJTJPOJOH #FUB  ‣ ,VCFSOFUFTW `   $4* ("  ‣ ,VCFSOFUFTW `   -PDBM7PMVNF ("  ‣ ,VCFSOFUFTW `   $4*7PMVNF$MPOJOH "MQIB ετϨʔδػೳͷαϙʔτཤྺ
  7. αϙʔτ͍ͯ͠Δ7PMVNFλΠϓ ‣ BXT&MBTUJD#MPDL4UPSF ‣ B[VSF%JTL ‣ B[VSF'JMF ‣ DFQIGT ‣

    DJOEFS ‣ DPOpH.BQ ‣ DTJ ‣ EPXOXBSE"1* ‣ FNQUZ%JS ‣ GD pCSFDIBOOFM  ‣ qFY7PMVNF ‣ qPDLFS ‣ HDF1FSTJTUFOU%JTL ‣ HJU3FQP EFQSFDBUFE  !21 ‣ HMVTUFSGT ‣ IPTU1BUI ‣ JTDTJ ‣ MPDBM ‣ OGT ‣ QSPKFDUFE ‣ QPSUXPSY7PMVNF ‣ RVPCZUF ‣ SCE ‣ TDBMF*0 ‣ TFDSFU ‣ TUPSBHFT ‣ WTQIFSF7PMVNF ˞ݱࡏ
  8. 0QFSBUPS)VCJP ‣ ,VCFSOFUFT0QFSBUPSͷύϒϦοΫϨδετϦ ‣ ެ։ !22 ΧςΰϦʔ ొ࿥਺ "*.BDIJOF-FBSOJOH 

    "QQMJDBUJPO3VOUJNF  #JH%BUB  $MPVE1SPWJEFS  %BUBCBTF  %FWFMPQFS5PPMT  *OUFHSBUJPO%FMJWFSZ  -PHHJOH5SBDJOH  .POJUPSJOH  /FUXPSLJOH  0QFO4IJGU0QUJPOBM  4FDVSJUZ  4UPSBHF  4USFBNJOH.FTTBHJOH  ˞ݱࡏ
  9. ετϨʔδͷϞσϧ ‣ ϕϯμʔχϡʔτϥϧͳϞσϧ  1FSTJTUFOU7PMVNF$MBJN  1FSTJTUFOU7PMVNF  4UPSBHF$MBTT ‣

    ؅ཧऀͱϢʔβͷ໾ׂΛߟྀͨ͠Ϟσϧ ‣ ετϨʔδ૷ஔͷૢ࡞ͳ͠Ͱ7PMVNFΛ
 ίϯςφʹࣗಈͰϚ΢ϯτ !23 Ϣʔβ ؅ཧऀ
  10. 1FSTJTUFOU7PMVNF$MBJN 17$ ‣ 7PMVNFͷཁٻ࢓༷Λද͢Ϧιʔε  4UPSBHFUZQF 4UPSBHF$MBTT໊   7PMVNFTJ[F

     "DDFTTNPEF !24 "DDFTT.PEF આ໌ 3FBE8SJUF0ODF ͭͷ/PEF͔Β3FBE8SJUFͰϚ΢ϯτͰ͖Δ 3FBE0OMZ.BOZ ෳ਺ͷ/PEF͔Β3FBE0OMZͰϚ΢ϯτͰ͖Δ 3FBE8SJUF.BOZ ෳ਺ͷ/PEF͔Β3FBE8SJUFͰϚ΢ϯτͰ͖Δ
  11. 1FSTJTUFOU7PMVNF 17 ‣ 7PMVNFΛද͢Ϧιʔε  4UPSBHFUZQF 4UPSBHF$MBTT໊   4J[F

     "DDFTTNPEFT  3FDMBJNQPMJDZ w 3FUBJO w 3FDZDMF w %FMFUF !25
  12. $4* $POUBJOFS4UPSBHF*OUFSGBDF ‣ ίϯςφΦʔέετϨʔγϣϯ޲͚ͷඪ४࢓༷ ‣ ,VCFSOFUFTͰ͸4UPSBHF$MBTTͷ1SPWJTJPOFSͷΠϯλʔϑΣʔεͱͯ͠࠾༻ ‣ ೥݄ʹ࠷ॳͷύϒϦοΫϦϦʔε ‣ ओཁͳίϯςφΦʔέετϨʔγϣϯ͕࠾༻


    ,VCFSOFUFT $MPVE'PVOESZ .FTPT %PDLFS FUD  ‣ ,VCFSOFUFTͷιʔεπϦʔ JOUSFF Ͱ؅ཧ͞Ε͍ͯͨετϨʔδ૷ஔʹ
 ؔ࿈͢Δ࣮૷͕ɺSEϕϯμͰಠࣗʹ։ൃఏڙ͢Δ͜ͱ͕Մೳ !27
  13. $4*ͷΞʔΩςΫνϟ !28 $4*)FMQFS $POUBJOFS SE1BSUZ $4*7PMVNF %SJWFS$POUBJOFS /PEF1MVHJO %BFNPO4FU WBSMJCLVCFMFUQPET

    ʜTPDLFUT FYUFSOBMBUUBDIFS FYUFSOBMQSPWJTJPOFS SE1BSUZ $4*7PMVNF %SJWFS$POUBJOFS $POUSPMMFS1MVHJO 4UBUFGVM4FU &NQUZ%JS7PMVNF /PEF ,VCFMFU $POUSPMMFS .BOBHFS "1* 4FSWFS .BTUFS FUDE H31$ 6%4 6%4 .PVOU
 1SPQBHBUJPO 6%4 6%4 &YUFSOBM$PNQPOFOU$SFBUFECZSE1BSUZ7FOEPS &YUFSOBM$PNQPOFOU$SFBUFECZ,VCFSOFUFTUFBN 6%4
  14. ετϨʔδͷ࢖͍ํ ‣ 7PMVNFͷׂΓ౰ͯʹ͸େ͖ͭ͘ͷํ๏ ‣ .BOVBM1SPWJTJPOJOH  ؅ཧऀ͕4UPSBHF$MBTTͱ1FSTJTUFOU7PMVNFΛࣄલʹσϓϩΠ  Ϣʔβ͸1FSTJTUFOU7PMVNF$MBJNΛ࢖ͬͯ1FSTJTUFOU7PMVNFΛબ୒ ‣

    %ZOBNJD1SPWJTJPOJOH  ؅ཧऀ͸4UPSBHF$MBTTͷΈࣄલʹ४උ  Ϣʔβ͕1FSTJTUFOU7PMVNF$MBJNΛσϓϩΠ͢Δͱ
 1FSTJTUFOU7PMVNF͕ࣗಈੜ੒ !29
  15. %ZOBNJD1SPWJTJPOJOH !30 ʜ TQFD DPOUBJOFST OBNFNZTRM JNBHFNZTRM ʜ WPMVNF.PVOUT OBNFNZTRMEBUB

    NPVOU1BUIWBSMJCNZTRM WPMVNF$MBJN5FNQMBUFT NFUBEBUB OBNFNZTRMEBUB TQFD BDDFTT.PEFT<3FBE8SJUF0ODF> TUPSBHF$MBTT/BNFHPME SFTPVSDFT SFRVFTUT TUPSBHF(J %FQMPZ
  16. %ZOBNJD1SPWJTJPOJOH !31 ʜ TQFD DPOUBJOFST OBNFNZTRM JNBHFNZTRM ʜ WPMVNF.PVOUT OBNFNZTRMEBUB

    NPVOU1BUIWBSMJCNZTRM WPMVNF$MBJN5FNQMBUFT NFUBEBUB OBNFNZTRMEBUB TQFD BDDFTT.PEFT<3FBE8SJUF0ODF> TUPSBHF$MBTT/BNFHPME SFTPVSDFT SFRVFTUT TUPSBHF(J $SFBUF17$
  17. %ZOBNJD1SPWJTJPOJOH !32 ʜ TQFD DPOUBJOFST OBNFNZTRM JNBHFNZTRM ʜ WPMVNF.PVOUT OBNFNZTRMEBUB

    NPVOU1BUIWBSMJCNZTRM WPMVNF$MBJN5FNQMBUFT NFUBEBUB OBNFNZTRMEBUB TQFD BDDFTT.PEFT<3FBE8SJUF0ODF> TUPSBHF$MBTT/BNFHPME SFTPVSDFT SFRVFTUT TUPSBHF(J 4FMFDU4$
  18. %ZOBNJD1SPWJTJPOJOH !33 ʜ TQFD DPOUBJOFST OBNFNZTRM JNBHFNZTRM ʜ WPMVNF.PVOUT OBNFNZTRMEBUB

    NPVOU1BUIWBSMJCNZTRM WPMVNF$MBJN5FNQMBUFT NFUBEBUB OBNFNZTRMEBUB TQFD BDDFTT.PEFT<3FBE8SJUF0ODF> TUPSBHF$MBTT/BNFHPME SFTPVSDFT SFRVFTUT TUPSBHF(J Storage $SFBUF7PMVNF QSPWJTJPOFS
  19. %ZOBNJD1SPWJTJPOJOH !34 ʜ TQFD DPOUBJOFST OBNFNZTRM JNBHFNZTRM ʜ WPMVNF.PVOUT OBNFNZTRMEBUB

    NPVOU1BUIWBSMJCNZTRM WPMVNF$MBJN5FNQMBUFT NFUBEBUB OBNFNZTRMEBUB TQFD BDDFTT.PEFT<3FBE8SJUF0ODF> TUPSBHF$MBTT/BNFHPME SFTPVSDFT SFRVFTUT TUPSBHF(J Storage OS "TTJHO $SFBUF
 17
  20. %ZOBNJD1SPWJTJPOJOH !35 ʜ TQFD DPOUBJOFST OBNFNZTRM JNBHFNZTRM ʜ WPMVNF.PVOUT OBNFNZTRMEBUB

    NPVOU1BUIWBSMJCNZTRM WPMVNF$MBJN5FNQMBUFT NFUBEBUB OBNFNZTRMEBUB TQFD BDDFTT.PEFT<3FBE8SJUF0ODF> TUPSBHF$MBTT/BNFHPME SFTPVSDFT SFRVFTUT TUPSBHF(J Storage OS Container Runtime Container .PVOU
 ɹ17
  21. ৽ػೳ-PDBM7PMVNF ‣ ,VCFSOFUFTWͰ(" ‣ /PEFͷ಺ଂ%JTLͷσΟϨΫτϦΛ 1PE͔ΒϚ΢ϯτ ‣ ֎෦ετϨʔδͷ৔߹ͱಉ༷ʹ 4$ 17

    17$Λ࢖ͬͨૢ࡞ ‣ /PEFো֐΍࡟আͳͲͰอଘͨ͠σʔ λ͕࡟আ͞ΕΔ͜ͱʹ஫ҙ ‣ 1PEͷ/PEFҠಈ΋ରԠෆՄ ‣ %ZOBNJD1SPWJTJPOJOH͸ະαϙʔτ !42 /PEF ಺ଂ%JTL NOUWP NOUWP
  22. ৽ػೳ7PMVNF4OBQTIPU ‣ ,VCFSOFUFTWʹͯ"MQIB ‣ 7PMVNF4OBQTIPU$MBTTɺ 7PMVNF4OBQTIPU͕৽ొ৔ ‣ 7PMVNF4OBQTIPUΛσϓϩΠ͢Δ ͜ͱͰɺ1FSTJTUFOU7PMVNFͷσʔ λΛεφοϓγϣοτͱͯ͠อଘ

    ‣ ϦετΞ͸17$ʹͯ 7PMVNF4OBQTIPUΛEBUB4PVSDF ͱͯ͠ࢦఆ͠1FSTJTUFOU7PMVNFΛ ࡞੒ !43 1PE͔Β จࣈྻz)FMMPzΛॻ͖ࠐΈ 7PMVNF 4OBQTIPU 7PMVNF4OBQTIPUΛ ࡞੒ )FMMP )FMMP 8PSME 1PE͔Β จࣈྻz8PSMEzΛॻ͖ࠐΈ )FMMP ϦετΞ 5 7PMVNF
 4OBQTIPU$MBTT ετϨʔδ TOBQTIPUUFS
  23. ετϨʔδͷγεςϜઃܭ ‣ 1VCMJD$MPVEͷαʔϏεͰ͸ετϨʔδαʔϏε͕ఏڙ  "84&#47PMVNF "[VSF%JTL "[VSF'JMF ($&1FSTJTUFOU%JTLFUD ‣ 1SJWBUF$MPVEͰ͸Πϯϑϥ؅ཧऀ͕ετϨʔδΛ४උ

    ‣ Ϣʔβ͸ετϨʔδͷ஌ࣝͳ͠Ͱར༻ ‣ εςʔτϑϧͳΞϓϦέʔγϣϯΛ҆৺ɾ҆શʹ,VCFSOFUFT্Ͱ
 ಈ࡞ͤ͞ΔͨΊʹɺ؅ཧऀʹ͸ετϨʔδͷ஌͕ࣝඞཁ  ,VCFSOFUFTͷ஌ࣝʴετϨʔδͷ஌ࣝ !45
  24. 3PMMJOH6QEBUF ‣ 1PE͕࠶࡞੒͢Δܖػ  3PMMJOHVQEBUF  ো֐FUD ‣ ࠶࡞੒͢Δ৔ॴ 

    ಉҰ/PEF  ผ/PEF ‣ %FUBDI"UUBDIͷࣗಈ࣮ߦ !47 3PMMJOH6QEBUF "VUPNBUJD QBUITXJUDIJOH 7PMVNF
  25. ઃܭϙΠϯτ ‣ %FUBDI"UUBDIΦϖϨʔγϣϯͷੑೳ  Ұ౓ʹଟྔͷ%FUBDI"UUBDIΦϖϨʔγϣϯݺͼग़͠
 ྫ͑͹QPETOPEF͕7PMVNF͍࣋ͬͯΔͱʜ   ैདྷߴ଎Ͱ͋ͬͨ*O#BOEΦϖϨʔγϣϯͷ
 ϕϯμಠࣗϏοτʹΑΔύε੾Γସ͑͸


    ,VCFSOFUFTͰ͸ར༻ෆՄ FH4$4*71%  ‣ Ϛϧνύεઃఆ  /POEJTSVQUJWFͳ੾Γସ͑Ͱ͸ඞཁ  /PEF௥Ճ࣌ʹ؅ཧऀͷૢ࡞ͳ͠Ͱύεઃఆ
 ͕Ͱ͖Ε͹ϕλʔ !48 /PEF /PEF 4UPSBHF 0VUPG#BOE *O#BOE
  26. -PDLJOH !49 ‣ αϙʔτ͍ͯ͠Δ"DDFTT.PEFT  3FBE8SJUF0ODF  3FBE0OMZ.BOZ  3FBE8SJUF.BOZ

    ‣ #MPDLετϨʔδ͸-PDLΛ࣋ͨͳ͍ ‣ ಉ࣌ʹͭͷ7PMVNFʹॻ͖ࠐΈΛ
 ߦ͏ͱσʔλഁଛͷةݥੑ͋Γ
  27. ઃܭϙΠϯτ ‣ αϙʔτ͢Δ"DDFTT.PEFTΛνΣοΫ  -PDL੍ޚ͠ͳ͍ΞϓϦέʔγϣϯͰ͸3FBE8SJUF.BOZΛආ͚Δ΂͖ ‣ ϛυϧ΢ΣΞͷΞϓϦέʔγϣϯ FH3%# ͔
 ϑϩϯτΤϯυͷΞϓϦέʔγϣϯ

    FH8FCGSPOU ͷͲͪΒͰ-PDL੍ޚ ͞Ε͍ͯΔ͔ΛνΣοΫ  ϑϩϯτΤϯυͷΞϓϦέʔγϣϯͰ-PDL੍ޚ͢ΔαʔϏεͷ৔߹͸ 3FBE8SJUF.BOZ͸ආ͚Δ΂͖ !50
  28. !52 ઃܭϙΠϯτ ‣ ετϨʔδͷϚϧνςφϯτͰ,VCFSOFUFTຖͷΞΫηεΛίϯτϩʔϧ  ίϯτϩʔϧͰ͖ΔϦιʔεΛ֬ೝ FHWPMVNF QPSU OPEF`T*1*2/ 

    ‣ ςφϯτͷ"$-ʹ/PEFͷ*1 PS*2/ ͕ࣗಈొ࿥Ͱ͖Ε͹ϕλʔ ,VCFSOFUFT ,VCFSOFUFT 5FOBOU" 5FOBOU# 4UPSBHF
  29. ઃܭϙΠϯτ !54 ‣ 2VPUBΛ࢖͍෼͚ͯઃܭ ‣ ,VCFSOFUFTͷ2VPUB  /BNFTQBDFຖͰͷ੍ݶ ‣ ετϨʔδͷ2VPUB

     ,VCFSOFUFTຖͰͷ੍ݶ  7PMVNF΍1PPMͷαΠζ੍ݶ  7PMVNFͷੜ੒਺ͷ੍ݶ ύϥϝʔλ આ໌ SFRVFTUTTUPSBHF /BNFTQBDF಺ͷશͯ17$ͷ
 αΠζͷ߹ܭ QFSTJTUFOUWPMVNFDMBJNT /BNFTQBDF಺ͷ17$ͷ਺ TUPSBHFDMBTTOBNF TUPSBHFDMBTTTUPSBHFLTJP SFRVFTUTTUPSBHF ಛఆͷ4$͔ΒׂΓ౰ͯΒΕͨ /BNFTQBDF಺ͷશͯͷ17$ͷ αΠζͷ߹ܭ TUPSBHFDMBTTOBNF TUPSBHFDMBTTTUPSBHFLTJP QFSTJTUFOUWPMVNFDMBJNT ಛఆͷ4$͔ΒׂΓ౰ͯΒΕͨ /BNFTQBDF಺ͷ17$ͷ਺ ,VCFSOFUFTͷ4UPSBHF3FTPVSDF2VPUB
  30. 7BMVF !55 ‣ ετϨʔδʹ͸༷ʑͳλΠϓ͕ଘࡏ  ΞϓϥΠΞϯε੡඼ "4*$ར༻   4%4

    4PGUXBSF%FpOFE4UPSBHF   $MPVE/BUJWF4UPSBHF ‣ Ұ௕Ұ୹ ‣ શσʔλΛಛఆͷετϨʔδͷΈͰ
 αϙʔτ͢ΔͱՄ༻ੑ௿Լ΍
 ίετ૿େͷϦεΫ͋Γ
  31. ઃܭϙΠϯτ ‣ อଘ͢ΔσʔλͷՁ஋ͷݟఆΊ ‣ σʔλͷՁ஋ʹԠ͡ɺෳ਺ͷ4UPSBHF$MBTTΛ
 ࢖͍෼͚͕Φεεϝ ‣ ετϨʔδͷίετ͸อݥͱಉ͡Α͏ͳ΋ͷ ʁ ൺֱ߲໨

    ΞϓϥΠΞϯε੡඼ 4%4 $MPVE/BUJWF4UPSBHF ػثίετ    ηοτΞοϓͷ༰қ͞ ެ։৘ใͷଟ͞ εέʔϧΞ΢τͷ͠қ͞ ো֐ͷൃੜ͠ʹ͘͞ σʔλ෮چͷ༰қ͞ ετϨʔδ৽ٕज़ͷ࠾༻ͷૣ͞ όʔδϣϯΞοϓͷස౓ ˞ൃදऀͷओ؍ʹΑΔධՁͰ͢ $ kubectl get sc NAME PROVISIONER AGE Gold A/provisioner 26d Silver SDS/provisioner 26d Bronze CNS/provisioner 26d
  32. ·ͱΊ !57 ‣ θοτϥϘͰͷࣄྫɺ,VCFSOFUFTͰͷετϨʔδΛ঺հ ‣ ,VCFSOFUFT޲͚ετϨʔδબͼͭͷϙΠϯτ  3PMMJOH6QEBUF  -PDLJOH

     4FDVSJUZ  2VPUB  7BMVF ‣ 7.͕ొ৔ͨ࣌͠΋εςʔτϑϧΞϓϦͷ7.΁ͷҠߦ͸৻ॏͩͬͨ ‣ $POUBJOFSͰͷಈ࡞ࣄྫ΋೥ΑΓঃʑʹ૿͖͍͑ͯͯΔҹ৅