概要
Bazel コミュニティでよいお年をお迎えください。新年には、2023 年のロードマップを詳しくお伝えする予定です。昨年、Bazel 6.0 の計画に関する 2022 年のロードマップを公開しました。このロードマップが、皆様のビルドツールのニーズについての参考になれば幸いです。皆様のニーズに応えて継続的に Bazel プロジェクトが進化していくにあたり、2023 年のアップデートについてお知らせいたします。
Google は、今回の変更により、オープンソース コミュニティに情報を提供し、誰もが一員になれるようにしたいと考えています。このロードマップでは、Bazel 開発の未来に関する現在のイニシアチブと予測について説明し、現在の優先事項と進行中のプロジェクトを明確にします。
Bazel 7.0 リリース
2023 年後半に Bazel 7.0 長期サポート(LTS)をリリースする予定です。Bazel 7.0 では、開発中のアイテムの多くを提供することを目指しており、ユーザーから要望のあった機能改善に継続的に取り組んでいます。
クロス プラットフォームでのキャッシュ共有の改善
主に Java/Kotlin と Android の開発において、キャッシュに保存されたアーティファクトを異なるビルド ローカル(Mac)とリモート(Linux)のビルド プラットフォーム間で共有できるため、パフォーマンスが向上し、キャッシュを効率的に使用できます。
Bazel を使用した Android アプリのビルド
マニフェストとリソース マージツールが v30.1.3 に更新され、Android アプリのデベロッパーは tools:node="merge" などの新しいマニフェスト マージ機能を使用できるようになりました。
リモート実行の改善
Bazel 7.0 は非同期実行をサポートしており、フラグ --jobs で並列処理を増やしてリモート実行を高速化します。
Bzlmod: 外部依存関係管理システム
Bzlmod は推移的依存関係を自動的に解決するため、高速でリソース効率を維持しながらプロジェクトをスケーリングできます。Bazel 7.0 では、Bazel の外部依存関係の管理機能に対して次のような機能強化が行われています。
- Bazel での外部依存関係の管理のため、Bzlmod がデフォルトで有効になっている
- ロックファイルのサポート - Bzlmod による密閉型ビルドが可能
- ベンダー/オフライン モードのサポート - ユーザーは事前にダウンロードされた依存関係を使用してビルドを実行可能
- リポジトリの完全なキャッシュのサポート(アーティファクトをダウンロードするだけでなく、最終的なリポジトリのコンテンツもキャッシュに保存)
- Bazel Central Registry では、コミュニティによる貢献と Bazel の主要なルールおよびプロジェクトの採用が定期的に行われています。
分析指標を構築する
Bazel 7.0 では、分析フェーズの時間指標が提供され、デベロッパーは独自のビルド パフォーマンスを最適化できます。
バイトをデフォルトでオンにせずにビルドする
バイトを使用しないビルドでは、中間アーティファクトのダウンロードを回避し、ビルドがネットワーク帯域幅のボトルネックになるのを防ぎ、パフォーマンスを最適化します。追加された機能は次のとおりです。
リース サービスによるリモート キャッシュ エビクションのサポート。これにより、アーティファクトが早期に強制排除されても、ユーザーがエラーが発生しなくなります。
シンボリック リンクのサポートにおける機能のギャップに対処する
リモート アクションから中間出力を取得するオプションを提供する
Skymeld で生産性を高める
Bazel 7.0 で導入された Skymeld は、マルチターゲット ビルドの所要時間を短縮する評価モードです。Skymeld は、特に複数のトップレベル ターゲットがあるビルドにおいて、分析フェーズと実行フェーズ間の障壁を取り除き、ビルド速度を向上させます。ただし、シングル ターゲット ビルドの場合、大きな違いはありません。
Bazel のエコシステムとツール
Bazel を使用した Android アプリのビルド
- Android のネイティブ ルールを Starlark に移行する: Bazel 7.0 では、開発を Bazel 自体から切り離して、コミュニティへの貢献を可能にするために、Android ルールを Starlark に移行しました。さらに、これらのルールをコア Bazel バイナリから独立させたため、リリース頻度が向上しました。
- Android ルールの Starlark への移行
- R8 のサポート: Android アプリ デベロッパーは、更新された R8 の最適化を使用できます。
- モバイル インストール: Android アプリのデベロッパーは、モバイル インストールの最新バージョンを使用して、Android アプリのあらゆる変更を迅速に開発、テスト、デプロイできます。
ソフトウェア部品構成表データ生成(SBOM)と OSS ライセンス コンプライアンス ツール
Bazel を使用すると、SBOM の作成に役立つデータを生成できます。このデータはテキスト形式または JSON 形式で出力され、SPDX または CycloneDX の仕様に合わせて簡単にフォーマットできます。また、このプロセスでは、Bazel モジュールが使用可能なライセンスを宣言するルールと、それらの宣言に関連するプロセスをビルドするためのツールも提供されます。GitHub で進行中の rules_license の実装を確認する。
署名付きビルド
Bazel は、Google の鍵で署名された Windows と Mac 用の信頼できるバイナリを提供します。この機能を使用すると、マルチプラットフォームのデベロッパー/開発オペレーション担当者が Bazel バイナリのソースを特定し、悪質な可能性のある未検証のバイナリからシステムを保護できます。
Java、C++、Python のルールを Starlark に移行
Java、C++、Python のルールセットの Starlark への完全移行。これにより、Bazel ユーザーはルールセットのみをフォークし、Bazel バイナリ コードベースをフォークできるようになります。これにより、ユーザーは次のことを行えるようになります。
- 必要に応じてルールの更新とカスタマイズを行う
- Bazel とは別にルールを更新する
Bazel-JetBrains* IntelliJ IDEA サポート
最新の JetBrains プラグイン リリースをサポートするための IntelliJ プラグインの増分アップデート。
このロードマップ スナップショットは目標であり、保証するものではありません。優先順位は、デベロッパーやお客様からのフィードバック、または新たな市場機会に応じて変更される場合があります。
Google グループ コミュニティに参加すると、このロードマップの更新などの新機能について通知を受け取ることができます。
*Copyright © 2022 JetBrains s.r.o. JetBrains および IntelliJ は JetBrains s.r.o の登録商標です。