はじめに
Jetpack Composeを使用しているプロジェクトで、依存関係のバージョンを確認しようとしたことはありませんか?例えば、androidx.compose.ui
やandroidx.compose.material
のバージョンを確認しようとした際に、明示的なバージョン指定が見当たらず困惑することがありませんか?
Jetpack Composeのバージョンを確認しようとしたら…
1. libs.versions.toml
を確認
Jetpack Composeのバージョンを確認するために、libs.versions.toml
ファイルを開いて依存関係を確認しました。
[libraries]
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
しかし、ここにはバージョン番号が記載されていません。通常であれば、version.ref = "compose"
のようなバージョン番号が指定されているはずですが、見当たりません。
2. プロジェクト全体を調査
次に、プロジェクト全体を調査して、どこかでバージョンが指定されていないか探しました。その結果、以下のような記述を発見しました。
dependencies {
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
}
ここで、platform(libs.androidx.compose.bom)
という記述がありました。この記述が、Jetpack Composeのバージョンを一括管理している compose-bom
です。
compose-bomとは?
compose-bom
は、Jetpack Compose関連の依存関係のバージョンを一括で管理するための BOM(Bill of Materials) です。BOMを使用すると、複数の依存関係に対して個別にバージョンを指定する必要がなくなり、すべての依存関係が同じバージョンで統一されます。
compose-bomの仕組み
compose-bom
を使用すると、以下のように依存関係のバージョンを明示的に指定しなくても、BOMで指定されたバージョンが適用されます。
[versions]
composeBom = "2025.04.01"
[libraries]
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } // BOMを追加
androidx-ui = { group = "androidx.compose.ui", name = "ui" } // バージョンはBOMで管理
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } // バージョンはBOMで管理
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } // バージョンはBOMで管理
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } // バージョンはBOMで管理
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } // バージョンはBOMで管理
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } // バージョンはBOMで管理
androidx-material3 = { group = "androidx.compose.material3", name = "material3" } // バージョンはBOMで管理
この場合、compose-bom
のversion.ref = "composeBom"
がすべてのCompose関連ライブラリに適用されます。
compose-bomを使用するメリット
-
バージョンの一括管理
- BOMを使用すると、Jetpack Compose関連の依存関係のバージョンを一括で管理できます。これにより、複数の依存関係を追加する際にバージョンを個別に指定する必要がなくなります。
-
一貫性の確保
- BOMを使用すると、すべてのCompose関連ライブラリが同じバージョンで統一されるため、互換性の問題を防げます。
-
メンテナンス性の向上
- バージョンを更新する際に、BOMのバージョンを変更するだけで済むため、メンテナンスが簡単になります。
BOMのバージョンを確認する方法
Jetpack Composeの最新のBOMバージョンを確認するには、以下の公式リソースを利用できます。
注意点
-
BOMを使用しない場合のリスク
- BOMを使用しない場合、依存関係のバージョンが異なることで互換性の問題が発生する可能性があります。
問題例
[versions]
compose = "1.5.0"
material3 = "1.4.0"
[libraries]
androidx-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "compose" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3",version.ref = "material3" } // バージョンが異なる
このように異なるバージョンを指定すると、ランタイムエラーやビルドエラーが発生する可能性があります。
各librariesで最新のバージョン等も異なります。
まとめ
-
compose-bomとは:
- Jetpack Compose関連の依存関係のバージョンを一括で管理するためのBOM(Bill of Materials)。
-
メリット:
- バージョンの一括管理、一貫性の確保、メンテナンス性の向上。
-
注意点:
- BOMを使用しない場合、バージョンの不一致による問題が発生する可能性がある。
公式ページ