Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
go-cloudとWireを利用したDI (P 6O $POGFSFODFʢ(P͋Μ͜ʣ-5େձLH :PJDIJSP4IJNJ[V!CVEPVHVNJ
Slide 2
Slide 2 text
自己紹介 ‣ ਗ਼ਫཅҰ!CVEPVHVNJ ‣ ‣ #BDLFOE%FTLUPQ"QQFOHJOFFS ‣ (P3VCZPO3BJMT3FBDU ‣ ϒϩάIUUQCVEPVHVNJHJUIVCJP ‣ ίϛϡχςΟ׆ಈHPMBOHUPLZP
Slide 3
Slide 3 text
今日のゴール ‣ HPDMPVEͷ֓ཁΛΔ ‣ 8JSFͷ֓ཁΛΔ ‣ XJSFίϚϯυΛͬͨ%FQFOEFODZ*OKFDUJPO %* ͷΓํ͕Θ͔Δ
Slide 4
Slide 4 text
アジェンダ ‣ HPPHMFHPDMPVEʹ͍ͭͯ ‣ 8JSFʹ͍ͭͯ ‣ 8JSFίϚϯυΛͬͨ%* ‣ ·ͱΊ
Slide 5
Slide 5 text
マルチクラウドへの課題 ‣ ίϯςφʂ,VCFSOFUFTʂ ‣ ϙʔλϏϦςΟੑͷ্ ‣ ͱݴ͑ɺதͷΞϓϦέʔγϣϯϩδοΫ1BB4ʹ༊ண͍ͯ͠Δ ‣ 1BB4ఏڙαʔϏεΛར༻͠ͳ͍ͷ΄΅͋Γ͑ͳ͍ʢʁʣ ‣ ࠓ΅͘ΒͷΞϓϦ1BB44%,ͷ"1*ʹґଘ͍ͯ͠Δ
Slide 6
Slide 6 text
SDKに依存した実装 ྨࣅαʔϏεʹର͢Δಉ͡ૢ࡞Ͱ࣮͍ͩͿҟͳΔ
Slide 7
Slide 7 text
go-cloudとは ‣ IUUQTHJUIVCDPNHPPHMFHPDMPVE ‣ ʹൃද ‣ IUUQTCMPHHPMBOHPSHHPDMPVE ‣ ϚϧνΫϥυͳ։ൃΛߦ͏ͨΊͷ(PͷϥΠϒϥϦ ‣ ΫϥυαʔϏεͷδΣωϦοΫͳ"1*Λఆٛ ‣ ݱࡏW BMQIBSFMFBTF
Slide 8
Slide 8 text
go-cloudの概要 ‣ HPDMPVE͕αϙʔτ͍ͯ͠Δ1BB4 ‣ (PPHMF$MPVE1MBUGPSN ‣ "NB[PO8FC4FSWJDF ‣ HPDMPVE͕ఏڙ͍ͯ͠ΔΫϥυαʔϏε ‣ #-0#HPDMPVECMPC ‣ .Z42-EBUBCBTFTRM ‣ 0UIFS4UBDLESJWFSϥϯλΠϜFUD
Slide 9
Slide 9 text
正直まだ「揃ってない」感はある
Slide 10
Slide 10 text
まだ使えない?
Slide 11
Slide 11 text
google/go-cloud/wire
Slide 12
Slide 12 text
Wireの前に少し確認
Slide 13
Slide 13 text
Dependency Injection(DI) ‣ ґଘੑͷೖ ‣ ίϯϙʔωϯτؒͷґଘؔΛίʔυ͔Βഉআ͠ɺ֎෦ͷઃఆ ϑΝΠϧͳͲͰೖͰ͖ΔΑ͏ʹ͢Δ ‣ (PʹϦονͰσϑΝΫτͳ%*πʔϧͳ͍ʢͱࢥ͍ͬͯΔʣ ‣ ۪ʹίϯετϥΫλʔΠϯδΣΫγϣϯͳͲߦ͏
Slide 14
Slide 14 text
例:リポジトリパターンでDI ‣ BVUI5PLFO FSSSETVUJMT#VJME"VUI5PLFO ʜ EOT4USʜ ‣ DPOO FSSTRM0QFO lNZTRMz EOT4US ‣ DS$PNQBOZ3FQPTJUPSZ DPOO ‣ DTDBTF/FX$PNQBOZ6TFDBTF BS
Slide 15
Slide 15 text
オレたちのDIはまだまだ続くぜ…
Slide 16
Slide 16 text
しんどい
Slide 17
Slide 17 text
WireでDIをすっきりさせる
Slide 18
Slide 18 text
Wireとは ‣ HPDMPVEʹؚ·Ε͍ͯΔίϚϯυϥΠϯπʔϧͱ࣮༻"1* ‣ HPDMPVE8JSFΛͬͯ%*͕ग़དྷΔΑ͏ʹ࣮͞Ε͍ͯΔ ‣ 8JSFΛ͏͜ͱͰಘΒΕΔϝϦοτ ‣ ґଘؔΛૄʹ͢ΔίʔυΛڧ੍Ͱ͖Δ ‣ ෳࡶͳґଘؔ8JSF͕%*ίʔυΛࣗಈੜͯ͘͠ΕΔ ‣ ґଘؔΛΈ߹Θͤͯ৽͍͠ґଘؔఆٛͰ͖Δ
Slide 19
Slide 19 text
Wireを使ったDIの流れ ‣ 1SPWJEFSͱ͍͏֓೦ʹैͬͯґଘؔΛఆ͓ٛͯ͘͠ ‣ *OKFDUPSͱ͍͏֓೦ʹैͬͯ%*Λߦ͏Έ߹ΘͤΛఆٛ͢Δ ‣ XJSFHFOίϚϯυΛͬͯ%*ίʔυΛࣗಈੜ͢Δ
Slide 20
Slide 20 text
ProviderとInjector ‣ 8JSFʹ1SPWJEFSͱ*OKFDUPSͱ͍͏ͭͷ֓೦͕͋Δ ‣ 1SPWJEFS ‣ ґଘؔͷղܾ͕ඞཁͳίϯϙʔωϯτͷू߹ ‣ *OKFDUPS ‣ 1SPWJEFSΛ߹ΘͤͯґଘੑΛղܾ͢Δ ‣ ࣮ࡍʹ%*͢Δίʔυࣗಈੜ͢Δ
Slide 21
Slide 21 text
Provider XJSF/FX4FUΛͬͯґଘؔΛఆٛ 1SPWJEFSΛجʹผͷ1SPWJEFSΛఆٛ͢Δ͜ͱͰ͖Δ
Slide 22
Slide 22 text
Injector XJSF#VJMEͬͯఆٛ ྫ$POUFYUɺDMJ'MBHTͱ͍͏Ҿͱ1SPWJEFSΛͬͯBQQMJDBUJPO F Λੜ͢Δ
Slide 23
Slide 23 text
Injector XJSFHFOίϚϯυΛͬͯ*OKFDUPS͔Βࣗಈੜ ʢXJSFΛΘͣʹ͔Β%*Λ͢Δͱ͜͏ͳΔʣ
Slide 24
Slide 24 text
Injector XJSFHFOίϚϯυΛͬͯࣗಈੜͨ͠ίʔυ FSSPS࣌ͷDMFBOVQॲཧͳͲࣗಈੜͯ͘͠ΕΔ
Slide 25
Slide 25 text
wireを使ったDIの流れ
Slide 26
Slide 26 text
*sql.DB(Cloud SQL)のDI
Slide 27
Slide 27 text
wire showでProviderを確認する XJSFTIPXίϚϯυͰࢦఆͨ͠ύοέʔδͷ1SPWJEFSใΛऔಘͰ͖Δ
Slide 28
Slide 28 text
不足分は自分で定義する DMPVETRM1BSBNTΛੜ͢ΔؔΛఆ͓ٛͯ͘͠
Slide 29
Slide 29 text
Injectorを定義する Ϗϧυλά͖ͷϑΝΠϧͰ*OKFDUPSΛఆٛ͢Δ Γͳ͍DPOUFYU$POUFYUͱDMJ'MBHT લ1ͷࣗ࡞ؔͷҾ ΛҾͰ༻ҙ͢Δ
Slide 30
Slide 30 text
wire gen
Slide 31
Slide 31 text
自動生成されたコード
Slide 32
Slide 32 text
今日のゴール ‣ HPDMPVEͷ֓ཁΛΔ ‣ 8JSFͷ֓ཁΛΔ ‣ XJSFίϚϯυΛͬͨ%FQFOEFODZ*OKFDUJPO %* ͷΓํ͕Θ͔Δ
Slide 33
Slide 33 text
まとめ ‣ HPDMPVEͬͱ"1*ఆٛ ͱαϙʔτ1BB4 ͕૿͑ͯ΄͍͠ ‣ XJSFΛ͏ͱ%*ίʔυ͕؆୯ʹࣗಈੜͰ͖ΔΑ͏ʹͳΔ ‣ XJSFίϚϯυHPDMPVEҎ֎Ͱ͑ΔͷͰࣗ࡞QLHͰ%*Ͱ͖Δ