見出し画像

Now in REALITY Tech #14 Android KSP導入を試みた話

こんにちは、Androidエンジニアのtakashiです。最近オフィスにいるお花の親子の花弁が少なくなっていました。
今回のNow in REALITY Techでは、最近Stable版がリリースされたKSP (Kotlin Symbol Processing)というAndroidのライブラリの導入を検討した話を紹介します。

KSPとは…

Kotlin Symbol Processing (KSP) is an API that you can use to develop lightweight compiler plugins. KSP provides a simplified compiler plugin API that leverages the power of Kotlin while keeping the learning curve at a minimum. Compared to KAPT, annotation processors that use KSP can run up to 2x faster.
出典:https://github.com/google/ksp/blob/main/README.md
Kotlin Symbol Processing (KSP), our new tool for building lightweight compiler plugins in Kotlin, is now stable! KSP offers similar functionality to the Kotlin Annotation Processing Tool (KAPT), however it’s up to 2x faster, offers direct access to Kotlin language constructs, and offers support for multiplatform targets.
出典:stable版が公開された際のAndroid公式ブログ

KSPとはKotlinコンパイラの拡張機能を手軽に作るためのツールで、下記の特徴があります。
・KAPTと同様の機能を持つ
・KAPTに比べて最大2倍の速さ (本当…?)
REALITYのAndroidアプリではKAPTを利用しています。
Androidプロジェクトのビルド時間を調べると、KAPT関連で1分ほどかかっていることがわかりました。KAPTに比べ2倍の速さであるなら、ビルド時間を30秒ほど短縮できることになります。
これが実現できれば開発環境の大きな改善になるため、導入に向けて調査をすることになりました。

問題点

quickstartに沿って実際に調査を始めると、すぐにいくつかの問題点があることがわかってきました。
・KSPがサポートする別ライブラリの対応状況
READMEの対応ライブラリによると、REALITYのAndroidアプリで利用している画像関連のライブラリ"Glide"が現時点ではサポートされていませんでした。
またREALITYが利用しているData BindingライブラリもKAPTを利用しているのですが、こちらはこの表に含まれていませんでした。

画像1

・Kotlinのバージョンの問題
quickstartによると、Kotlinのバージョンは1.5.31を指定するように書いてあります。
一方Jetpack Composeが1.5.21以外で動かないことがわかっており、REALITYではKotlinのバージョンを1.5.21から上げられずにいました。
追記
この記事を書いている間にJetpack Compose 1.0.3がリリースされ、Kotlin のバージョンが1.5.30を要求されるようになりました。
バージョンが近づいたので再挑戦しようかと思っています。

結論

これらの問題点があることが判明し、REALITYでは一旦KSPの導入を見送る事になりました。
KAPTと比べて2倍の速さというのは非常に魅力的なので、上記の問題が解消する頃再び導入を試してみたいと思います。

REALITYでは現在一緒に働く仲間を積極的に募集しています。
新しいライブラリを試してみることが好きな人はぜひカジュアル面談や募集に応募してみてください。