Slide 1

Slide 1 text

Go͸wireͰDI͢Δ

Slide 2

Slide 2 text

ࣗݾ঺հ ໊લ: দઇ @applepine1125

Slide 3

Slide 3 text

ΞδΣϯμ • wireͱ͸ • ࢖͍ํ • ϝϦοτɺσϝϦοτ

Slide 4

Slide 4 text

wireͱ͸ʁ

Slide 5

Slide 5 text

wireͱ͸ʁ w ґଘੑͷ஫ೖɺॳظԽΛߦ͏ϝιουΛࣗಈੜ੒ͯ͘͠ΕΔ
 ϥΠϒϥϦ w QSPWJEFS ֤ίϯϙʔωϯτͷΠχγϟϥΠβ ͱJOKFDUPS QSPWJEFS ͨͪΛݺͼग़ͯ͠%*͢Δ Λ׆༻͍͍ͯ͠ײ͡ʹ%*͢Δ w HPPHMF੡ɺ(P$MPVE͔ΒϥΠϒϥϦͱͯ͠੾Γग़͞Εͨ

Slide 6

Slide 6 text

࢖͍ํ

Slide 7

Slide 7 text

࢖͍ํ ྫ ҎԼͷΑ͏ͳϞδϡʔϧ܈Λ͍͍ײ͡ʹ%*͍ͨ͠ ֤ϞδϡʔϧͷQSPWJEFSΛ࣮૷ XJSFHPʹJOKFDUPSΛ࣮૷ wire genͰXJSF@HFOHPΛੜ੒ɺඞཁͳ৔ॴͰݺͼग़͢

Slide 8

Slide 8 text

֤ϞδϡʔϧͷproviderΛ࣮૷

Slide 9

Slide 9 text

֤QSPWJEFSΛXJSF#VJMEʹ·ͱΊͯಥͬࠐΉ ߦ໨ʹ// +build wireinject Λهड़͠ͳ͍ͱXJSFHFO͕ೝࣝ ͯ͘͠Εͳ͍ injectorΛ࣮૷

Slide 10

Slide 10 text

// +build wireinject Λهड़ͯ͋͠ΔϑΝΠϧΛೝࣝͯ͠ XJSF@HFOHP͕ੜ੒͞ΕΔ ଍Γͳ͍΋ͷ͕͋Δ৔߹͸$-*ͷΤϥʔίϝϯτʹग़Δ wire_gen.goͷੜ੒

Slide 11

Slide 11 text

injectorͷهड़όϦΤʔγϣϯ FSSPSΛฦ͠͏ΔQSPWJEFS͕͋Δͱ͖ JOKFDUPSͷ໭Γ஋ʹFSSPSΛ௥Ճ͢Δ͚ͩ ྫ /FX%3FQPTJUPSZ͕FSSPSΛฦ͠͏Δ

Slide 12

Slide 12 text

injectorͷهड़όϦΤʔγϣϯ FSSPSͱԿΒ͔ͷؔ਺Λฦ͠͏ΔQSPWJEFS͕͋Δͱ͖ JOKFDUPSͷ໭Γ஋ʹFSSPSͱGVOD Λ௥Ճ͢Δ͚ͩ ྫ /FX%3FQPTJUPSZ͕FSSPSͱ%#$MPTF͢Δؔ਺Λฦ͠͏Δ

Slide 13

Slide 13 text

injectorͷهड़όϦΤʔγϣϯ ౎౓஫ೖ͍ͨ͠ߏ଄ମ͕͋Δͱ͖ JOKFDUPSͷҾ਺ʹ஫ೖ͍ͨ͠ߏ଄ମΛ௥Ճ͢Δ͚ͩ ྫ /FX%3FQPTJUPSZ͕JOGSB%#JOUFSGBDFΛҾ਺ʹͱΓɺJOUFSGBDFΛ࣮૷ͨ͠NZTRM΍SFEJT΁઀ଓ ͢ΔͨΊͷߏ଄ମΛJOKFDUPSͷݺͼग़͠ઌͰೖΕΔ

Slide 14

Slide 14 text

wireͷศརػೳ ・wire.NewSet(..interface{}) ProviderSet QSPWJEFSΛάϧʔϐϯάͰ͖Δ ґଘ͕ଟ͍ϞδϡʔϧͷQSPWJEFSΛ·ͱΊ͓ͯ͘ͱศར #4FSWJDF͕ґଘ͢ΔϞδϡʔϧ͕ଟ͍ͱ͖ɺ/FX4FUͰ·ͱΊͯɾɾɾ JOKFDUPSͰݺͼग़͢ͱศར

Slide 15

Slide 15 text

wireͷศརػೳ ଞʹ΋৭ʑ ɾwire show ͰQSPWJEFS4FUͷґଘϞδϡʔϧΛ֬ೝ ɾ#JOEJOH*OUFSGBDFͰJOUFSGBDFͱ࣮૷Λඥ͚ͮ ɾ#JOEJOH7BMVFTͰࢦఆͨ͠஋ΛಥͬࠐΜͰॳظԽ͢Δ υΩϡϝϯτΛಡ΋͏ IUUQTHJUIVCDPNHPPHMFXJSFUSFFNBTUFS@UVUPSJBM IUUQTHJUIVCDPNHPPHMFXJSFUSFFNBTUFSEPDT IUUQTHPEPDPSHHJUIVCDPNHPPHMFXJSF

Slide 16

Slide 16 text

ϝϦοτɺσϝϦοτ

Slide 17

Slide 17 text

ϝϦοτ ɾ௕ʑͱΠχγϟϥΠβॻ͔ͳ͍͍ͯ͘ͷָ ɾΤϥʔϋϯυϦϯάͱ͔͢Δඞཁ͕͋Δͱ͖ߋʹָ ɾ1SPWJEFS4FUศར σϝϦοτ ɾಉ͡ύοέʔδ಺ʹෳ਺XJSFHPஔ͚ͳ͍ ˠςετ༻ʹ%*͍ͨ͠ͱ͖ෆศ ɾΠχγϟϥΠβ಺Ͱෳࡶͳ͜ͱ͢ΔͨΊʹ͸ख࣮૷͢Δ͔͠ͳ͍ ׂͱඞཁे෼ͳػೳ͸ἧ͍ͬͯΔͷͰɺXJSFͰ΍ΓͮΒ͞Λײͨ͡ ͱ͖ʹͦ΋ͦ΋ઃܭ͕·͍ͣͷͰ͸ʁͱཱͪ໭ͬͯߟ͑Δ͖͔͚ͬʹ ͳΓͦ͏ ϝϦσϝ

Slide 18

Slide 18 text

ୀ۶ͳ͜ͱ͸ ϥΠϒϥϦʹ΍ΒͤΑ͏