GoLand 2026.3 Help

ビルド制約とベンダリング

ビルド制約とベンダリングモードは、ビルドプロセスを微調整するために使用できるツールです。 ビルド制約では、パッケージに含めるファイルを決定するルールを定義します。 ベンダリングモードを有効にすると、プロジェクト内に保存されている依存関係パッケージのみを使用してアプリケーションがビルドされるようになります。 このアプローチにより、パッケージに特定のファイルセットを含め、ローカルで変更またはパッチを適用した依存関係を使用できます。

ビルド制約

ビルド制約 (ビルドタグとも呼ばれる) は、パッケージにファイルが含まれる条件を概説する行コメントです。 これらのタグは、オペレーティングシステム、アーキテクチャ、Go バージョン、コンパイラー、cgo サポート、その他のターゲットシステムのニーズなどの要件を指定できます。 以下の例では、このファイルが次の基準を満たすターゲットシステム用であることを宣言しています。

  • // +build darwin,cgo linux はビルドタグの古い構文で、Go ではまだ認識されています。 次の 2 つの条件セットを指定します。

    • darwin,cgo: darwin プラットフォーム (macOS) 用にコンパイルするとき、および cgo が有効なときにビルドに含めます。 cgo を使用すると、Go プログラムに C コードを組み込むことができます。

    • linux: Linux プラットフォーム用にコンパイルするときに含めます。

    スペースは OR 演算子として機能します。つまり、ファイルは cgo が有効になっている macOS または Linux に含まれる必要があります。

  • //go:build (darwin && cgo) || linux は、Go 1.17 で導入されたビルドタグの新しい構文で、より明示的なブール式形式を使用します。

    • (darwin && cgo) || linux: このファイルは、cgo が有効になっている macOS のビルド、または上記の条件と同じ Linux のビルドに含める必要があります。

GoLand は、これらの制約を使用して、検証、解決、シンボル候補の際に無視すべきファイルを判断できます。 ファイルがターゲットシステムの要件を満たさない場合、GoLand が通知を表示します。

Go 1.17 以降では、 //go:build ディレクティブには、 //go:build linux などの制約が必要です。 制約が空の場合、GoLand はエラーを報告し、コメントを削除するクイックフィックスを提示します。 制約を追加するか、ディレクティブを削除します。

空の既存 // +build ディレクティブは // +build ignore と同じ意味です: ignore を カスタムタグ に追加しない限り、ファイルは除外されます。

プロジェクトのビルド制約を構成する

Go の go build コマンドは、 -tags 引数を通じてカスタムタグの使用を サポートしており、ビルド制約に基づいてファイルを条件付きでコンパイルできます。 これらのタグを使用すると、ビルドプロセスに含めるファイルの条件を指定できます。

Go ソースファイルでは、ファイルの先頭に // +build または //go:build ディレクティブとそれに続くカスタムタグを含むコメントを配置することで、ビルド制約を定義できます。

  1. 設定を開き(Ctrl+Alt+S)、 Go|ビルドタグ に移動します。

  2. ドロップダウンリストから、ターゲットシステムの期待値を選択します。 カスタムタグがある場合は、 カスタムタグ フィールドで指定します(タグとしてスペースを区切りとして使用します)。

  3. OK をクリックしてください。

Go 実験の使用

GoLand は Go ツールチェーンで有効化された実験を読み取り、それらを使用して goexperiment. ビルドタグを照合します。 デフォルトで有効化されている実験は、手動で入力する必要はありません。 自動検出には、信頼済みプロジェクトとダウンロード済みの Go SDK が必要です。

  1. Ctrl+Alt+S を押して設定を開き、 Go | ビルドタグ に移動します。

  2. 実験を有効化または無効化するには、 goexperiment. プレフィックスなしで 実験 に名前を入力します。 名前はコンマで区切ります。 ツールチェーンでサポートされている実験を無効化するには、名前の先頭に no を付けます。例: noswissmap。

    GoLand はこれらの値を Go ツールチェーンに渡します。 ツールチェーンの応答によって、どの実験ビルドタグが構成に一致するかが決まります。

ビルドタグフィールドの説明

ビルドタグまたは制約の詳細については、 pkg.go.dev でのビルド制約(英語)を参照してください。

フィールド

値

説明

オペレーティングシステム

linux、 windows

ターゲットオペレーティングシステムを選択します。 IDE は選択した値を Go に GOOS として渡します。

Go 1.19 以降では、 unix ビルド制約は、 linux、 darwin、 solaris などの Unix ターゲットに一致します。

アーキテクチャー

amd64、 arm64

ターゲット CPU アーキテクチャを選択します。 IDE は選択した値を Go に GOARCH として渡します。

Go バージョン

go1.N

指定したバージョン以降の Go リリースに一致します。 たとえば、 go1.22 は Go 1.22 以降に一致します。

コンパイラー

gc、 gccgo

利用可能な場合、コンパイラーを選択します。

CGO サポート

cgo、 !cgo

cgo サポートが有効化されているかどうかに一致します。 IDE は選択した設定を Go に CGO_ENABLED として渡します。

カスタムタグ

カスタムタグ名

//go:build コメント行によって導入されたカスタムタグに一致します。

たとえば、 //go:build integration 制約を持つファイルを含めるには、 integration を追加します。

実験

実験名

Go ツールチェーンの実験を有効化または無効化します。 IDE は選択した値を Go に GOEXPERIMENT として渡します。

これらの値は、環境ですでに設定されている GOEXPERIMENT 値の後に続きます。 Go はこれらを左から右に適用するため、実験の最後の値が有効になります。 たとえば、このフィールドの noswissmap は、実行構成の GOEXPERIMENT=swissmap をオーバーライドします。

ビルド制約に複数の条件を使用する

次の表では、条件で AND と OR を使用する場合の既存のビルド制約構文と現在のビルド制約構文を比較します。

// +build

//go:build

// +build darwin,cgo linux

コンマ(論理積として)と空白(論理和として)

//go:build (darwin && cgo) || linux

&& オペレーター (論理 And) および || オペレーター (論理 Or)

ベンダリング

ベンダリングモードを有効にして、プロジェクト内の vendor ディレクトリに格納されている依存関係パッケージのみを使用してアプリケーションを構築します。 このモードでは、Go コマンドは go.mod の依存関係の説明を無視し、 vendor ディレクトリに依存関係の正しいコピーがあると見なします。 デフォルトでは、Go モジュールを使用すると、 vendor ディレクトリはビルド中に無視されます。

Go 1.14 RC では、自動ベンダリングモードが Go の組み込み機能になりました。 Go 1.14 RC 以降、GoLand でもデフォルトで自動ベンダリングモードが有効化されます。 たとえば、別の言語で使用されている vendor フォルダーを含むモノリポジトリがある場合、プロジェクトごとにベンダリングを無効にすることができます。

ベンダリングサポートを自動的に有効にする チェックボックスを使用して自動ベンダリングを制御できます。 チェックボックスを選択すると、自動ベンダリングが有効になります。 vendor ディレクトリをモジュールに追加すると、IDE はそれを使用します。 ディレクトリを削除すると、GoLand はグローバル Go モジュールキャッシングを使用します。

ベンダリングモードを切り替える

  1. Ctrl+Alt+S を押して設定を開き、 Go | Go モジュール を選択します。

  2. ベンダリングサポートを自動的に有効にする チェックボックスをオフまたは選択して、 OK をクリックします。

2026 年 11 月 6 日