Bazelの概要
Bazel(バゼル)は、Google が社内開発に使用していた独自のビルドツールをオープンソース化したプロダクトです。ビルドツールとは、ソフトウェアの構築、テストを自動化することにより開発効率を高めることが出来るツールです。代表的なビルドツールとしては make、maven、gradle が挙げられます。ビルドのための手続きは Python の方言であるStarlark と呼ばれるスクリプト言語で記述します。
Bazelの特徴
- ビルドとテストの高速化
高度なローカルキャッシングと分散キャッシング、最適化された依存関係分析、および並列実行、インクリメンタルビルドにより、高速に必要な物だけビルドすることが出来ます。 - 複数の言語、環境に対応
BazelはWindows、macOS、Linux で動作し、Java、C++、Android、iOS、Goなどの様々な言語プラットフォームを対象としたテスト及びビルドが行えます。 - スケーラブル
継続的インテグレーションシステムや、複数のリポジトリまたは巨大なサイズのコードにも対応可能です。 - ニーズに合わせて拡張可能
コミュニティにより作成されたルールを追加することにより、対応する言語やプラットフォームを拡張することが出来ます。ルールとは Bazel 上での一連のアクションを定義したものです。
現在、推奨されているルール
- Android
- C / C++
- Docker
- Go
- Haskell
- Java
- JavaScript / NodeJS
- Kubernetes
- Maven dependency management
- Objective C
- Package building
- Protocol Buffers
- Python
- Scala
- Shell
- Webtesting (Webdriver)
Bazel の仕組み
Bazelは、ワークスペースと呼ばれるディレクトリ階層に配置されたソースコードよりソフトウェアのビルドを行います。ビルドはパッケージ単位で行われます。
WORKSPACEファイル:ワークスペースのルートディレクトリに置かれます。
BUILDファイル:パッケージはBUILDファイルで定義します。
Bazel の公式サイトには C++、Java、Android、iOSのチュートリアルが公開されています。
https://www.bazel.build/
Bazel の動作環境
Bazelは以下の環境にインストールできます。
公式パッケージ
- Ubuntu Linux
- macOS
- Windows
コミュニティがサポートするパッケージ
- Arch Linux
- Fedora 25, 26, 27, 28, and CentOS 7
- CentOS 6
- FreeBSD
- Gentoo
- Linuxbrew
- Nixpkgs
- openSUSE
- Parabola
- Scoop
- Raspberry Pi
コミュニティがサポートするアーキテクチャ
- ppc64le
Bazelと同様のビルドツール
Bazel 以外には以下のようなビルドツールがあります。
- make
- apache ant
- apache maven
- gradle
- Pants
- Buck
- Please
Bazelのライセンス
Bazel は、Apache2.0ライセンスです。
Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
Bazelのダウンロード
Bazelのダウンロードおよびインストール方法
https://docs.bazel.build/install.html
参考情報
Bazelのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。
・オープンソース年間サポートサービス