見出し画像

Now in REALITY Tech #49 KSPでビルド時間改善 計測編

Androidエンジニアのtkcです。
なつやすみは伊香保温泉にいきました。
雰囲気のある温泉街でとても良かったです。

今回は多くのモジュールでkaptからKSPに移行したことでどれだけビルド時間が改善されたかを見ていきます。

前回のあらすじ

単一のモジュールに導入できるところまで検証した。
kaptからKSPに移行することでビルド速度がちゃんと早くなることを確認した。

今回やったこと

今回、25個のモジュールでkaptへの依存をやめ、
必要であればKSPに移行しました。
これで全体では50以上あるモジュールの中でkaptに依存しているものは残り4つとなりました。
この4つはGlideなどに依存しており、
単純にKSPに置き換えるだけではビルドが通らなかったので
別の機会に移行する運びとなりました。
この状態で、どれだけビルド時間が改善されたかを計測していきます。

計測する

計測方法としてはローカルのPCで

./gradlew assembleDebug

の実行にかかる時間を計測しました。
具体的にはcleanしてからビルドを実行するスクリプトを作り、
PCで他の作業をしないで複数回計測をしました。

./gradlew clean 
./gradlew assembleDebug

またREALITYではキャッシュを利用して普段のビルドを高速化するためgradleのビルドキャッシュが有効化されていますが、
これでは計測がうまく行かないのでgradle.propertiesの

org.gradle.caching=true

をコメントアウトしてgradleのキャッシュを無効化しました。

計測結果

10回ずつ計測した結果の平均は
移行前219.5s 移行後203s でした。
15秒以上高速化することができました。

まとめ

大半のモジュールでkaptからKSPに移行した結果、ビルド時間を改善することができました。
REALITYのプロジェクトでは割合にして7%の高速化が実現されました。
今後新しいプロジェクトではKSPを利用したほうがよく、既存のkaptを利用しているプロジェクトでもKSPに移行することでビルド時間を改善できることが確認できました。
一方で、GlideやRoomやDataBindingなどの対応ができておらず、4つのモジュールがkaptに依存しています。
これらをKSP移行ができるとプロジェクトからkaptの依存を全てなくすことができるので、最終的にはここを目指してKSP移行を進めていきたいと考えています。

REALITYでは一緒に働く仲間を募集しております。
今回の記事のように、機能開発だけではなく開発環境の改善にも業務として取り組める環境があります。
興味がある方は下記リンクからぜひご応募ください!