

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
この記事では go111module について、初心者にも分かるように解説します。
go111moduleとは何か
go111module は Go 言語のモジュール機能を指す用語で、Go 1.11 で導入されました。モジュールはコードと依存関係を管理する単位です。
なぜモジュールが重要か
モジュールを使うとプロジェクトごとに依存ライブラリのバージョンを固定できます。これによりビルドの再現性が向上します。
go.mod ファイルと go.sum
モジュールを使い始めるとすべての情報が go.mod に書かれ、依存関係の検証情報は go.sum に保存されます。
基本的な使い方の流れ
新しいモジュールを作るには go mod init から始めます。既存のコードに対して依存を追加すると go get で更新します。
実例の流れ
例: 私のプロジェクトが images ライブラリを使う場合、 go get github.com/example/images@v1.2.3 を実行します。これにより go.mod にそのバージョンが記載され、他の開発者が同じバージョンを使えるようになります。
モジュールと従来の GOPATH の違い
GOPATH ベースでは依存関係の場所が固定されており、別のプロジェクトで同じライブラリを使うと競合が起こりやすいです。モジュールベースでは互いに独立して管理できます。
よくある質問
Q1 go111module は必須ですか?
いいえ。Go 1.11 以降で公式にモジュールが提供されていますが、既存の GOPATH プロジェクトを使い続けることも可能です。ただし新しい機能や依存管理の安定性を考えるとモジュールを使うのがおすすめです。
まとめ
go111module は Go のモジュール機能の核となる考え方です。モジュールを使うことで依存の管理が楽になり、ビルドの再現性が高まります。 初心者の方はまず go mod init の流れと go.mod の基本を抑えると理解が深まります。
モジュールの要点を表で確認
| 従来 | GOPATH ベースの管理。依存関係の衝突が起きやすい。 |
|---|---|
| go.mod で依存を固定。再現性が高い。 | |
| 主なファイル | go.mod と go.sum |
go111moduleの同意語
- GO111MODULE
- Goのモジュールモードを制御する環境変数。値は on / off / auto。Go 1.11以降、依存関係の解決方法をモジュールモードで選択します。
- GO111MODULE環境変数
- GO111MODULEと同じ意味の別表現。Goのモジュールモードを切替える環境変数。
- Goのモジュールモード
- Goが go.mod によるモジュールを使うモードのこと。モジュールモードを有効にすると依存関係の解決やビルドの挙動が変わります。
- Goモジュールモード
- Goのモジュール機能を使うモードの言い方です。Go 1.11以降のモジュール機能を指します。
- モジュールサポートの有効化
- Goでモジュール機能を有効にする設定のこと。GO111MODULE=on のように設定します。
- Goのモジュール機能
- Goの依存関係をモジュールとして管理する機能の総称。go.modを用いて依存関係を解決します。
- Go1.11以降のモジュール機能
- Go 1.11以降に導入されたモジュール機能のこと。GO111MODULEで動作が制御されます。
go111moduleの対義語・反対語
- GO111MODULEオフ
- Goのモジュール機能を無効にして、従来のGOPATHベースの依存管理に戻す設定。GO111MODULE=off の状態を指す。
- GOPATHモード
- 従来のGOPATHベースのワークフローでモジュール機能を使わず、依存関係をGOPATH内で解決する状態。
- 非モジュールモード
- モジュール機能を使用せず、モジュール化の恩恵を受けない開発状態。実質的にはGOPATHモードに近い。
- 従来のGOPATH依存管理
- モジュールを使わず、GOPATHディレクトリ配下でコードと依存を管理する従来の方法。
go111moduleの共起語
- GO111MODULE
- Goのモジュール機能を有効化または無効化する環境変数。on に設定するとモジュールモード、off に設定すると GOPATH モードになることがあります。
- Goモジュール
- Goのパッケージ依存をモジュール単位で管理する仕組み。go.mod ファイルを核に動作します。
- モジュールモード
- Goがモジュールを使用する状態。依存関係は go.mod で管理され、 GOPATH に依存しません。
- go mod
- Goのモジュールを操作するコマンド群。依存関係の解決・更新・整合性チェックを行います。
- go mod init
- 新しいモジュールを初期化して go.mod を作成します。
- go mod tidy
- 使用されていない依存を削除し、必要な依存を追加して go.mod と go.sum を整えます。
- go mod vendor
- vendor ディレクトリを使って依存パッケージをベンダリングします。
- GOPROXY
- Go が依存パッケージを取得する際のプロキシ設定。ダウンロード元を指定します。
- GOPRIVATE
- プライベートリポジトリを対象にする設定。認証情報の取り扱いを指示します。
- GONOSUMDB
- SumDB の検証対象から除外するモジュールを指定します。特定のモジュールを署名データベースの検証対象外にします。
- go env
- Go の環境変数を表示・変更するコマンド。GO111MODULE の状態を確認するのにも使います。
- GOFLAGS
- go コマンドへ渡す追加のフラグ。開発環境での挙動を調整します。
- GOWORK
- Go ワークスペース機能の設定。複数モジュールを同時に扱う場面で使われます。
- modファイル
- go.mod のこと。モジュールの名前や依存関係を記述するファイル。
- go.sum
- 依存モジュールの検証用ハッシュを記録したファイル。依存の整合性を検証します。
- module
- Goモジュールの基本単位。依存関係を一つのまとまりとして扱います。
- GOPATH
- 従来のGoの作業ディレクトリ。モジュールモード時でも補助的に影響します。
- vendorフォルダ
- 依存パッケージをローカルに格納して配布するためのディレクトリ。
- sumdb
- Goの依存パッケージの署名データベース。依存の整合性検証を行います。
- proxy
- Go の依存パッケージ取得元の総称。公式の proxy.golang.org をはじめとしたプロキシ設定を含みます。
go111moduleの関連用語
- GO111MODULE
- Go のモジュール機能を有効化・無効化する環境変数。値は on、off、auto の3択。on はモジュールモードを強制、off は GOPATH モード、auto は状況に応じて自動判断します。
- go.mod
- モジュールの宣言ファイル。モジュール名、Go のバージョン、依存関係の require などを記述します。
- go.sum
- 依存関係の検証用のチェックサムを保存するファイル。ダウンロード時の整合性を保証します。
- GOPATH
- 従来のワークスペースのベースディレクトリ。Go 1.11 以降も共存しますが、モジュールが主流になる現在は必須ではありません。
- GOMODCACHE
- モジュールのキャッシュディレクトリ。ダウンロード済みモジュールを再利用する場所です。
- GOPROXY
- モジュールを取得する代理サーバーの設定。公式 proxy.golang.org やミラー・プライベートリポジトリを指定できます。
- GOSUMDB
- モジュールのチェックスサムデータベースの URL。sum.golang.org など、モジュールの整合性を検証します。
- sum.golang.org
- 公式のモジュールチェックスサムデータベースの実体。GOSUMDB が参照します。
- module
- go.mod ファイル内で宣言されるモジュールの名前。例: github.com/your/project。
- require
- 依存しているモジュールとそのバージョンを宣言する指令。モジュールの直接的な依存を定義します。
- indirect
- 間接依存を示すフラグ。自分のモジュールが直接宣言していない依存です。
- direct
- 直接依存を示すフラグ。go.mod に直接記載されている依存です。
- replace
- 依存モジュールを別の場所・別のバージョンへ置換する指令。ローカルパスやフォーク版を指定できます。
- exclude
- 特定のモジュールバージョンを解決から除外する指示。衝突を回避するのに使います。
- pseudo-version
- タグが付いていないバージョンを go get で取得したときに付与される仮のバージョン番号。日付情報を含みます。
- セマンティックバージョニング
- Go Modules は SemVer に準拠します。vMAJOR.MINOR.PATCH の形式でバージョンを表現します。
- major-version
- メジャーバージョンの取り扱い。v2 以降はパスに /v2 などのサフィックスを付けて公開します。
- module-cache
- ダウンロード済みモジュールのローカルキャッシュ。デフォルトは GOMODCACHE、環境変数で変更可能。
- module-proxy
- モジュールを取得するためのプロキシ。公式・ミラー・プライベートの組み合わせで利用します。
- vendor
- vendor ディレクトリを使って依存関係をベンダー化する機能。オフライン環境で有用です。
- go mod init
- 新しいモジュールを初期化して go.mod を作成します。
- go mod tidy
- 使われている依存だけを残し、不要な依存を整理します(go.mod と go.sum を更新)。
- go mod download
- go.mod に記載された依存モジュールをダウンロードしてローカルに取得します。
- go mod graph
- 現在のモジュールとその依存関係のグラフを表示します。
- go mod why
- 特定のパッケージがなぜ依存しているのか、経路を表示します。
- go mod edit
- go.mod の内容を編集するコマンド。require、replace などを手動で変更します。
- go.work
- Go 1.18+ のワークスペース機能。複数モジュールをひとつの作業空間で管理します。
- GONOSUMDB
- 特定のモジュールを sumsdb の検証対象から除外する設定。
- GOPRIVATE
- プライベートモジュールをプロキシ経由で公開しないよう指定します。
- GOFLAGS
- go コマンドへ渡す共通フラグ。環境変数で複数の go コマンドに影響します。
- go env
- 現在の Go 環境設定を表示・取得するコマンド。GO111MODULE などを確認できます。
- go list
- パッケージリストを取得するコマンド。モジュール内・外のパッケージ情報を調べられます。
- mirror.golang.org
- Go のモジュールの公式ミラー。proxy.golang.org と併用して速度向上を図る場合に使われます。
- vgo
- Go 1.x 時代の仮称・初期プロジェクト名だった歴史的用語。現在はモジュール機能として Go Modules に置き換えられました。



















