go111moduleとは?初心者でも分かるGoの新しいモジュール仕組み共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
go111moduleとは?初心者でも分かるGoの新しいモジュール仕組み共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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 の基本を抑えると理解が深まります。

モジュールの要点を表で確認

<th>モジュール
従来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 に置き換えられました。

go111moduleのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14950viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2453viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1094viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1074viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
961viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
923viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
883viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
863viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
816viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
814viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
742viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
722viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
625viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
623viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
611viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
564viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
547viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
522viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
512viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
489viws

新着記事

インターネット・コンピュータの関連記事