6.2 Go Modulesで開発環境のパッケージを管理する

6.2.1 Go Modulesの概要

Go Modulesの主な特徴として以下の項目が挙げられます。

1リポジトリでのマルチモジュールの開発

通常、GoのパッケージはGitHubなどのバージョン管理システム上でリポジトリとして開発しますが、1つのリポジトリは1つ以上のモジュールで構成されます。

セマンティックバージョニングによるリリース

Go Modulesではセマンティックバージョニングによってバージョンを管理します。

go.modファイルによるバージョン管理と、go.sumによるモジュールのチェックサム管理

go.modjsontomlのようなファイル形式ではなく、行指向の独自ファイル形式で依存ライブラリのバージョンを管理します。

依存モジュールは go.sum ファイルによってチェックサムが管理され、プロキシやソースリポジトリからモジュールをダウンロードした際に想定しないファイルかどうか検知できます。

プロキシによる可用性やセキュリティへの考慮、チェックサムデータベースによるモジュールの改ざん防止

モジュールの可用性やチェックサムデータベースについては後ほど触れます。

6.2.1.1 モジュールへのファイルの追加

Go Modulesでライブラリを使う場合は go get コマンドを用います。たとえばロギングライブラリの github.com/rs/zerolog/log をインストールしてみましょう。 -u オプションを付けると取得しようとしているライブラリ(この場合は github.com/rs/zerolog )が依存しているライブラリについても最新のバージョンを取得できます。

$ go ...