💥

Jetpack ComposeのBomとは?

2025/01/04に公開

Jetpack Composeプロジェクトを新規作成すると、compose-bomというライブラリがデフォルトでGradleの依存関係に追加され、なぜこちらのライブラリが追加されているか気になったので調べてみました。

Bomとは?

簡単に説明すると、BomはComposeライブラリのバージョンをまとめて管理できる仕組みです。Bomのバージョンを指定するだけで、Compose関連の各ライブラリの互換性が保証されたバージョンを一括で適用できるようになります。そのため、個別にライブラリごとにバージョンを指定して管理する手間が省けます。

https://developer.android.com/develop/ui/compose/bom?hl=ja

例えば、FlutterでFirebaseを使ったことがある方なら、firebase_coreのバージョンを上げたらfirebase_authと互換性がなくなってビルドエラーが出てしまい、ドキュメントを見ながら対応するといった経験があるかもしれません。Firebase関連のパッケージが少なければまだ対応は楽ですが、複数のパッケージを組み合わせていると結構面倒です。

Composeでも同じように複数のライブラリを組み合わせて使うことが多いですが、Bomを使えば各ライブラリを個別に指定する必要がなく、互換性が取れた状態で簡単に導入できるのでとても便利です。

下記のドキュメントを確認すると各ComposeライブラリのバージョンとBomの対応バージョンを確認することができます。
https://developer.android.com/develop/ui/compose/bom/bom-mapping?hl=ja

ライブラリの追加方法については下記記事で解説されているので確認してみると良いかと思います。
https://tech.mokelab.com/android/compose/add_library_bom-ja.html

そもそもComposeライブラリとは?

ComposeライブラリはJetpack Composeを構成する複数のモジュールの総称です。それぞれが特定の機能を担当しており、たとえば、画面の基本的な要素を提供するcompose.uiや、マテリアルデザイン対応のUIコンポーネントを提供するcompose.material、スクロールやジェスチャーなどの操作を扱うcompose.foundationなどがあります。

https://developer.android.com/jetpack/androidx/releases/compose?hl=ja

参考

https://developer.android.com/develop/ui/compose/bom?hl=ja
https://developer.android.com/develop/ui/compose/bom/bom-mapping?hl=ja
https://developer.android.com/jetpack/androidx/releases/compose?hl=ja

Discussion