Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゼロから始めるGo Modules

ゼロから始めるGo Modules

by yasu0327

F9c4e8b768c5857ee6b7003e283765a0?s=128

kenjihanada

April 26, 2019
Tweet

Transcript

  1. θϩ͔Β࢝ΊΔ .PEVMFT

  2. ࣗݾ঺հ ໊લ༶໺ྑஐ ग़਎஍ෆ໌ ࡛ۄPSେ࿈  ֶ೥ֶ෦೥ ޷͖ͳϓϩάϥϛϯάݴޠ(P झຯےτϨ Ξχϝ өըFUD

  3. ໨࣍ 1.Go modules is Կ? 2.GOPATH؅ཧ͔Βͷมߋ఺ 3.Go modulesͰͷ؅ཧͷྲྀΕ

  4. Go modules is Կʁ

  5. Go modules (vgo) ͱ͸ • GoίϚϯυʹ౷߹͞ΕͨGoͷύέʔδ(όʔδϣ ϯ)؅ཧγεςϜ • ϧʔτʹgo.modϑΝΠϧΛ࣋ͭGoύοέʔδͷू ·Γ

    • Go1.11~ࢼݧతʹಋೖ
  6. Go 1.10 Ҏલ͸… • GOPATHͷԼʹιʔείʔυΛ഑ஔͯ͠؅ཧ • GithubͳͲͷ֎෦Ͱެ։͞Ε͍ͯΔύο έʔδΛ go get

    ͢Δͱ$GOPATH/srcʹ഑ஔ ͞Εɺ͔ͦ͜Βͷ૬ରύεͰimportͯ͠؅ཧ
  7. Go modules Ҏલ͸… Glide Dep

  8. GOPATH؅ཧ͔Βͷมߋ఺

  9. GOPATH֎͔Βύοέʔδ؅ཧ ͕ߦ͑ΔΑ͏ʹͳͬͨʂ

  10. go mod ʹΑΔ؅ཧػೳʂ • go mod init ͰmoduleͷॳظԽ͕Մೳ • depͳͲͰ؅ཧ͍ͯ͠Δطଘͷmodule͸go

    mod initʹΑͬͯࣗಈతʹม׵͞ΕΔ • ੜ੒͞Εͨgo.modϑΝΠϧʹґଘؔ܎Λ௥Ճͯ͠ ؅ཧ͢Δ
  11. go mod ʹΑΔ؅ཧ(ॳظԽ)

  12. go mod ʹΑΔ؅ཧ(طଘ)

  13. go mod ʹΑΔ؅ཧ(طଘ) $POWFSU

  14. go mod ʹΑΔ؅ཧ(go.mod) • Goύοέʔδͷґଘؔ܎͸go.modʹ • exclude, replace, moduleσΟϨΫςΟϒ ͕༻ҙ͞Ε͍ͯΔ

  15. go mod ʹΑΔ؅ཧ(go.mod) ϧʔτσΟϨΫτϦͷNPEVMF໊ SFRVJSFͨ͠NPEVMFΛஔ͖׵͑Δ ඞཁͳNPEVMF໊ͱWFSTJPOΛ௥Ճ

  16. Minimal Version Selection • ৗʹબ୒Ͱ͖Δ͏ͪͰ࠷ݹͷόʔδϣϯͷ ύοέʔδΛબ୒ͯ͠ར༻͢Δ • ύοέʔδ͕Ξοϓσʔτ͞Εͯ΋ৗʹಉ ͡όʔδϣϯΛ࢖͍ଓ͚ΒΕΔ

  17. Semantic Import Versioning

  18. Go modules ؅ཧͷྲྀΕ

  19. Go modules ؅ཧͷྲྀΕ 1. Project rootͰgo mod init module_name
 (depͳͲ࢖͍ͬͯΕ͹go

    mod init) 2. go getͳͲͰґଘؔ܎Λ௥Ճ 3. มߋ఺͸go.modͰॻ͖׵͑
  20. None
  21. ·ͱΊ • Go modules͸Goެࣜͷύοέʔδόʔδϣϯ ؅ཧػೳ • Gopath֎Ͱιʔείʔυ؅ཧͰ͖Δ • Semantic Versioning,

    Minimal Version Selection ͷಋೖʹΑΓґଘؔ܎ͷҋΛ࿨Β͛ͯ͘ΕΔ 5IF(PQIFSDIBSBDUFSJTCBTFEPOUIF(PNBTDPUEFTJHOFECZ3FOÉF'SFODI