Slide 1

Slide 1 text

,PEBJ4BLBCF!LPVEBJJJ8BOUFEMZ *OD ,VCFSOFUFTΛ࢖ͬͯαʔϏεΛՃ଎ͤ͞ΔऔΓ૊Έ :"1 BDIJNPO $"TJB)BDIJPKJNJE

Slide 2

Slide 2 text

"CPVUNF w ࡔ෦޿େ w !LPVEBJJJ w 8BOUFEMZͷΠϯϑϥΤϯδχΞ w %PDLFSΛ1SPEVDUJPOͰ࢖͍ଓ͚Δཧ༝ w IUUQTXXXXBOUFEMZDPNDPNQBOJFT XBOUFEMZQPTU@BSUJDMFT w 8"/5&%-:5&$)#00,

Slide 3

Slide 3 text

೔ʹԿճEFQMPZͯ͠·͔͢

Slide 4

Slide 4 text

w ճ݄ w ճि w ճ೔ w ճ೔ w ճ࣌ w ճ࣌ IUUQXXXQVCMJDLFZKQCMPHBNB[PO@BXT@SFJOWFOUEBZ@BNIUNM

Slide 5

Slide 5 text

৽نαʔϏεΛ͔ΒQSPEVDUJPOϨϕϧͷ؀ڥΛ༻ҙ͍ͨ͠৔߹ Ͳͷ͘Β͍͔͔Γ·͔͢

Slide 6

Slide 6 text

w ϲ݄ w िؒ w ೔ w ࣌ؒ w EFQMPZͱಉ͡ w ͦ΋ͦ΋ΠϯϑϥνʔϜ ج൫νʔϜ ʹ͓ئ͍͠ͳ͍ͱ͍͚ͳ͍

Slide 7

Slide 7 text

αʔϏεΛՃ଎ͤ͞Δʹ͸ w ͲΜͲΜࢼͤΔ w ܧଓతʹϦϦʔεग़དྷΔ w ͓٬༷ʹग़ͯ͠ɺධՁͯ͠ɺվળͯ͠ͱ͍͏DZDMF͕୹͍؀ڥ w มԽʹڧ͍Πϯϑϥج൫

Slide 8

Slide 8 text

$PEFXJOTBSHVNFOUT 8BOUFEMZ8BZ

Slide 9

Slide 9 text

$PEFXJOTBSHVNFOUT w νʔϜͰ࣌ؒ.5(͢ΔͳΒDPEFΛॻ͍ͯݕূ͠Α͏ w ΤϯδχΞͷ৔߹ w ݶΒΕͨ৘ใͰܾஅΛͯ͠ɺલʹਐΜͰ͍Δ͔ w ԾઆΛ͋Ε͜Εߟ͑ΔΑΓɺ·ͣϓϩτλΠϓΛ࡞ͬͯૣֶ͘श͍ͯ͠Δ͔ w Ӧۀͷ৔߹ w ࣗ෼Ͱྑ͍ػೳ͕ු͔Μ͔ͩΒΤϯδχΞʹཔΉͷͰ͸ͳ͘ w اըॻΛॻ͍ͯձࣾΛճͬͯɺࣾఔ౓Λ֬໿ͯ͠ɺ͜ΕͳΒߦ͚ΔͱࢥͬͨΒΤϯδχΞʹཔΉ͜ͱ ͕ग़དྷΔ͔

Slide 10

Slide 10 text

8BOUFEMZͷऔΓ૊Έ

Slide 11

Slide 11 text

Ͳ͏࣮ݱ͢Δ͔ʁ w ࣗಈԽ w ηϧϑαʔϏεԽ

Slide 12

Slide 12 text

ࣗಈԽηϧϑαʔϏεԽ w ΠϯϑϥΛૢ࡞ग़དྷΔ"1*΍$PEFʹ͢Δ w ։ൃνʔϜ͕ࣗ෼͚ͨͪͩͰਐΊΒΕΔ w ΠϯϑϥνʔϜ΋։ൃνʔϜ΋ࣗ෼ͨͪͷࣗ෼ͨͪͷ࢓ࣄʹूதग़དྷΔ

Slide 13

Slide 13 text

ελʔτ࣌ ਺೥લ·ͰΤϯδχΞ͕গͳ͔ͬͨ ։ൃνʔϜ ΠϯϑϥνʔϜ λεΫґཔ ࡞ۀ

Slide 14

Slide 14 text

͕࣌ܦͭͱɻɻɻɻ ΤϯδχΞͷ૿ՃɺαʔϏεͷ૿Ճ ։ൃνʔϜ ΠϯϑϥνʔϜ λεΫґཔ ࡞ۀ

Slide 15

Slide 15 text

՝୊ w ґཔλεΫ͕૿Ճ w ৽ͨͳαʔϏεϩʔϯναʔϏεͷ෼ׂ w ؾ͍ͮͨΒΠϯϑϥνʔϜͷ࡞ۀ଴͕ͪϘτϧωοΫʹɻɻɻ w ΠϯϑϥνʔϜ΋೔ʑ௥ΘΕΔ࢓ࣄ͹͔Γࣗ෼ͨͪͷϓϩδΣΫτ͕ਐΊ ΒΕͳ͍

Slide 16

Slide 16 text

Ͳ͏͢Δʁ w ͭ͸։ൃνʔϜΈ͍ͨʹਓΛ૿΍͢ w ΋͏ͭ͸ΠϯϑϥνʔϜͷྗΛ͋͛Δ͜ͱ w ਓ͋ͨΓͲΕ͘Β͍ͷαʔόɺͲΕ͘Β͍ͷछྨͷΞϓϦɺͲΕ͘Β͍ͷϢʔβ਺Λ ࢧ͍͑ͯΔ͔ w ྫສ୆ͷαʔόΛສਓͰݟ͍ͯͨΒ݁ہਓ୆ͷྗ͔͠ͳ͍ w ୆ͷαʔόʔਓͰݟ͍ͯͨ΋ͷΛɺ୆ݟΕΔͱྗ্͕ͬͨ w ೥ͷ࣌఺Ͱ'BDFCPPLͷΠϯϑϥνʔϜ͸Θ͔ͣਓ΄ͲͰສ୆Λ؅ཧ 8BOUFEMZ͸ޙऀΛ໨ࢦ͢

Slide 17

Slide 17 text

ԿΛ࣮ݱ͢Δ͔ʁ w $PEFXJOT"SHVNFOUTΛՄೳʹ͢ΔΠϯϑϥ w طଘͷΞϓϦͰ΋৽نΞϓϦͰ΋ͲΜͲΜσϓϩΠͰ͖ΔΑ͏ʹ มԽʹڧ͍Πϯϑϥ w มԽΛආ͚ΔΠϯϑϥͰ͸ͳ͘ɺΉ͠ΖมߋΛલఏͱͨ͠Πϯϑϥ w ٞ࿦΍ݖྗͰ͸ͳ͘ɺ·ͣग़ͯ͠Έͯ݁ՌΛݟΔจԽΛՄೳʹ͢Δ

Slide 18

Slide 18 text

ࣗಈԽ w ΠϯϑϥͷࣗಈԽ $PEFԽ ։ൃνʔϜ ΠϯϑϥνʔϜ Pull request ΠϯϑϥΛૢ࡞Ͱ͖Δ API΍code

Slide 19

Slide 19 text

৽͍͠αʔϏε͕ੜ·Εͨ࣌ʹ΍Βͳ͚Ε͹͍͚ͳ͍͜ͱ

Slide 20

Slide 20 text

৽نWTطଘ w ৽͘͠αʔϏεΛ࡞Δ࣌ʹɺͭͷબ୒ࢶ w طଘͷΞϓϦέʔγϣϯʹ௥Ճͨ͠΄͏͕͍͍͔ w ৽͘͠ϦϙδτϦΛ࡞͔ͬͯΒ࡞Δ΄͏͕͍͍͔

Slide 21

Slide 21 text

طଘͷΞϓϦέʔγϣϯʹࡌͤΔ৔߹ͷϝϦοτ w MPHJO౳ͷTFTTJPOपΓ౳ͷ੍໿Λؾʹ͢Δඞཁ͕ແ͍ w طଘͷNPEFMΛݺͼग़ͤΔ w ߏ੒Λߟ͑ͣʹͦͷ··EFQMPZ͢Ε͹ϦϦʔεग़དྷΔ w αΫοͱ.71Λࢼ͢ͷʹ͕͔͔࣌ؒΒͳ͍ w طଘͷΞϓϦέʔγϣϯʹࡌͤΔͷ͸ָ͔͙ͭ͢ʹݕূͰ͖Δ

Slide 22

Slide 22 text

طଘͷΞϓϦέʔγϣϯʹࡌͤΔ৔߹ͷσϝϦοτ w ͦͷ··֦େ͍ͯ͘͠ͱɺͲΜͲΜґଘؔ܎͕૿͑Δ͠ɺͲΜͲΜॏͨ͘ ͳΔ w ·ͨকདྷن໛͕େ͖ͳͬͯ෼ׂ͍ͤͨ͞৔߹ʹେม w ࠷৽.JEEMFXBSF΍࠷৽WFSTJPOΛೖΕΔ࣌͸ɺ౎౓ΠϯϑϥνʔϜʹ ґཔ͠ͳ͍ͱ͍͚ͳ͍ w ݴޠͱϑϨʔϜϫʔΫ͕റΒΕΔ

Slide 23

Slide 23 text

৽نͰ࡞ΔϝϦοτ w ࠷దͳݴޠͰ࣮૷Ͱ͖Δ 1FSM w ޷͖ͳ.JEEMFXBSF΍࠷৽WFSTJPO͕࢖͑Δ w EFQMPZ͕࣌ؒૣ͍͠ɺͲΜͲΜEFQMPZ w ࣗ෼ͨͪͷαʔϏεʹूத w طଘͷґଘΛؾʹ͠ͳ͍ͷͰࣗ෼ͨͪͰ%PDLFSpMFΧελϚΠζ

Slide 24

Slide 24 text

4NBMMJTCFBVUJGVM w ͭͷ͜ͱ͚ͩΛ͏·͘͢Δ΋ͷʹूத͢Δ w ୯७ʹߟ͑Δ͜ͱ͕ߜΒΕΔ w ෼ذ͕ଟ͍΄Ͳ࡞Δͷ͕େมʹͳΔ w ߟ͑΍͢͞ɺ։ൃɾςετͷ༰қ͞ɺ࠶ར༻ͷ͠΍͢͞ɺഇغɾஔ͖׵͑ ͷ͠΍͢͞ɺੜ࢈ͷ଎౓͚ͩͰͳ͘ɺ࣭Λ΋্͍͛ͯ͘͜ͱ͕Ͱ͖Δ ൈਮʀ8"/5&%-:5&$)#00,

Slide 25

Slide 25 text

ͭͷ͜ͱ͚ͩΛ্ख͘΍Δͷ͕Կނྑ͍͔ w ϞϊϦγοΫͳαʔϏε͸ɺಛఆͷػೳͰͷ$16΍ϝϞϦΛ࢖༻ͯ͠͠· ͏ͱଞʹӨڹ͕ग़Δ͔΋͠Εͳ͍ɻͳΜͱͳ͘༨༟Λ΋ͨͤΔ w খ͍͞αʔϏε͸ͭͷ͜ͱ͚ͩΛ͏·͘΍Ε͹͍͍ɻ༩͑ΒΕͨϦιʔε͢΂ͯΛ ࢖͍੾ΕΔ w ੜ࢈ͷ଎౓Λ্͛ɺੜ࢈͢Δ࣭΋্͛Δ͜ͱ͕Ͱ͖Δɻݱঢ়Ͱ͸͔ͳΓͷԼ४උͷ ͕࣌ؒඞཁʹͳΔɻ w ʮٕज़ྗͰউͭͨΊʯͨΊʹɺ౤ࢿ͢Δ͚ͩͷՁ஋͕͋Δ΋ͷͳͷͰ͸ͳ͍͔ͱࢥ ͍·͢ɻ ൈਮʀ8"/5&%-:5&$)#00,

Slide 26

Slide 26 text

%PVH.D*MSPZ 6/*9૑࢝ऀͷਓͰQJQFͷൃ໌ऀ 6/*9఩ֶ w 5IJTJTUIF6OJYQIJMPTPQIZ w 8SJUFQSPHSBNTUIBUEPPOFUIJOHBOEEPJUXFMM w 8SJUFQSPHSBNTUPXPSLUPHFUIFS w 8SJUFQSPHSBNTUPIBOEMFUFYUTUSFBNT CFDBVTFUIBUJTBVOJWFSTBMJOUFSGBDF w <༁> w 6/*9ͷ఩ֶ͸ҎԼͰ͋Δɻ w ͭͷϓϩάϥϜ͕ɺͭͷ໾ׂʹઐ೦͢Δɻ w ෳ਺ͷϓϩάϥϜ͸ڠௐͯ͠ಇ͘ɻ w ϓϩάϥϜ͸൚༻తΠϯλʔϑΣΠεͰ͋Δඪ४ೖग़ྗΛѻ͏ɻ

Slide 27

Slide 27 text

.JLF(BODBS[ 98JOEPX4ZTUFNઃܭνʔϜͷҰһ ͷ6/*9఩ֶ w 4NBMMJTCFBVUJGVM w .BLFFBDIQSPHSBNEPPOFUIJOHXFMM w #VJMEBQSPUPUZQFBTTPPOBTQPTTJCMF w <༁> w খ͍͞΋ͷ͸ඒ͍͠ w ͭͷϓϩάϥϜ͸୯७ͳͭͷػೳΛߦ͏ w ͳΔ΂͘ૣ͘ϓϩτλΠϓΛ࡞੒ͤΑ

Slide 28

Slide 28 text

৽نͰ࡞ΔσϝϦοτ w Լ४උ͕େม TFTTJPOपΓͷ؅ཧɺ"1*࣮૷ w ෼ࢄγεςϜͷӡ༻͕ෳࡶ .POJUPSJOHɺMPHHJOHɺΤϥʔ͕ىͬͨ࣌͜ ͷUSBDF w ͦ΋ͦ΋৽ཱͯ͘͠Δ࢓૊Έ͕͔ͬ͠Γମܥ͕Ͱ͖͍ͯͳ͍

Slide 29

Slide 29 text

ݱ࣌఺Ͱ৽͍͠αʔϏεΛཱͯΔࡍʹԿΛ͠ͳ͍ͱ͍͚ͳ͍ͷ͔

Slide 30

Slide 30 text

w %FQMPZͱ1SPWJTJPOJOHUPPMઃఆ w Ϧιʔε௥Ճ &-#3%4"VUP4DBMF֤SPMF͝ͱͷ&$ w αʔϏεىಈͱӡ༻ηοςΟϯά w ಈ࡞֬ೝ w .POJUPSJOH௥Ճ /FX3FMJD1BHFSEVUZ)POFZCBEHFS%BUBEPH w ඞཁͰ͋Ε͹ΫϥελϦϯά༻ҙ w "ࢯʮखॱͱ΍Δ͜ͱ͕ଟ͗ͯ͢ແཧͰͨ͠ʯ

Slide 31

Slide 31 text

ղܾ͍ͨ͜͠ͱ w ͱʹ͔͘ϦϦʔεՄೳʹͳΔ·Ͱ͕͔͔࣌ؒΔ w ෳࡶ͗ͯ͢࡞ۀग़དྷΔͷ͕ݶΒΕͨϝϯόʔͷΈ w ৽͍͠ϑϨʔϜϫʔΫΛؾܰʹೖΕΕͳ͍ w EFQMPZͷQJQFMJOF͕ݻఆԽ͞ΕͯΔ w ม͍͑ͨ৔߹͸ɺΠϯϑϥνʔϜʹґཔ͢Δ͔͠ͳ͍ w ͦΕ SBJMT Ҏ֎ͷCBDLFOEαʔϏε͸౎౓ݕ౼ w JOTUBODFDPOUBJOFSͷ੍໿ .POJUPSJOHܥ͸আ͘

Slide 32

Slide 32 text

w αʔϏεΛՃ଎͍ͤͨ͞ w 8BOUFEMZ͸ɺ࣍ʑͱେখ༷ʑͳαʔϏεΛ࡞ΒΕΔ w αʔϏε͸ɺͭͷϓϩμΫτͳ΋ͷ͔Βɺ୯ମ͚ͩͰ͸੒ཱ͠ͳ͍ ϞδϡʔϧΈ͍ͨͳαʔϏε΋͋Δ w ͲΜͲΜग़ͯ͘Δ8BOUFEMZΒ͍͠จԽతͳಛ௃Λࢧ͑Πϯϑϥʹ ͍ͨ͠

Slide 33

Slide 33 text

ΤϯδχΞͷڞ௨ೝࣝͱͯ͠৽͘͠αʔϏεΛ࡞Δͱ͖ ৽نͰ࡞ͬͨ΄͏ָ͕ɺϦϦʔε͠΍͍͢ɺ޷͖ͳݴޠ΍NJEEMFXBSF͕࢖͑Δ ͱ͍͏ͷΛײͯ͡΋Β͏

Slide 34

Slide 34 text

มԽʹڧ͍ΠϯϑϥΛ࣮ݱ͢ΔͨΊʹԿΛղܾ͠ͳ͍ͱ͍͚ͳ͍ͷ͔ w ৽͍͠αʔϏεΛཱͯΔ͜ͱΛߟ͑ͨ࣌ w ݱঢ়৽ཱͯ͘͠Δͷ͕େม w طଘͷࢿ࢈͕࢖͑ͳ͍෼ɺԼ४උ͕खؒ ࠓճ͸ɺ৽ཱͯ͘͠Δͷ͸େมͰ͋Δ෦෼Λղܾͤ͞Δ͜ͱʹϑΥʔΧε

Slide 35

Slide 35 text

,VCFSOFUFT

Slide 36

Slide 36 text

ΫϥελϦϯάͰԿ͕ग़དྷΔ w .BQ3FEVDF͕ಈ͔ͤΔΠϯϑϥΛ࡞ͬͯ͘ΕͱݴΘΕͨ࣌ʹͺͬͱ࡞ΕΔ w .BQ3FEVDFͷλεΫ͸୆͙Β͍͸࠷௿࢖͏΋ͷ w ճͷղੳʹ࢖͍͍ͨΑ͏ͳ͙͢ऴΘΔλεΫ w ΤϥʔΛىͯ͜͠΋ɺผͷͱ͜ΖͰ૸Βͤ௚͢ͱ͔͕؆୯ʹͰ͖Δ w 99༻ʹϚγϯΛཱͯɺ࣍͸::༻ʹϚγϯΛཱͯɺ࣍͸Έ͍ͨͳ͜ͱ͕ͳ ͍ ʮԿ͕ԿॲͰಈ͍͍ͯΔ͔Λҙ͍ࣝͯ͠ͳ͚Ε͹ͳΒͳ͍ੈքʯ͔ΒʮԿ͕ಈ͍͍ͯΔ͔͚ͩҙ͍ࣝͯ͠Ε͹ྑ͍ੈքʯ

Slide 37

Slide 37 text

ϝϦοτɾσϝϦοτ w ʮͲͷίϯςφ͕ͲͷϚγϯͰಈ͔͘͸Θ͔Βͳ͍ɺඞཁʹԠ͡Ҡಈ͢Δʯ w Ͳ͔͜ͷαʔϏεͰϦιʔε͕଍Γͳ͘ͳͬͨΒɺͲ͔͜ΛݮΒ͢ w ྫ 8FCΞΫηε͕૿͑ͨΒɺҰ࣌తʹଞͷϦιʔεΛݮΒ͢͜ͱʹΑͬ ͯରԠͨ͠Γ΋Մೳ w σϝϦοτͰ΋͋ΓɺϦιʔεෆ଍ͱ͔ͷ໰୊͕͋ͬͨ࣌ʹͲ͏ରԠ͍ͯ͠ ͍͔͕೉͍͠

Slide 38

Slide 38 text

։ൃνʔϜ͔ΒΈͯԿ͕มΘͬͯɺͲ͜ʹϝϦοτ͕͋Δ͔ w ΠϯϑϥνʔϜͷ࡞ۀ଴͕ͪݮΔ w 3FQPTJUPSZ௚Լʹ%PDLFSpMFͱͲ͏͍͏ߏ੒͔ΛZNBMʹॻ͍͓ͯͩ͘ ͚ͰϦϦʔε͕Ͱ͖Δ w ΫϥελϦϯάͷϦιʔεΛ্ख͘࢖ͬͯ͘ΕΔͷͰαʔϏε୯ҐͰεϖο ΫΛܾΊΕΔ w ༨ͬͯͦ͏ͩͬͨΒଞͷTFSWJDFͷ$POUBJOFSͷϦιʔεΛ౉͢͜ͱ͕ ग़དྷΔ

Slide 39

Slide 39 text

ݱ࣌఺ͰऔΓ૊ΜͰ͍Δ΋ͷ w ؆୯ͳ$-* w JOJUͰUFNQMBUF࡞੒ w DBQJTUSBOP͙Β͍खܰͳίϚϯυ DBQTUBHFEFQMPZ w UVUPSJBMपΓͷ੔උ

Slide 40

Slide 40 text

͜Ε·ͰͷUPPMͷ൓ল w Πϯϑϥӡ༻ܥͱΞϓϦέʔγϣϯܥΛҰॹʹͲΜͲΜܧ͗଍͠ w *OTUBODF$POUBJOFSͷͨΊTDBMFίϚϯυΛ࡞Δࡍʹɺ JOTUBODFΛIBOEMJOH͠ͳ͍ͱ͍͚ͳ͍ w ͢΂ͯͷαʔϏεΛड͚࣋ͭͨΊɺ෼ذ͕ଟ͍ w DBQJTUSBOPͷ৔߹3BLF࢓༷͔Βಉ͡UBTLΛճ࣮ߦ͠Α͏ͱ͢Δͱ TLJQ͢ΔͳͲͷ੍໿

Slide 41

Slide 41 text

w Կ͕ΰʔϧͳͷ͔͸͸͖ͬΓͤ͞Δ w ͳΔ΂ࣗ͘෼Ͱ࡞Βͳ͍ɻ࡞Δͱͯ͠΋࢖͑Δ෦෼͸࢖͏ w ࠷ॳʹ࣮૷ํ਑ΛܾΊ͗͢ͳ͍ɻ w Ծஔ͖͸͍͍͕ɺৗʹͦͷํ๏Λશ͘࢖Θͳ͍͜ͱ͸ߟ͑ΕΔΑ͏ ʹ͓ͯ͘͠

Slide 42

Slide 42 text

QMVHHBCMFͳUPPM w ͭͷ͜ͱ͚ͩΛ্ख͘͢Δπʔϧ w ར༻ऀ͕ಛʹҙࣝͤͣʹUPPMͷόʔδϣϯΞοϓΛߦ͑ΔΑ͏ʹDMJFOUͱTFSWFSͰ෼͚Δ w DMJFOU͸୯७ͳίϚϯυͰݺͼग़͚ͩ͢ͰɺUPPMΛ૊Έ߹ΘͤͯTFSWFSܦ༝Ͱ࣮ߦͰ͖Δ w EPDLFSDPNQPTFΛ࢖ͬͯɺ্ख͍͘Ζ͍ΖͳUPPMΛୟ͘Α͏ʹ͢Δ w ͜Ε͔ΒೖΔਓʹ΋Θ͔Γ΍͘͢͢ΔͨΊʹɺͳΔ΂͘վ଄͸͠ͳ͍ LVCFSOFUFTͷDMJΛͦ ͷ··࢖͏ w ͋·Γม͑͗ͣ͢ɺ֮͑΍͍͢DPNNBOEʹ͢Δ ඞཁͳ෦෼͚֦ͩுػೳ

Slide 43

Slide 43 text

LVCF $-*UPPMUPFYFDVUFLVCFDUMPWFS44) QMVHHBCMFʹ͢Δ͜ͱͰɺͻͱͭͷ͜ͱΛ্ख͘΍ΔUPPMΛ࡞Δ

Slide 44

Slide 44 text

EUBOLTFD $-*UPPMUPNBOBHF,VCFSOFUFT4FDSFUTFBTJMZ

Slide 45

Slide 45 text

,VCFSOFUFT 5JQTBOE#MVF(SFFO%FQMPZNFOU

Slide 46

Slide 46 text

,VCFSOFUFT5JQT w %BUB4UPSFΛ͋·Γஔ͔ͳ͍ํ͕ྑ͍ w ྫ͑͹&MBTUJD4FBSDIΛݐ͍ͯͨ৔߹ɺͷBUUBDIEFUBDI͕ࣗಈͰ͖ͳ͍ͷͰJOTUBODFΛ݁ہݻఆ͠ͳ͍ͱ͍͚ͳ͍ w DMVTUFSΛ࡞ΔͨΊͷUPPMʹ͋·Γ࣌ؒΛׂ͔ͳ͍ w ௨ৗۀ຿ͱ౤ࢿͷ݉Ͷ߹͍ w ެࣜͷTDSJQUΛ࢖ͬͯΔIUUQTHJUIVCDPNLVCFSOFUFTLVCFSOFUFTCMPCNBTUFSDMVTUFSBXTPQUJPOTNE w LVCSFOFUFT.FFUVQWPMͰίΞϝϯόʔΑΓ,VCFSOUFTͷ؀ڥΛ࡞ΔUPPMͷվળʹࠓޙऔΓ૊ΉΒ͍͠ w EPDLFSJNBHFͰMBUFTUΛ࢖Θͳ͍ w LVCFSOFUFTͰ͸ಉ͡JNBHFUBH͸ۃྗDBDIFΛ࢖͏ w %PO`UVTFIPTU1PSU w IUUQLVCFSOFUFTJPEPDTVTFSHVJEFDPOpHCFTUQSBDUJDFT

Slide 47

Slide 47 text

,FZ %FTDSJQUJPO %FGBVMU &YBNQMF /6.@/0%&4 ԿݸOPEFΛཱͯΔ͔ ,6#&3/&5&4@1307*%&3 BXTʹ͢Δ HDF BXT "84@%&'"6-5@130'*-& DSFEFOUJBMTͷ໊લΛࢦఆ͢Δ EFGBVMU EFW ,6#&@"84@;0/& [POFΛܾΊΔ VTXFTUB BQOPSUIFBTUC "84@*."(& JNBHFΛࢦఆ͍ͨ͠৔߹ར༻͢Δ "84@4@3&(*0/ LVCFSOFUFTͷNFUBEBUBΛ4ʹอଘ͢ΔϦʔδϣϯઌɻ VTFBTU BQOPSUIFBTU "84@4@#6$,&5 LVCFSOFUFTͷNFUBEBUBΛ4ʹอଘ͢Δόέοτઌɻ˞ LVCFSOFUFTTUBHJOH\QSPKFDU@IBTI^ LVCFSOFUFTCVDLFURB ,6#&@"84@*/45"/$&@13&'*9 JOTUBODFͷ໊લΛ௥هͰ͖Δɻ DMVTUFS໊͕ʮ,6#&3/&5&4@1307*%&3@,6#&@"84@*/45"/$&@13&'*9ʯͰ࡞ΒΕΔɻ˞ LVCFSOFUFT LTRB ."45&3@4*;& /0%&@4*;& OPEFͷ਺ͰNBTUFSͷTJ[F͕͋Δఔ౓ࣗಈͰܾΊͯ͘ΕΔ͕ɺJOTUBODFUZQFΛࢦఆ͢Δ͜ͱ΋Ͱ͖Δɻ DMBSHF ,6#&@&/"#-&@/0%&@16#-*$@* 1 OPEFʹ͍ͭͯQVCMJDJQΛ࢖͏͔બ୒͢Δɻ 536& 536& %0$,&3@4503"(& CUSGT BVGT EFWJDFNBQQFS BVGTOPMWNΛࢦఆͰ͖Δɻ BVGT BVGT ,6#&@04@%*453*#65*0/ $PSF04Ͱ͸OPEFؚΊͨDMVTUFSߏங͕TVQQPSU֎ʹؾΛ͚ͭΔɻ KFTTJF͸OPEFͱNBTUFSͰDMVTUFS͕૊·ΕΔɻ KFTTJF KFTTJF ,6#&@71$@$*%3@#"4& DMVTUFSΛߏங͢Δ71$ͷ·ͰͷωοτϫʔΫΛࢦఆͰ͖Δɻ˞ /0/@."426&3"%&@$*%3 ͜ͷൣғ֎ͷ*1ΞυϨε΁ͷτϥϑΟοΫ͸ɺ*1ϚεΧϨʔυΛ࢖༻͢Δɻ˞ 4&37*$&@$-645&3@*1@3"/(& ެ։༻ͷ*1ɻ˞ %/4@4&37&3@*1 ಺෦%/4ͷ*1ΛܾΊΔɻ˞ ."45&3@*1@3"/(& .BTUFSͱͳΔ*1ൣғͷܾΊΔɻ˞ $-645&3@*1@3"/(& $MVTUFSൣғΛࢦఆ͢Δɻ˞ ."45&3@%*4,@4*;& FUDEͷEBUB΍伴͕֨ೲ͞Ε͍ͯΔɻ (# ."45&3@3005@%*4,@4*;& EPDLFSJNBHF౳͕ೖΔɻ (# /0%&@3005@%*4,@4*;& EPDLFSJNBHF౳͕ೖΔɻ (# ˞ͭΊͷΫϥελΛߏங͍ͨ͠৔߹ʹɺ஋Λม͑ΔɻFYQPSU౳ͯ͠PQUJPOΛࢦఆͯ͠ɺAXHFUR0IUUQTHFULTJPcCBTIA

Slide 48

Slide 48 text

.POJUPSJOHCZ%BUBEPH %BFNPO4FU ֤/PEFʹରͯ͠഑ஔ͢Δ Λ࢖͏

Slide 49

Slide 49 text

%BTICPBSE TDPQFQPESDSDOBNFTQBDFͰߜΓࠐΈ"MFSUઃఆ

Slide 50

Slide 50 text

4FDSFUʹ"1*@,&:Λొ࿥ EBUBEPHͳͲͰ࢖༻͞ΕΔ"1*@,&:Λ(JUͷ؅ཧԼʹೖΕͳ͍Α͏ʹ ,VCFSOFUFTͷTFDSFUʹొ࿥͢Δ $ kubectl create secret generic dd-agent --from-literal=api-key=YYYYYYYYYYYYYYYYYYYYc secret "dd-agent" created $ cat examples/dd-agent/dd-agent.yaml ///////////////////// env: - name: API_KEY valueFrom: secretKeyRef: name: dd-agent key: api-key ////////////////////

Slide 51

Slide 51 text

)FBMUIDIFDL w LVCFSOFUFT্Ͱ͸EFGBVMUͰίϯςφͷϓϩηεΛνΣοΫ͓ͯ͠Γɺࣦഊ͍ͯ͠Ε͹SFTUBSU͢Δ w SFBEJOFTT1SPCF w ॳճىಈ࣌ʹ΢ΥʔϜΞοϓ͕ඞཁͳΞϓϦέʔγϣϯͷ৔߹ɺSFBEJOFTT1SPCFΛ࢖͏ w 4VDDFTTʹͳͬͨޙɺ࣮ࡍʹUSB⒏DΛड෇͚Δ w MJWFOFTT1SPCF w ίϯςφ͕ੜ͖͍ͯΔͲ͏͔ݟΔ w -JWFOFTT1SPCF͕'BJMVSFͷ৔߹ɺ3FTUBSU1PMJDZͷର৅ͱͳΓLVCFMFU͔ΒίϯςφΛLJMM͢Δ IUUQLVCFSOFUFTJPEPDTVTFSHVJEFXBMLUISPVHILTIFBMUIDIFDLJOH

Slide 52

Slide 52 text

"QQMJDBUJPO)FBMUI$IFDLJOH IUUQ(FUΛ࢖ͬͨྫ apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx spec: template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 livenessProbe: httpGet: # Path to probe; should be cheap, but representative of typical behavior path: /index.html port: 80 initialDelaySeconds: 30 timeoutSeconds: 1

Slide 53

Slide 53 text

"QQMJDBUJPO)FBMUI$IFDLJOH FYFDΛ࢖ͬͨྫ apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spec: containers: - args: - /bin/sh - -c - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600 image: gcr.io/google_containers/busybox livenessProbe: exec: command: - cat - /tmp/health initialDelaySeconds: 15 timeoutSeconds: 1 name: liveness

Slide 54

Slide 54 text

-JGFDZDMF ,VCFSOFUFTͰ͸EFMFUFͨ͠ࡍʹɺ4*(5&3.͕ૹΒΕΔɻ UFSNJOBUJPO(SBDF1FSJPE4FDPOET EFGBVMUT ΑΓ௕͍৔߹͸ɺ4*(,*--͕ૹΒΕΔɻ apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx spec: template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 lifecycle: preStop: exec: # SIGTERM triggers a quick exit; gracefully terminate instead command: ["/usr/sbin/nginx","-s","quit"]

Slide 55

Slide 55 text

EPUFOWΛTFDSFUͰ؅ཧ EUBOLTFD # Sercet Λ࡞Δ(key=value΋߹Θͤͯ࡞Δ) $ kubectl create secret generic test --from-literal=key1=supersecret --from-literal=key2=topsecret # ֬ೝํ๏(get) $ k8sec list NAMETYPEKEY VALUE 
 ### ઃఆํ๏(set/unset) $ k8sec set test key=value 
 ### manifest ʹ͔͘ env: - name: USERNAME valueFrom: secretKeyRef: name:test key: key1 - name: PASSWORD valueFrom: secretKeyRef: name: test key: key2

Slide 56

Slide 56 text

,PEBJ4BLBCF!LPVEBJJJ8BOUFEMZ *OD IUUQTHJUIVCDPNLPVEBJJJSBJMTEPDLFSTBNQMF #MVF(SFFO%FQMPZNFOU

Slide 57

Slide 57 text

4FSWJDF w QSPYZΛ࡞Δ w LVCFDUMBQQMZGEFQMPZNFOUZBNM w QSPYZ༻ͷTFSWJDFΛ࡞Δ w LVCFDUMBQQMZGTWDZBNM kind: Service spec: ports: - port: 80 type: LoadBalancer selector: app: nginx Node ɾɾɾɾɾɾɾɾɾɾɾɾɾɾɾ 63- ֤/PEF*199999 LVCFQSPYZ MBCFM BQQOHJOY

Slide 58

Slide 58 text

5SBWJTBOERVBZJP UFTUʹ੒ޭͨ͠Β౎౓EPDLFSCVJMEJNBHFUBHΛͯ͠QVTI͢Δ

Slide 59

Slide 59 text

4DIFNFมߋͳ͠ͷEFQMPZ w w LVCFEFTDSJCFͷTFMFDUFSͰࠓͷDPMPSΛ஌Δ w LVCFEFTDSJCFTWDSBJMTŠOBNFTQBDFSBJMT w w LVCFFEJU͢Δ w LVCFFEJUEFQMPZNFOUCMVFOBNFTQBDFSBJMT MBCFMT OBNFBQQ BQQSBJMT DPMPSHSFFO MBCFMT OBNFBQQ BQQSBJMT DPMPSCMVF LVCFQSPYZ LJOE4FSWJDF UZQF/PEF1PSU QPSUT OBNFSBJMT QPSU UBSHFU1PSU TFMFDUPS OBNFBQQ BQQSBJMT DPMPSHSFFO SBJMT 3PMMJOH6QEBUF LVCFFEJUEFQMPZNFOUCMVF

Slide 60

Slide 60 text

$PMPSDIFDL DPMPSHSFFOͱͳ͍ͬͯΔͨΊɺݱࡏ͸HSFFO $ kube describe svc rails --namespace=rails Name: rails Namespace: rails Labels: app=rails,name=app Selector: app=rails,color=green,name=app Type: NodePort IP: 100.64.166.49 Port: rails 3000/TCP NodePort: rails 31257/TCP Endpoints: 100.66.0.8:3000,100.66.4.6:3000 Session Affinity: None No events.

Slide 61

Slide 61 text

3PMMJOH6QEBUF FEJUPS͕։͔ΕΔͷͰɺJNBHFUBHΛมߋ͢Δ $ kube edit deployment green --namespace=myspace deployment "green" edited # watch Option Ͱ֬ೝग़དྷΔ $ kube get po --namespace=rails -w NAME READY STATUS RESTARTS AGE green-3776542877-v3t1u 1/1 Running 0 3m green-3776542877-u2yoy 1/1 Running 0 3m green-191853544-v3ol2 1/1 Terminating 0 20d green-191853544-v3ol2 0/1 Terminating 0 20d

Slide 62

Slide 62 text

4XJUDI w w TFMFDUPSͷDPMPSͷWBMVFΛCMVFʹม͑Δ w LVCFDUMFEJUTWDSBJMTOBNFTQBDFSBJMT MBCFMT OBNFBQQ BQQSBJMT DPMPSHSFFO MBCFMT OBNFBQQ BQQSBJMT DPMPSCMVF LVCFQSPYZ LJOE4FSWJDF UZQF/PEF1PSU QPSUT OBNFSBJMT QPSU UBSHFU1PSU TFMFDUPS OBNFBQQ BQQSBJMT DPMPSCMVF SBJMT LVCFFEJUTWDSBJMT TFMFDUPSͷDPMPSΛมߋ

Slide 63

Slide 63 text

4XJUDI $ kube describe svc rails --namespace=rails Name: rails Namespace: rails Labels: app=rails,name=app Selector: app=rails,color=green,name=app Type: NodePort IP: 100.64.166.49 Port: rails 3000/TCP NodePort: rails 31257/TCP Endpoints: 100.66.0.8:3000,100.66.4.6:3000 Session Affinity: None $ kube edit svc rails --namespace=rails service "rails" edited $ kube describe svc rails --namespace=rails Name: rails Namespace: rails Labels: app=rails,name=app Selector: app=rails,color=blue,name=app Type: NodePort IP: 100.64.166.49 Port: golang 3000/TCP NodePort: golang 31257/TCP Endpoints: 100.66.1.5:3000,100.66.4.8:3000 Session Affinity: None

Slide 64

Slide 64 text

LVCFDUM७ਖ਼ͷखؒ w ·ͩ·ͩख͕ؒଟ͍ w UBHҰཡ͕ݟ͍ͨTUBUVTΈ͍ͨͳ෺͕ݟ͍ͨ w Ϩεϙϯε͕ΠϯϑϥدΓͷදࣔͰ΋͏গ͠ݟ΍͍ͨ͘͢͠ w &EJUPSΛ։͘ͷ͕໘౗ w ALVCFDUMHFUTWDSBJMTPZBNTcTFEFT HSFFO CMVF HcLVCFDUMBQQMZGAͱ ͍͏ख΋͋Δ w NBOJGFTUϑΝΠϧΛͲ͏༻ҙ͢Δ͔

Slide 65

Slide 65 text

LVCF $-*UPPMUPFYFDVUFLVCFDUMPWFS44) QMVHHBCMFʹ͢Δ͜ͱͰɺͻͱͭͷ͜ͱΛ্ख͘΍ΔUPPMΛ࡞Δ

Slide 66

Slide 66 text

ຊؾͰϚΠΫϩαʔϏεΛߏஙӡ༻͍ͨ͠ਓ8BOUFE IUUQTXXXXBOUFEMZDPNQSPKFDUT