IntelliJ IDEA 2026.1 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 のビルドに含める必要があります。

ビルド制約

IntelliJ IDEA は、これらの制約を使用して、検証、解決、シンボルの提案中にどのファイルを無視する必要があるかを決定できます。 ファイルがターゲットシステムの要件を満たしていない場合、IntelliJ IDEA は通知を表示します。 例: スクリーンショット上の次の条件は、 「プロジェクトのビルド制約を構成する」手順の設定と競合します。

ビルドの制約に関する通知

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

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

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

  1. 設定を開き(Ctrl+Alt+S)、 言語 & フレームワーク | Go ビルドタグ に移動します。

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

  3. OK をクリックします。

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

Go 実験の使用

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

  2. いずれかのフィールドに Go Experiments のタグを入力します。

    • カスタムタグ :次のフォーマットでタグの型を入力してください: goexperiment.rangefunc goexperiment.loopvar。 スペースを使用して、タグ同士を分離します。

    • 実験 :次のフォーマットでタグの型を入力してください: rangefunc, loopvar。 コンマを使用して、タグ同士を分離します。

    タグ名は対応するパッケージ内にあります。 たとえば、 iter パッケージにアクセスすると、 go:build タグの直後にタグ名が表示されます。 特に iter パッケージの場合、タグは goexperiment.rangefunc です。 カスタムタグ フィールドには完全なタグを入力し、 実験 フィールドには goexperiment. に続くセグメントのみを入力します。

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

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

Field

ビルドタグ

説明

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

GOOS

linuxwindows など、コードをコンパイルするオペレーティングシステムを指定します。

アーキテクチャー

GOARCH

amd64arm など、コードの CPU アーキテクチャを定義します。

Go バージョン

GOVERSION

インストールされている Go のバージョンを示します。 これは、 go version を実行したときに表示されるバージョンと同じです。

コンパイラー

ランタイムで使用可能なものに基づいて、 gccgogc などのコンパイラーを選択します。

CGO サポート

CGO_ENABLED

cgo が有効 (1) か無効 (0) かを示し、C コードを含めることができるかどうかに影響します。

カスタムタグ

//go:build コメント行によって導入されたビルドタグ。

例: 次のスクリーンショットでは、 goexperiment.rangefunc ビルドタグによって、 実験に移動(英語)の関数の反復処理が可能になります。

実験

GOEXPERIMENT

オンまたはオフにできる Go ツールチェーン実験のリスト。 主に Go 自体に取り組んでいる開発者向けです。

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

ビルド制約の新しい構文が導入されたため、複数の条件を使用する場合の 2 つの構文の違いを示す次の表を考慮してください。

//+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 以降、IntelliJ IDEA ではデフォルトで自動ベンダリングモードも有効になります。 たとえば、別の言語で使用されている vendor フォルダーを含むモノリポジトリがある場合、プロジェクトごとにベンダリングを無効にすることができます。

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

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

  1. Ctrl+Alt+S を押して設定を開き、 言語 & フレームワーク | Go | Go モジュール を選択します。

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

2026 年 3 月 30 日