Bazel の概要

Bazel は、Make、Maven、Gradle に似たオープンソースのビルドツールとテストツールです。 人間が読める高レベルのビルド言語を使用します。Bazel は 複数の言語のプロジェクトをサポートし、複数のプラットフォームの出力をビルドします。Bazel は、複数のリポジトリにまたがる大規模なコードベースと、多数のユーザーをサポートしています。

利点

Bazel には次のような利点があります。

  • 高レベルのビルド言語。Bazel は、抽象的で人間が読める 言語を使用して、プロジェクトのビルド プロパティを高い セマンティック レベルで記述します。他のツールとは異なり、Bazel はライブラリ、バイナリ、スクリプト、データセットの概念 で動作するため、コンパイラや リンカーなどのツールへの個々の呼び出しを記述する 複雑さから解放されます。

  • Bazel は高速で信頼性が高い。Bazel は以前の作業をすべてキャッシュに保存し、 ファイル コンテンツとビルドコマンドの両方の変更を追跡します。これにより、Bazel は再ビルドが必要なタイミングを把握し、その部分のみを再ビルドします。ビルドをさらに高速化するには、高度に並列化された増分方式でビルドするようにプロジェクトを設定します。

  • Bazel はマルチプラットフォーム。Bazel は Linux、macOS、Windows で実行されます。Bazel は、同じプロジェクトから、 パソコン、サーバー、モバイルなど、複数のプラットフォーム用のバイナリとデプロイ可能なパッケージをビルドできます。

  • Bazel はスケーラブル。Bazel は、10 万個以上の ソースファイルを含むビルドを処理しながら、アジリティを維持します。複数のリポジトリと数万 のユーザーベースで動作します。

  • Bazel は拡張可能。多くの言語が サポートされており、Bazel を拡張して他の言語や フレームワークをサポートできます。

Bazel の使用

Bazel でプロジェクトをビルドまたはテストするには、通常次の操作を行います。

  1. Bazel を設定する。Bazel をダウンロードしてインストールします

  2. プロジェクト ワークスペースを設定する。これは、Bazel がビルド入力と BUILD ファイルを検索し、ビルド出力を保存する ディレクトリです。

  3. BUILD ファイルを記述する。これは、ビルドする内容とビルド方法を Bazel に伝えます 。

    BUILD ファイルは、ドメイン固有言語である Starlark を使用してビルド ターゲットを宣言することで記述します。(例 は こちら

    ビルド ターゲットは、Bazel がビルドする入力アーティファクトのセットと その依存関係、Bazel がビルドに使用するビルドルール、ビルドルールを構成するオプション を指定します。

    ビルドルールは、Bazel が使用するビルドツール(コンパイラや リンカーなど)とその構成を指定します。Bazel には、サポートされているプラットフォームでサポートされている言語の最も一般的なアーティファクト タイプをカバーするビルドルールが多数用意されています。

  4. Bazel を実行するコマンド ラインから。Bazel は、ワークスペース内に出力 を配置します。

ビルドに加えて、Bazel を使用して テストを実行し、ビルドを クエリしてコード内の 依存関係をトレースすることもできます。

Bazel のビルドプロセス

ビルドまたはテストを実行すると、Bazel は次の処理を行います。

  1. ターゲットに関連する BUILD ファイルを読み込みます。

  2. 入力とその 依存関係を**分析** し、指定された ビルドルールを適用して、 アクション グラフを生成します。

  3. 最終的なビルド出力 が生成されるまで、入力に対してビルドアクションを**実行** します。

以前のビルド作業はすべてキャッシュに保存されるため、Bazel はキャッシュに保存された アーティファクトを識別して再利用し、変更された部分のみを再ビルドまたは再テストできます。正確性をさらに強化するには、サンドボックスを使用してビルドとテストを密閉的に実行するように Bazel を設定し、スキューを最小限に抑え、再現性を最大限に高めます。

アクション グラフ

アクション グラフは、ビルド アーティファクト、それらの関係、 Bazel が実行するビルドアクションを表します。このグラフにより、Bazel は ファイル コンテンツの変更と、ビルドコマンドやテストコマンドなどのアクションの変更を追跡し、以前に実行されたビルド 作業を把握できます。また、このグラフを使用すると、コード内の依存関係を簡単にトレース できます

チュートリアルのスタートガイド

Bazel の使用を開始するには、スタートガイドをご覧になるか、 Bazel チュートリアルに直接アクセスしてください。