2.

Goの主要コマンド一覧|go mod・go build・protocの使い方まとめ

編集
この記事の要点
  • このページは Go の主要コマンドの目次。各コマンドの役割を簡潔にまとめ、詳しい使い方は個別記事へリンクしている。
  • Go のコマンドは go という1つのツールにサブコマンドがぶら下がる形式で、go buildgo rungo test のように go サブコマンド と書いて実行する。
  • 大きく分けると、依存管理の go mod 系go mod init / tidy / download)、ビルド・実行の go build / go run / go test、そして コード生成go generateprotoc 連携)の3グループで捉えると整理しやすい。
  • 各コマンドのオプションや具体例は重複を避けるため、下表の詳細リンク先で個別に解説している。
  • コマンドの一覧は端末で go help を実行すると確認できる。挙動はバージョンにより差があるため、利用環境の公式情報も併せて確認すること。

Go の開発作業は、go コマンドという単一のツールを通して行う。依存パッケージの管理、ビルド、テスト、コード生成まで、ほとんどの操作が go サブコマンド という形にまとまっているのが特徴である。このページでは、よく使う Go のコマンドを役割ごとに一覧し、それぞれの詳しい使い方は個別記事へ案内する。

まずは全体像をつかむため、代表的なコマンドを表にまとめる。詳細リンクがあるものは、構文・オプション・具体例をそのリンク先で個別に解説している。

主要コマンド一覧

分類 コマンド 概要 詳細
モジュール go mod init 新しいモジュールを作成し、依存情報を管理する go.mod ファイルを生成する。 go mod init
モジュール go mod tidy ソースを走査し、不足する依存の追加と不要な依存の削除を行って go.mod / go.sum を整える。 go mod tidy
モジュール go mod download go.mod に記載された依存モジュールをローカルのキャッシュへダウンロードする。 go mod download
ビルド go build パッケージをコンパイルして実行可能ファイルを生成する。配布や本番デプロイ用のバイナリ作成に使う。 go build
ビルド go run バイナリを残さずにソースをコンパイルしてその場で実行する。動作確認や小さな試作に向く。
テスト go test _test.go ファイルのテスト関数を実行する。ベンチマークやカバレッジ計測にも対応する。
概念 package コマンドではなく、Go のコードをまとめる単位を表すキーワード。各ファイル先頭の package 名 宣言で所属を示す。 go package
コード生成 protoc Protocol Buffers の定義から Go のコードを生成する外部コンパイラ。go generate と組み合わせて使うことが多い。 protoc

なお go rungo test は Go 開発で日常的に使う基本コマンドのため概要のみ掲載している。表の protocgo のサブコマンドではなく外部ツールだが、Go のコード生成でよく登場するため一覧に含めた。

go modules 関連のコマンド

Go の依存管理は モジュール(modules) という仕組みで行う。プロジェクトのルートに置く go.mod がモジュール名と依存ライブラリ・バージョンを記録し、go.sum が各依存の検証用ハッシュを保持する。これらを操作するのが go mod 系のサブコマンドである。

# 新規モジュールを作る(go.mod を生成)

go mod init example.com/myapp

 

# 依存を整理する(不足を追加・不要を削除)

go mod tidy

 

# 依存モジュールをキャッシュへ取得する

go mod download

おおまかな流れとしては、最初に go mod init でモジュールを作成し、開発を進めながら go mod tidy で依存を整える、という使い方が基本になる。go mod download は、CI やコンテナのビルドなどであらかじめ依存を取得しておきたい場面で使うことが多い。それぞれの細かいオプションや挙動は上表の各詳細リンクを参照してほしい。

ビルド・実行・コード生成のコマンド

ソースを動かす段階では、用途に応じて go buildgo run を使い分ける。

# 実行可能ファイルを生成する

go build

 

# ビルドせずにその場で実行する

go run main.go

 

# テストを実行する

go test ./...

配布や本番に置くバイナリが必要なら go build、手元での動作確認なら go run、品質確認には go test という対応になる。go build の出力先指定やビルドオプションは詳細記事で扱う。

コード生成では、go generate がソース内のコメントに書いた生成コマンドをまとめて実行する仕組みを提供する。代表例が Protocol Buffers で、.proto 定義から Go の型を作る際に外部コンパイラ protoc を呼び出す。

# .proto から Go コードを生成する(例)

protoc --go_out=. ./api/service.proto

生成系は別途プラグインのインストールが必要になるなど準備があるため、具体的な手順は protoc の記事で解説する。Go のコードを package 単位でどう構成するかについては go package を参照するとよい。

よくある質問(FAQ)

Q. go buildgo run は何が違いますか?
A. go build は実行可能ファイル(バイナリ)を生成して残すのに対し、go run はバイナリを残さずにその場でコンパイルして実行します。配布や本番デプロイには go build、手元での動作確認や試作には go run が向いています。詳しくは go build を参照してください。

Q. 利用できるコマンドの一覧はどこで確認できますか?
A. 端末で go help を実行すると、利用できるサブコマンドの一覧が表示されます。個別のコマンドについては go help build のように続けて指定すると、そのコマンドの説明が確認できます。コマンドの種類や挙動は Go のバージョンによって差があるため、利用している環境の公式ドキュメントも併せて確認してください。

編集
Post Share
子ページ
  1. go mod init
  2. go mod tidy
  3. go mod download
  4. go build
  5. go_package
  6. protoc
同階層のページ
  1. エラー一覧
  2. コマンド・ディレクティブ一覧

最近更新/作成されたページ