every Tech Blog

株式会社エブリーのTech Blogです。

Version Catalog への移行

DELISH KITCHEN の Android 版では、ライブラリ名を build.gradle に記載して管理していました。

// こんな感じ
implementation "androidx.media3:media3-exoplayer:$MEDIA3_VERSION"
implementation "androidx.media3:media3-exoplayer-hls:$MEDIA3_VERSION"
implementation "androidx.media3:media3-ui:$MEDIA3_VERSION"

ライブラリのバージョンだけは定数化されて別途取りまとめて管理していましたが、それも全てがまとまっているわけではなかったため、現在どのようなライブラリがどのバージョンで利用されているかが一目でわからない状態でした。
そこで、今後ライブラリの棚卸しを行いやすいように、また関係ライブラリを束ねて扱えるようにするため Version Catalog でとりまとめることにしました。

環境

  • Android Studio Giraffe | 2022.3.1
  • Gradle 8.0

やったこと

Android Developers に移行についての記事(※1)があり、そちらを参考に作業を行いました。
作業の流れは以下の通りです。

  1. libs.versions.toml ファイルとセクションの作成
  2. libs.versions.toml ファイルへライブラリの情報を記載
  3. 記載した情報を利用して gradle を修正

それぞれ詳細を見ていきましょう。

libs.versions.toml ファイルとセクションの作成

まずはルートの gradle ディレクトリ配下に libs.versions.toml という名前のファイルを作成します(※2)。

続いてこのファイル中に versions/libraries/bundles/plugins という 4 つのセクションを作成します。

この後、これらのセクションでは以下のような値を記載していきます。

  • versions
    • ライブラリのバージョン値
  • libraries
    • ライブラリのエイリアス名
  • bundles
    • 関係するライブラリたちを束ねたエイリアス名
  • plugins
    • プラグインのエイリアス名

libs.versions.toml ファイルへライブラリの情報を記載

各モジュールなどにある gradle ファイルを確認し、記載されているライブラリなどの情報を libs.versions.toml ファイルへ書き出していきます。
libs.versions.toml ファイルの各セクションに対して、以下のように記載していきます。

記載した情報を利用して gradle を修正

libs.versions.toml ファイルへ情報を集約した後はいよいよ gradle ファイルへ適用していくことになります。
apply plugin や implementation などをゴリゴリ書き換えていきましょう。

  • before

  • after

この際に利用する名称は libs.{セクション名}.{ハイフンをドットに変換したエイリアス名} となる点に注意が必要です。

どうなったか

これで libs.versions.toml ファイルを見るだけでどんなライブラリがどんなバージョンで使われているかを確認できるようになりました。
モジュールに散った gradle をあちこち開かなくてよくなり、今後のライブラリ棚卸しが楽になりました。
また、bundles のおかげで関連ライブラリをまとめて扱えることにより、必要なライブラリの記載が漏れたりバージョンの指定を誤ったりといったミスがなくなります。

まとめ

ポジティブな意見として、 Version Catalog は Android アプリ開発に必須な対応ではありませんが、対応することで1ファイルにライブラリ情報が集約されるため、今後のライブラリ管理が楽になると思います。
Version Catalog を用いることでは、特に関連ライブラリをbundleとして扱える点が便利と感じています。
今回、 libs.versions.toml ファイルという専用のファイルへまとめた方が gradle とは切り分けできてよいと考えて着手しましたが、他にも settings.gradle へまとめる方法(※3)も存在しています。
どちらの方法でも1ファイルに集約して管理できるという点はメリットであると思っています。

ネガティブな意見としては、ライブラリの管理の際にgradle以外にもtomlという登場人物が増えることが逆にちょっと嫌だという意見がありました。
また、エイリアス名の命名で名前被りを回避するためにハイフン刻みとするため、それによりエイリアス名が長くなることがあったとの意見もありました。
他に、 Version Catalog の補完やジャンプが行えない点が不便・・・だったのですが、この点含む Version Catalog に対するサポートはAndroid Studio Giraffeではいろいろと改善(※4)されていました。

最終的にはチームメンバみんなの理解を得ての採用となりますが、開発作業を楽にすることができる技術は今後も検討して取り入れていければと思っています。

参考