ࣗݾհ
w ౻ా༏و !BSVOFLP
w ਆށࡏॅࣨའग़
w ॴଐ
w ߹ಉձࣾ(FPSFQVCMJD+BQBO
w ཧۭؒใΛ༻͍ͨ
ιϦϡʔγϣϯͷఏࣔ
w Ұൠࣾஂ๏ਓ-0$"-
w *5ίϛϡχςΟΛࢧԉ͢ΔίϛϡχςΟ
Slide 3
Slide 3 text
ࣗݾհ
w ձࣾͰԿͯ͠Δʁ
w "84ͰͷΠϯϑϥཧ
w ΦϯϓϨLTΫϥελཧ
w $*$%৬ਓ
w 3FBDU/BUJWFͰͷΞϓϦ࡞
w झຯ
w ετϦʔτϐΞϊΊ͙Γ
w ਆށʹແବʹՕॴ͙Β͍͋ͬͨΓ͢Δ
Slide 4
Slide 4 text
ฐࣾʹ͓͚Δ3FENJOF׆༻
w (FP5BTL5SBDLFS1MVHJO
w 3FENJOFͷ*TTVFʹཧۭؒใΛՃͰ͖ΔϓϥάΠϯ
w όοΫΤϯυ%#1PTU(*4ͷΈʹରԠ
w ͜ͷϓϥάΠϯΛೖΕͨ3FENJOFΛ4BB4ͱͯ͠ఏڙ
w Ҏલ714"OTJCMF͕ͩͬͨཧίετ͕૿େ
w %PDLFS "84&$4&,4
ʹҠߦͯ͠ઈࢍՔಇத
w কདྷతʹ044ʹͳΔ༧ఆ
Slide 5
Slide 5 text
ຊͷ༰
w %PDLFSʹ͍ͭͯ
w 3FENJOFΛ%PDLFSʹࡌͤͯΈΔ
w ެࣜ%PDLFS*NBHF
w ࣗલͰ࡞Δ3FENJOFͷ%PDLFS*NBHF
%PDLFSͬͯԿʁ
w ΞϓϦέʔγϣϯΛ
w ίϯςφʹด͡ࠐΊͯ
w ۚଠ᷒తʹྔ࢈Ͱ͖ͯ
w ͍ࣺͯΒΕΔ
w ͱͯศརͳιϑτΣΞ
Slide 9
Slide 9 text
%PDLFSΛ͏ͱԿ͕خ͍͔͠
w ຊ൪ڥ͕Ͳ͜Ͱಈ͔ͤΔ
w ΞϓϦͷಈ࡞ʹඞཁͳιϑτΣΞ͕ΠϝʔδԽ͞Ε͍ͯΔ
w खݩͱຊ൪Ͱಉ͡ΠϝʔδΛಈ͔ͤ0,
w ࡉ͔͍ڥͷࠩҟͳͲΛؾʹ͠ͳͯ͘ྑ͘ͳΔ
w *NNVUBCMF*OGSBTUSVDUVSF
Slide 10
Slide 10 text
εςʔτϑϧͳίϯςφͷѻ͍
w ίϯςφͷதʹ͋Δσʔλίϯςφͷফڈͱಉ࣌ʹআ͞ΕΔ
w 7PMVNFػೳΛͬͯίϯςφ֎ʹΓग़ͯ͠Ϛϯτ͢Δ
w ֎෦ͷσΟϨΫτϦΛϚϯτ
w %PDLFS7PMVNFΛ࡞ɾϚϯτ
Slide 11
Slide 11 text
ίϯςφϓϩηεͷറΓ
w ඞવతʹඞཁͳϓϩηεͷ͚ͩίϯςφΛ༻ҙ͢Δඞཁ͕͋Δ
w 3FENJOFͳΒ3BJMT༻ίϯςφͱ%#༻ίϯςφͰܭͭ
w %PDLFS୯ମͩͱίϯςφؒ࿈ܞػೳ͕গ͍͠ʹ͍͘
w ίϯςφؒωοτϫʔΫ 3FENJOF%#
ͷखಈઃఆେม
w %PDLFS$PNQPTF,VCFSOFUFTͰΧόʔ
Slide 12
Slide 12 text
%PDLFSͷϫʔΫϑϩʔ
w %PDLFSpMFʢΠϝʔδͷϏϧυखॱॻʣΛॻ͘
w %PDLFS*NBHFΛϏϧυ
w %PDLFS)VCͳͲͷίϯςφϨδετϦʹΠϝʔδΛΞοϓϩʔυ
w ͋ͱϨδετϦ͔Βμϯϩʔυͯ͠Ͳ͜Ͱར༻Մೳ✌
Slide 13
Slide 13 text
%PDLFSpMFʹ͍ͭͯ
w 4IFMM4DSJQUϕʔεͰهड़
w ίϚϯυ '30.ɾ36/ɾ$01:ͳͲ
Λͬͯ
ΠϝʔδͷߏΛΈཱͯΔ
w جຊతʹίϚϯυ͕Πϝʔδͷ
ϨΠϠΛ࡞͢Δ
Slide 14
Slide 14 text
%PDLFSͷϨΠϠߏ
w %PDLFS*NBHFϨΠϠߏʹͳ͍ͬͯΔ
w ֤ϨΠϠޓ͍ʹಠཱ͍ͯͯ͠ɺӨڹΛٴ΅͞ͳ͍
w ͋ΔϨΠϠʹෆཁͳϑΝΠϧ͕͍ͬͯͯɺผͷϨΠϠ͔ΒͦͷϑΝΠϧ
Λফͨ͠ͱͯ͠ɺىಈ࣌ʹফ͍͑ͯΔΑ͏ʹݟ͑Δ͕Πϝʔδͷதʹ
ෆཁϑΝΠϧ͕ͬͨ··ʹͳΔ
w ෆཁͳϑΝΠϧ͕͋Δͱ͖ϨΠϠͷதͰফ͢ͱ͜Ζ·Ͱ໘ΛݟΔʂ
#BTF*NBHF
-BZFS
-BZFS
-BZFS/
%PDLFS*NBHF
Slide 15
Slide 15 text
%PDLFSͷϏϧυΩϟογϡઓུ
w %PDLFS*NBHFΛϏϧυ͢Δͱ͖ʹɺ֤ϨΠϠΩϟογϡͱͯ͠อଘ͞ΕΔ
w มߋ͕ͳ͔ͬͨϨΠϠجຊతʹ࠶Ϗϧυ͞Εͳ͍
w มߋ͞ΕͨϨΠϠ͔Β্ͷϨΠϠ࠶Ϗϧυ͞ΕΔ
w ΩϟογϡͷಛੑΛੜ͔ͨ͠ϏϧυઓུΛ
ͱΔ͜ͱͰϏϧυ࣌ؒΛॖՄೳ
w جຊతʹߋ৽ස͕͍ॲཧΛઌʹɺස͕ߴ͍ॲཧΛ͋ͱʹॻ͘
w (FNpMF͋·Γมߋ͠ͳ͍ͷͰɺCVOEMFJOTUBMMΛઌʹͯ͠ɺSCϑΝΠϧͷ
ίϐʔΛޙʹ͢ΔͱຖճCVOEMFJOTUBMM͕Βͳͯ͘ศར
#BTF*NBHF
-BZFS
-BZFS
-BZFS
%PDLFS*NBHF
มߋͳ͠
มߋ͋Γɾ࠶Ϗϧυ
มߋͳ͠ɾ࠶Ϗϧυ
Slide 16
Slide 16 text
͜͜·Ͱͷ·ͱΊ
w %PDLFSʹΑͬͯ*NNVUBCMF*OGSBTUSVDUVSF͕࣮ݱՄೳͱͳͬͨ
w %PDLFSpMFͰΠϝʔδͷߏΛఆٛ
w %PDLFS*NBHFϨΠϠߏʹͳ͍ͬͯΔ
w ΩϟογϡઓུΛੜ͔ͯ͠ߴʹϏϧυ͠Α͏
Slide 17
Slide 17 text
3FENJOFΛ%PDLFSʹࡌͤΔ
Slide 18
Slide 18 text
%PDLFSԽͷϙΠϯτ
w ެࣜ%PDLFS*NBHFͷ͍Ͳ͜Ζ
w ࣗલͰ%PDLFS*NBHFΛ࡞͢Δ
w σʔλϕʔεͷଓ
w ఴϑΝΠϧͷอଘ
w ϓϥάΠϯΛೖΕΔͱ͖ʁ
w %PDLFSpMFͷॻ͖ํ
Slide 19
Slide 19 text
ެࣜ%PDLFS*NBHF
w IUUQTIVCEPDLFSDPN@SFENJOF
w %PDLFS$PNNVOJUZެࣜͰϝϯςφϯεத
w ެࣜͷ҆৺ײ
w 3FENJOFʹରԠࡁΈ
w Έͷ%#ͱΈ߹Θͤͯར༻Մ
Slide 20
Slide 20 text
ͲΜͳͱ͖ʹ͑Δ͔
w ͱΓ͋͑ͣ%PDLFSͰಈ͔͢ݕূΛ͍ͨ͠ͱ͖
w ϓϥάΠϯɾςʔϚΛҰೖΕͳ͍֮ޛ͕͋Δͱ͖
w ಛʹґଘHFN͕ωΠςΟϒϞδϡʔϧʹґଘ͍ͯ͠Δͷ/(
w ͦ͏Ͱͳͯ͘ϓϥάΠϯͷόʔδϣϯཧ͕ਏ͍ͷͰආ͚ͨํ͕٢
ެࣜ3FENJOFͷ%PDLFS*NBHF
w ($$͕আ͞Ε͍ͯΔͷͰωΠςΟϒϞδϡʔϧ͕ඞཁͳ(FNΛ
ޙ͔ΒՃͰ͖ͳ͍
w ఴϑΝΠϧ༻σΟϨΫτϦΛΕͣʹ7PMVNFͱͯ͠Ϛϯτ
w ͜ΕΛΕΔͱίϯςφΛೖΕସ͑ͨࡍʹશ෦ফ͑·͢
w ͪΐ͍ͪΐ͍͍ͮΒ͍ϙΠϯτ͕͋ΔΕͬͭࣗ࡞
Slide 23
Slide 23 text
ࣗલ%PDLFS*NBHFͷεεϝ
w ϓϥάΠϯͳͲΛ͕ͬͭΓೖΕͯΧελϚΠζ͢Δ߹
ࣗલͰ3FENJOFͷ%PDLFS*NBHFΛ࡞͢Δͷ͕Φεεϝ
w ϓϥάΠϯςʔϚΛؚΊͯ(JUཧԼʹஔ͘͜ͱͰόʔδϣϯཧ༰қ
Slide 24
Slide 24 text
ࣗલ%PDLFS*NBHFͷ࡞Γํ
w 3FENJOFιʔείʔυຊମͷϑΥʔΫ
w %#ઃఆͷมߋ
w ϩάʹؔ͢ΔઃఆϑΝΠϧͷมߋ
w ىಈ༻εΫϦϓτͷઃஔ
w ϓϥάΠϯͷಋೖʢҙʣ
w %PDLFSpMFEPDLFSDPNQPTFZNMͷ࡞
Slide 25
Slide 25 text
3FENJOFϦϙδτϦͷϑΥʔΫ
w ͱΓ͋͑ͣόʔδϣϯཧ͢ΔͨΊʹ3FENJOFϦϙδτϦΛϑΥʔΫ
w TUBCMFϒϥϯν͋ͨΓ͔ΒదͳϒϥϯνΛ࡞
w ͕ग़ͨͱ͖ࠜݩ͔ΒSFCBTF͢ΕόʔδϣϯΞοϓՄೳ
w ͨͩ͠ඍௐͷඞཁ͋Δ͔ͱࢥΘΕ·͢
w ͋ͱ͜ͷϒϥϯνͰඞཁͳϑΝΠϧ %PDLFSpMFͳͲ
Λ·Δ͝ͱཧ͍ͯ͘͠
ˢTUBCMF
ˢEPDLFS
Slide 26
Slide 26 text
σʔλϕʔεͷଓ
w ௨ৗ3FENJOFͰىಈલʹconfig/database.ymlΛฤू͢Δ
w جຊతʹ%PDLFSͰϏϧυͨ͠ΠϝʔδͷதΛىಈ࣌ʹมߋͰ͖ͳ͍
w ຊ൪ڥͷ%#ύεϫʔυΛॻ͍ͨZBNMϑΝΠϧΛ(JUཧ͢Δͷةݥ
w Ͳ͏͢Δ
Slide 27
Slide 27 text
ڥมʹΑΔ%#ઃఆͷೖ
w %PDLFSͰجຊతʹڥมܦ༝ͰઃఆΛೖ͢Δ
w l'BDUPS"QQzͷষͰʮઃఆڥมʹ֨ೲ͢Δʯͱ͋Δ
w ʮڥผͷઃఆϑΝΠϧΛ࡞Δͳʯͱʜʜ
w 3BJMTܥͰZBNMϑΝΠϧͷதʹ3VCZίʔυΛຒΊࠐΊΔ
w 3VCZܦ༝ͰڥมΛऔಘͯ͠ɺຒΊࠐΜͰ͠·͑0,ʂ
Slide 28
Slide 28 text
%#ʹ1PTU(*4Λͬͨࡍͷઃఆྫ
w σϓϩΠڥܾ·͍ͬͯΔͣͳͷͰBEBQUFSݻఆ
w มԽ͢ΔՄೳੑͷ͋ΔΛڥม͔ΒಡΈऔΕΔΑ͏ʹ͓ͯ͘͠
w QSPEVDUJPOҎ֎ॻ͔ͳ͍
w ڥมܦ༝ͰҙͷΛೖ
Ͱ͖ΔͷͰɺͦΕҎ֎ͷڥΛ
ผʹఆٛ͢Δඞཁ͕ͳ͍ͨΊ
w HJUJHOPSFʹ͜ͷϑΝΠϧؚ͕·Εͯ
͍ΔͷͰΕͣʹআ֎͓ͯ͘͜͠ͱ
Slide 29
Slide 29 text
%#༻(FNͷΠϯετʔϧ
w %#༻ͷՃ(FNconfig/database.ymlΛಡΜͰಈతʹܾ·Δ
w ฐࣾͷΑ͏ʹ1PTU(*4ΛBEBQUFSʹ͍ͯ͠Δͱ֘͢Δͷ͕ͳͯ͘
ԿΠϯετʔϧ͞Εͳ͘ͳͬͯ͠·͏
w Ͳ͏͢Δ
Slide 30
Slide 30 text
(FNpMFMPDBMͷ׆༻
w ݸผʹඞཁͳ(FN(FNpMFMPDBMʹॻ͘ͱΠϯετʔϧͯ͘͠ΕΔ
w (FNpMFMPDBMʹ%#ଓʹඞཁͳ(FNΛॻ͍ͯ͠·͏
w ͜ΕͰ%PDLFS*NBHFͷϏϧυ࣌ʹճ͚ͩCVOEMFJOTUBMM͢Ε0,
Slide 31
Slide 31 text
ϩάʹؔ͢Δઃఆ
w 3FENJOFͷϩάϑΝΠϧͱͯ͠อଘ͞ΕΔ
w %PDLFSͷϩάඪ४ग़ྗʹྲྀ͢ͷ͕ඪ४తͳํ๏
w l'BDUPSBQQzষʮϩάϑΝΠϧͰͳ͘ඪ४ग़ྗʹʯ
w ·ͨ"84ڥͰ$MPVE8BUDIͰݕࡧ͘͢͢͠ΔͨΊ
ϩά͕+40/ܗࣜͩͱخ͍͠
Slide 32
Slide 32 text
-PHSBHFʹΑΔ+40/ϩά
w -PHSBHFͱ͍͏(FNͰϩάΛ+40/ʹมߋ
w config/environments/production.yml Ͱઃఆมߋ
w ग़ྗઌΛ45%065ʹมߋ
w +40/εΩʔϚͷఆٛ
w ͜͜ͰڥมͰͲ͜ʹϩάΛ
ྲྀ͔͢มߋՄೳͳϩδοΫΛ࠾༻
w (FNpMFMPDBMʹMPHSBHFΛՃ͓͑ͯ͘͜ͱ
Slide 33
Slide 33 text
ىಈ༻εΫϦϓτͷઃஔ
w %PDLFSͰ3FENJOFΛࣗಈىಈ͢ΔͨΊʹεΫϦϓτΛՃ
w %PDLFSىಈ࣌ʹಈ͘ίϚϯυछྨ
w &/53:10*/5ىಈ࣌ʹઈରಈ͔͍ͨ͠ίϚϯυ
w $.%ىಈ࣌ʹಈ͘ίϚϯυʢίϚϯυϥΠϯҾͰ্ॻ͖Մೳʣ
w $.%Ͱͨ͠ίϚϯυ&/53:10*/5ͷҾͱͯ͠ಈ͘ͷͰҙ
Slide 34
Slide 34 text
&/53:10*/5ͷهड़
w FOUSZQPJOUTIͰىಈ࣌ʹγʔΫϨοττʔΫϯΛ࡞
w ͦͷޙ$.%Ͱͨ͠ίϚϯυ͕ಈ͘Α͏ʹFYFDίϚϯυΛࠐΉ
Slide 35
Slide 35 text
$.%ͷهड़
w TUBSUTIʹϚΠάϨʔγϣϯॲཧͱ3BJMTTFSWFSىಈॲཧΛॻ͘
w &$4LTڥͳΒϚΠάϨʔγϣϯىಈલλεΫͱͯ͠ॻ͍ͨํ͕ྑ͍͔ʢະݕূʣ
w ͨ·ʹϓϩηε͕κϯϏԽͯ͠࠶ىಈʹࣦഊ͢ΔͷͰফڈॲཧೖΕΔ
Slide 36
Slide 36 text
ϓϥάΠϯΛೖΕΔͱ͖
w (JUTVCNPEVMFΛͬͯཧ
w .gitignoreʹ/plugins͕ఆٛ͞Ε͍ͯΔͷͰ͋Β͔͡Ίআ
w ͋ͱTVCNPEVMFͰϓϥάΠϯͷHJUϦϙδτϦΛཧ͢Δ͚ͩ
• git submodule add https://github.com/foo/foo.git plugins/foo
w ͜ͷϓϥάΠϯσΟϨΫτϦʹೖͬͯϓϥάΠϯ։ൃ͕Մೳ
w σόοάޮߴ͘ɺ(JUϫʔΫϑϩʔ͕ͦͷ··͑ͯศར
Slide 37
Slide 37 text
ϓϥάΠϯͷҙ
w ϓϥάΠϯσΟϨΫτϦʹ(FNpMF͕͍ͬͯΔͱ
ෆ߹͕͋Δ ޙड़
ͷͰআ͍ͨ͠
w 3FENJOFଆͷ(FNpMFMPDBMʹ(FNpMFͷ༰Λసه͓ͯ͘͠
w ϓϥάΠϯ͕ґଘ͍ͯ͠Δ(FN͕ґଘ͍ͯ͠ΔϥΠϒϥϦ͕͋Ε
%PDLFSଆʹΠϯετʔϧ͢ΔͨΊʹ໊લΛϝϞ͓ͯ͘͠
Slide 38
Slide 38 text
%PDLFSpMFΛॻ͘
w ·ͣެࣜͷ%PDLFSpMFΛίϐʔͯ͘͠Δ
w ͜͜Ͱެࣜ%PDLFSpMF͕Ͳ͏͍͏ߏ͔ͩͬͨࢥ͍ग़ͯ͠ΈΑ͏
ϥϯλΠϜґଘιϑτΣΞ (JU*NBHF.BHJDLͳͲ
ͷΠϯετʔϧ
3FENJOFιʔείʔυͷల։
(FNͷΠϯετʔϧ
w
Slide 39
Slide 39 text
%PDLFSpMFΛॻ͘
w ·ͣެࣜͷ%PDLFSpMFΛίϐʔͯ͘͠Δ
w ͜͜Ͱެࣜ%PDLFSpMF͕Ͳ͏͍͏ߏ͔ͩͬͨࢥ͍ग़ͯ͠ΈΑ͏
ϥϯλΠϜґଘιϑτΣΞ (JU*NBHF.BHJDLͳͲ
ͷΠϯετʔϧ
3FENJOFιʔείʔυͷల։
(FNͷΠϯετʔϧ
w
ˡɹϓϥάΠϯΛؚΜͩίʔυશମ͕ίϐʔ͞ΕΔ
ɹɹ͢ΔͱϓϥάΠϯͳͲΛมߋ͢Δͱɺͦ͜ΑΓ্ͷϏϧυΩϟογϡ͕ഁغ͞ΕΔ
Slide 40
Slide 40 text
%PDLFSpMFΛॻ͘
w ·ͣެࣜͷ%PDLFSpMFΛίϐʔͯ͘͠Δ
w ͜͜Ͱެࣜ%PDLFSpMF͕Ͳ͏͍͏ߏ͔ͩͬͨࢥ͍ग़ͯ͠ΈΑ͏
ϥϯλΠϜґଘιϑτΣΞ (JU*NBHF.BHJDLͳͲ
ͷΠϯετʔϧ
3FENJOFιʔείʔυͷల։
(FNͷΠϯετʔϧ
w
ˡɹϓϥάΠϯΛؚΜͩίʔυશମ͕ίϐʔ͞ΕΔ
ɹɹ͢ΔͱϓϥάΠϯͳͲΛมߋ͢Δͱɺͦ͜ΑΓ্ͷϏϧυΩϟογϡ͕ഁغ͞ΕΔ
ˡɹͦͷ݁Ռɺಛʹมߋ͕ͳͯ͘ຖճ(FNͷΠϯετʔϧ͕ߦΘΕͯ͠·͏
Slide 41
Slide 41 text
%PDLFSpMFΛॻ͘
w ·ͣެࣜͷ%PDLFSpMFΛίϐʔͯ͘͠Δ
w ͜͜Ͱެࣜ%PDLFSpMF͕Ͳ͏͍͏ߏ͔ͩͬͨࢥ͍ग़ͯ͠ΈΑ͏
ϥϯλΠϜґଘιϑτΣΞ (JU*NBHF.BHJDLͳͲ
ͷΠϯετʔϧ
3FENJOFιʔείʔυͷల։
(FNͷΠϯετʔϧ
w खॱͱΛٯʹ͍ͨ͠
ˡɹϓϥάΠϯΛؚΜͩίʔυશମ͕ίϐʔ͞ΕΔ
ɹɹ͢ΔͱϓϥάΠϯͳͲΛมߋ͢Δͱɺͦ͜ΑΓ্ͷϏϧυΩϟογϡ͕ഁغ͞ΕΔ
ˡɹͦͷ݁Ռɺಛʹมߋ͕ͳͯ͘ຖճ(FNͷΠϯετʔϧ͕ߦΘΕͯ͠·͏
Slide 42
Slide 42 text
͠ϓϥάΠϯ͕͋Δ߹
w ϓϥάΠϯ͕͋Δ߹ɺϓϥάΠϯ༻ͷ(FNpMFΛϓϥάΠϯσΟϨΫτϦ
͝ͱCVOEMFJOTUBMM͢Δલʹίϐʔ͓͔ͯ͠ͳ͚ΕͳΒͳ͍
w %PDLFSͷΩϟογϡઓུΛߟ͑ΔͱɺϑΝΠϧͷίϐʔΑΓઌʹ
CVOEMFJOTUBMMΛઌʹߦ͍͍ͨ
w (FNͷΈ্ɺಉ͡ґଘύοέʔδ͕ॻ͔Εͨ(FNpMF͕ෳՕॴʹ
ଘࡏͰ͖ͳ͍
w ͦͷͨΊɺ(FNpMFMPDBMʹϓϥάΠϯ͕ґଘ͢Δ(FNΛసهͯ͠ɺ
%PDLFSpMFͰCVOEMFJOTUBMM͢ΔલʹϓϥάΠϯଆ͔Β(FNpMFΛফ͢
%PDLFS$PNQPTFΛͬͨىಈ
w ϩʔΧϧڥͰ࡞ͬͨ%PDLFS*NBHFΛಈ͔͢ͳΒ$PNQPTF͕ศར
w ͓Έͷ%#ͱΈ߹Θͤͯͬ͘͘͞͞ͱىಈՄೳ
w αϯϓϧϦϙδτϦʹೖΕͯ͋ΔͷͰݟͯΈ͍ͯͩ͘͞
Slide 46
Slide 46 text
"84ͷσϓϩΠ
w &$ͩͱ%PDLFSʹࡌͤͨҙຯ͕ͳ͍ͷͰ&$4PS&,4ͷ͍ͣΕ͔
w ͲͬͪͰ0,ɻΠϯϑϥ୲ͷ͓ΈͰܾΊ·͠ΐ͏
w &,4ʹ͓ͯ͘͠ͱকདྷతʹ"84͕͍͔͢͠ʁ
w 'BSFOE͞Μ͕ϝϯςφϯε͍ͯ͠Δ4ϓϥάΠϯͰ
ఴϑΝΠϧΛίϯςφͷ֎ʹ͍ग़͢
w σʔλϕʔεʹ3%4͓ͬͯ͘ͱศར