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 チュートリアルに直接アクセスしてください。