Goモジュールで依存関係を制覇
Go実践とモジュール管理の概要
Go 1.11以降、モジュール管理は標準機能として組み込まれました。go modを使うことで、プロジェクト単位で依存関係を明示的に管理でき、ビルドの再現性が向上します。モジュールはリポジトリ単位で管理され、go.modに必要なパッケージとバージョンが記述されます。これにより、チーム開発やCI/CDパイプラインでの一貫性が確保されます。
go modとgo.sumの役割
go.modはモジュールのメタデータを保持し、requireやreplaceで依存関係を宣言します。一方、go.sumはダウンロードしたパッケージのハッシュを記録し、セキュリティと整合性を保証します。go mod tidyを実行すると、未使用の依存関係が削除され、go.sumが自動更新されます。
go mod tidy
go mod vendor
依存関係とgo getの使い方
依存関係を追加する際は、go getを使用します。例えば、github.com/gin-gonic/gin@v1.7.4を追加するには次のようにします。
go get github.com/gin-gonic/gin@v1.7.4
go getはgo.modに記載し、go.sumにハッシュを追加します。バージョンを固定したい場合は、@v1.7.4のようにタグを明示します。逆に、最新バージョンを取得したい場合はタグを省略します。
プライベートモジュールとバージョン管理
社内リポジトリやプライベートパッケージを利用する場合、go env -w GOPRIVATE=example.com/privateでプライベートモジュールを認識させます。go mod edit -replaceでローカルパスに差し替えることも可能です。
go env -w GOPRIVATE=repo.example.com
go mod edit -replace=repo.example.com/pkg=../local/pkg
バージョン管理はGitタグを活用し、go getでタグを指定して取得します。タグはSemantic Versioning(SemVer)に従うと、依存関係の衝突を減らせます。
コメント
コメントを投稿