Slide 1

Slide 1 text

&$4ຊ൪ӡ༻ ͯ͠ΈͯΘ͔ͬͨ͜ͱ  

Slide 2

Slide 2 text

  w ੢ాক޾ w Ϋϥεϝιουגࣜձࣾ w ϞόΠϧΞϓϦαʔϏε෦ w "1*։ൃɺ"84؀ڥߏஙɺӡ༻

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ w %PDLFSΛ࢖͏Ϟνϕʔγϣϯ w &$4 PO&$ ΛબͿཧ༝ w &$4جຊϓϥΫςΟε w $*$% w #MVF(SFFOσϓϩΠ  

Slide 4

Slide 4 text

%PDLFSΛ࢖͏Ϟνϕʔγϣϯ  

Slide 5

Slide 5 text

%PDLFSΛ࢖͏Ϟνϕʔγϣϯ w ຊ൪Ͱಈ͘؀ڥͰ։ൃ w ։ൃ؀ڥߏங w ىಈ͕ૣ͍ w ੹೚ൣғͷ෼཭  

Slide 6

Slide 6 text

ຊ൪Ͱಈ͘؀ڥͰ։ൃ  

Slide 7

Slide 7 text

%PDLFSͰ࣮ݱͯ͠Δൣғ w ϛυϧ΢ΣΞ .Z42- 3FEJT  w ΞϓϦέʔγϣϯ (P 3BJMT  w ͨͩ͠։ൃ࣌͸*%&ͷิ׬΍ίϚϯυ࣮ߦ ͕खؒͷͨΊ։ൃ؀ڥʹ௚઀Πϯετʔϧ ͍ͯ͠Δ  

Slide 8

Slide 8 text

خ͍͠ͱ͜Ζ w ϛυϧ΢ΣΞͷόʔδϣϯ΍ઃఆΛ։ൃϝϯόʔ Ͱ߹ΘͤΒΕΔ NZTRM SFEJT FUD  w ຊ൪؀ڥʹ͍ۙ؀ڥͰ։ൃͰ͖ΔͷͰຊ൪Ͱ͠ ͔͓͖ͳ͍ෆ۩߹͕։ൃ࣌ʹ͓͖Δ w $*࣌ʹϏϧυͨ͠ΠϝʔδͰσϓϩΠͰ͖Δͷ Ͱຊ൪σϓϩΠ࣌ʹࣄނ͕ى͖ʹ͍͘  

Slide 9

Slide 9 text

$*࣌ͷΠϝʔδͰσϓϩΠ  

Slide 10

Slide 10 text

։ൃ؀ڥߏங  

Slide 11

Slide 11 text

؆୯ʹ౉ͤΔ w EPDLFSDPNQPTFͰϛυϧ΢ΣΞΛؚΊ ͯ؆୯ʹىಈͰ͖ΔͷͰϑϩϯτΤϯδχ Ξͷਓʹ؀ڥΛ౉͠΍͍͢ w ຊ൪Ͱ࢖͏%PDLFSpMFͰϏϧυͨ͠Πϝʔ δΛ͔ͭͬͯ΋Β͏͜ͱͰ"1*Λ࢖ͬͯ΋Β ͍ͳ͕Βσόοάͯ͠΋Β͑Δ  

Slide 12

Slide 12 text

؀ڥΛԚ͞ͳ͍   # データベースを作成 docker-compose run api rails db:create docker-compose run api rails db:migrate EPDLFSDPNQPTFΛ࢖͑͹ ຊདྷඞཁͳϥΠϒϥϦͷΠϯετʔϧΛ͠ͳ͍Ͱ΋ ॳظηοτΞοϓ͕Ͱ͖Δ

Slide 13

Slide 13 text

ىಈ͕ૣ͍  

Slide 14

Slide 14 text

ىಈͷ଎͞ w ϓϩηεͷىಈ૬౰Ͱ্ཱ͕ͪΔͷͰىಈ ͕ૣ͍ w 7BHSBOU $IFG౳ͱൺ΂Δͱ͔ͳΓߴ଎  

Slide 15

Slide 15 text

੹೚ൣғͷ෼཭  

Slide 16

Slide 16 text

੹೚ൣғͷ෼཭ w ։ൃऀ͸%PDLFSpMFͰΞϓϦέʔγϣϯ͕ ಈ͘͜ͱΛอূ͢Δ w ӡ༻ऀ͸%PDLFS͕ಈ͘ΠϯϑϥΛอূ͢Δ w ໌֬ʹ੹೚ൣғ͕෼͔ΕΔ͜ͱʹΑΓͦΕͧ Εͷ࡞ۀʹूதͰ͖Δ  

Slide 17

Slide 17 text

&$4 PO&$ ΛબͿཧ༝  

Slide 18

Slide 18 text

"84Ͱಈ͔͢બ୒ࢶ w &,4 w &$4 &$  w &$4 'BSHBUF  

Slide 19

Slide 19 text

&,4 w "84্Ͱ,VCFSOFUFTΛ࣮ߦͰ͖Δαʔ Ϗε  

Slide 20

Slide 20 text

&,4 w,VCFSOFUFTͷ஌ࣝΛ࢖͑Δ wϕϯμʔϩοΫΠϯ͞Εͳ͍   w·ͩ8PSLFSϊʔυ &$ ؅ཧ͢Δඞཁ͕͋Δ w.BTUFSϊʔυ͕"84؅ཧ͕ͩΫϥελར༻ྉ͸͔͔Δ 1SPT $POT

Slide 21

Slide 21 text

&$4 PO&$ w %PDLFSΛ࣮ߦ͢Δ"84ͷαʔϏε w "84ಠࣗ࢓༷ w &$ͰΫϥελΛࣗલͰ༻ҙ͢Δඞཁ͕͋ Δɹ  

Slide 22

Slide 22 text

&$4 &$ w"-#౳ͷ"84αʔϏεͱ૬ੑ͕͍͍   wϕϯμʔϩοΫΠϯ͞ΕΔ w&$Λ؅ཧ͢Δඞཁ͕͋Δ 1SPT $POT

Slide 23

Slide 23 text

&$4 'BSHBUF w "84্Ͱ%PDLFSΛ࣮ߦ͢ΔαʔϏε w "84ಠࣗ࢓༷ w &$ͰΫϥελΛ༻ҙ͢Δඞཁ͕ͳ͍ɹ  

Slide 24

Slide 24 text

&$4 'BSHBUF w"-#౳ͷ"84αʔϏεͱ૬ੑ͕͍͍ w&$ͷ؅ཧ͕͍Βͳ͍   wϕϯμʔϩοΫΠϯ͞ΕΔ wಉ͡ੑೳͷ&$ͱൺ΂ͯՁ͕֨ߴ͍ wEPDLFSFYFDͰίϯςφʹೖΕͳ͍ 1SPT $POT

Slide 25

Slide 25 text

&$4 PO&$ ΛબͿཧ༝ w ฐࣾʹ͸"84ͷΤΩεύʔτ͕ଟ͍ͷͰ"84 ͚ͩͰߏங͢ΔϝϦοτ͕ଟ͘ϚϧνΫϥ΢ υΛҙࣝ͢Δ͜ͱ͕গͳ͍ w ΠϝʔδΛ࢖͍·Θͯ͠͸͍Δ͕τϥϑΟοΫɺ σʔλྔɺίϯϑΟάͷࠩͰͲ͏ͯ͠΋ຊ൪ ͷίϯςφʹೖͬͯσόοά͍͕ͨ࣌͋͠Δ  

Slide 26

Slide 26 text

&$4جຊϓϥΫςΟε  

Slide 27

Slide 27 text

&$4ϓϥΫςΟε w ϑΝΠϧΛϩʔΧϧʹஔ͔ͳ͍ w ඪ४ग़ྗʹϩά w Πϯελϯεަ׵  

Slide 28

Slide 28 text

ϑΝΠϧΛϩʔΧϧʹஔ͔ͳ͍ w ίϯςφ͕ऴྃͨ͠ΒϩʔΧϧͷϑΝΠϧ͸ ࡟আ͞Εͯ͠·͏ w ɺ&'4ΛϚ΢ϯτ͢Ε͹࢒Δ͕ɺۃྗ 4ʹஔ͘  

Slide 29

Slide 29 text

ඪ४ग़ྗͰϩά w ϩʔΧϧͷϑΝΠϧʹϩάΛஔ͍ͯ͠·͏ͱ ফ͑Δ w ඪ४ग़ྗ͞Εͨ΋ͷΛMPHESJWFSͰϩά αʔϏε౳ʹૹΔ  

Slide 30

Slide 30 text

  $MPVE8BUDI-PHT ߏ଄Խϩά +40/ Ͱϩάग़ྗ͢Δͱ ݕࡧͰߜΓࠐΈ͕Ͱ͖Δ

Slide 31

Slide 31 text

$MPVE8BUDI-PHT w"84͚ͩͰ׬݁͢Δ w؆୯ʹઃఆͰ͖Δ   wޙड़͢Δߏ੒ͱൺ΂ػೳ͕·ͩগͳ͍ 1SPT $POT

Slide 32

Slide 32 text

  'MVFOUE MPHFOUSJFT wϑΟϧλϦϯά wϩάΛ྆ํʹૹ৴ wӡ༻͕೉͍͠ w௕ظอଘ w"UIFOBͰݕࡧ wߴػೳ ूܭɺΞϥʔτ  w୹ظอଘ

Slide 33

Slide 33 text

'MVFOUE MPHFOUSJFT w ϩάͷ੍ޚ͕qVFOUEͰߦ͑Δ w ूܭɺΞϥʔτ͕MPHFOUSJFTͰ؆୯ʹͰ͖Δ w ৽͍͠ར༻ස౓ͷߴ͍ϩά͸ߴػೳͳMPHFOUSJFTɺݹ͍ϩά͸4Ͱ҆͘อଘͰ͖Δ   wMPHFOUSJFT͕ߴՁ wqVFOUEͷϝϯςφϯεͱઃఆ͕ඞཁ 1SPT $POT

Slide 34

Slide 34 text

Πϯελϯεަ׵ w &$ͷγϟοτμ΢ϯͱίϯςφͷγϟο τμ΢ϯ͸࿈ಈ͠ͳ͍  

Slide 35

Slide 35 text

&$ͷऴྃ   &$ͷγϟοτμ΢ϯ࣌ʹ ίϯςφ͸ಥવऴྃͤ͞ΒΕΔ

Slide 36

Slide 36 text

υϨΠχϯά w &$4Ϋϥελʹ͸BDUJWFͱESBJOJOHεςʔ λε͕͋Δ w ESBJOJOHঢ়ଶͷ&$4Ϋϥελ্ͷαʔϏ ε͸ίϯςφΛऴ͍ྃͤͯ͘͞  

Slide 37

Slide 37 text

Πϯελϯεަ׵  ৽͍͠ΠϯελϯεΛ௥Ճ  ݹ͍ΠϯελϯεΛESBJOJOHʹม͑Δ  ݹ͍Πϯελϯεͷίϯςφ͕ʹͳͬͨ ΒΫϥελ͔Β֎͢   ※ ίϯςφ͕̌ʹͳΒͳ͍Α͏ʹ஫ҙ

Slide 38

Slide 38 text

$*$%  

Slide 39

Slide 39 text

࣮ݱ͍ͨ͜͠ͱ w ։ൃத͸ۃྗͳʹ΋ߟ͑ͣࣗવͱσϓϩΠ͠ ͍ͨ w ։ൃ؀ڥʹ࢖ΘΕ͍ͯΔΠϝʔδΛ؀ڥม਺ ͚ͩมߋͯ͠ຊ൪ʹσϓϩΠ͍ͨ͠  

Slide 40

Slide 40 text

σϓϩΠϑϩʔ  

Slide 41

Slide 41 text

σϓϩΠϑϩʔ   ςετ༻ͷ%PDLFSJNBHFΛ࡞੒͠HPUFTU࣮ߦ ੒ޭ࣌.VMUJ4UBHF#VJMEͰσϓϩΠ༻ͷJNBHFΛ࡞੒ Ͱ࡞੒ͨ͠ΠϝʔδʹλάΛ͚ͭͯ&$3Λ1VTI ͷλάΛHJUͷλάͱͯ͠HJUIVCʹ1VTI UBH UBH

Slide 42

Slide 42 text

ϒϥϯνӡ༻   w NBTUFSʹϚʔδ࣌ɺςετ࣮ߦ ΠϝʔδΛϏϧυ w UBHʹ$JSDMF$*ͷCVJME൪߸ΛؚΊΔ͜ͱͰ
 ࣗಈͰҰҙʹͳΔΑ͏ʹ͍ͯ͠Δ

Slide 43

Slide 43 text

ϒϥϯνӡ༻   w ຊ൪؀ڥͰΤϥʔ͕ൃੜ͠NBTUFSਐΜͰ͠·ͬͯΔ w pYϒϥϯνΛ࡞੒ͦ͠ΕΛҰ୴EFWFMPQͰ֬ೝޙQSPE؀ ڥʹσϓϩΠ

Slide 44

Slide 44 text

  FROM golang:1.9 AS builder # ① WORKDIR /go/src/github.com/example/api COPY . . ENV GOOS=linux \ GOARCH=amd64 # ② RUN curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh \ && dep ensure -v \ && bash ./build.sh ENTRYPOINT go test ./... FROM alpine # ③ COPY --from=builder /go/src/github.com/example/api /api ENTRYPOINT ["/api"] ᶃ(01"5)഑ԼʹιʔεΛ഑ஔ ᶄϥΠϒϥϦΛΠϯετʔϧ࣮͠ߦϑΝΠϧΛϏϧυ͢Δ ᶅCVJMEFSͰϏϧυ࣮ͨ͠ߦϑΝΠϧΛίϐʔ

Slide 45

Slide 45 text

&$3Πϝʔδλά   w $JSDMF$*Ͱػցతʹ͚ͭΔλά w σϓϩΠεΫϦϓτ࣮ߦ࣌ʹͲͷ؀ڥʹσϓϩΠ ͔ͨ͠Θ͔Δλά

Slide 46

Slide 46 text

σϓϩΠ   w ։ൃ؀ڥʹ͸CVJME͕੒ޭ͢ΔͨͼʹσϓϩΠ w σϓϩΠ͢ΔUBHΛεςʔδϯάʹσϓϩΠ w εςʔδϯάͰςετ͞ΕͨUBHΛຊ൪ʹσϓϩΠ

Slide 47

Slide 47 text

#MVF(SFFOσϓϩΠ  

Slide 48

Slide 48 text

ඞཁੑ w σϓϩΠ͸&$4ͷϩʔϦϯάΞοϓσʔτ w ͨͩ͠ɺ&MBTUJ$BDIF౳ɺϝϯςφϯε΢Ο ϯυ΢΍ΞοϓάϨʔυʹதஅ͕ඞཁͳϛυ ϧ΢ΣΞ΋͋Δ w ຊ൪؀ڥͰެ։લςετ  

Slide 49

Slide 49 text

ߏ੒   -JTUFOFS3VMFͷ 5BSHFU(SPVQΛ ೖΕସ͑Δ

Slide 50

Slide 50 text

&MBTUJ$BDIFͷΞοϓάϨʔυ   ৽͍͠&MBTUJ$BDIFΛ࡞੒͠ ଴ػܥͷ઀ଓઌΛ͔͑ͯ #MVF(SFFOΛೖΕସ͑Δ New

Slide 51

Slide 51 text

଴ػܥͰެ։લςετ   ଴ػܥʹ)PTU/BNFͰͷ3VMFΛ௥Ճ͠ ಛఆͷυϝΠϯͰΞΫηεͰ͖ΔΑ͏ʹ͢Δ

Slide 52

Slide 52 text

·ͱΊ w %PDLFSΛ࢖͏ͱ։ൃ࣌ʹຊ൪؀ڥͷΤϥʔ ͕ͰΔʢ͜ͱ΋͋Δ  w ཁ͍݅ͩ͠Ͱ͕͢ɺݸਓతʹ͸ࠓ͸·ͩ &$4 PO&$ ͕͓͢͢Ί  

Slide 53

Slide 53 text

͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠