Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin2.0対応などでビルド時間を45%削減したぞ!

 Kotlin2.0対応などでビルド時間を45%削減したぞ!

napplecomputer

August 09, 2024
Tweet

More Decks by napplecomputer

Other Decks in Technology

Transcript

  1. © GO Inc. • @napplecomputer • なっぴー • GO株式会社 •

    タクシーアプリ『GO』 • このあと静岡に帰ります 2 自己紹介
  2. © GO Inc. • ビルド速度遅くね? • 並列ビルドの改善 • kaptのksp化 •

    DataBinding対応 • Kotlin 2.0対応 • 結果 • まとめ 3 目次
  3. © GO Inc. • 多くのモジュールが依存しているモジュール ◦ 未整理の実装をあるべき場所に切り出し、ほと んどのモジュールが依存している部分を⼩さく する •

    多くのモジュールを依存しているモジュール ◦ 依存性の逆転や実装の⾒直しで依存を減らす 16 並列ビルドの改善
  4. © GO Inc. 19 kaptのksp移行 • Hilt • Room •

    Moshi • DataBinding • PermissionDispatcher • DataBinding • PermissionDispatcher • Hilt • Room • Moshi kapt kapt ksp
  5. © GO Inc. 23 kaptのksp移行 • Hilt • Room •

    Moshi • DataBinding • PermissionDispatcher • DataBinding • PermissionDispatcher • Hilt • Room • Moshi kapt kapt ksp
  6. © GO Inc. 24 kaptのksp移行 • Hilt • Room •

    Moshi • DataBinding • PermissionDispatcher • DataBinding • PermissionDispatcher • Hilt • Room • Moshi kapt kapt ksp こっちのほうが速い
  7. © GO Inc. 25 kaptのksp移行 • Hilt • Room •

    Moshi • DataBinding • PermissionDispatcher • DataBinding • PermissionDispatcher • Hilt • Room • Moshi kapt kapt ksp こっちのほうが速い kspのみ > kaptのみ > kaptとksp混在
  8. © GO Inc. • kaptだけに戻すか、ksp移⾏を進めるか • このとき並⾏してKotlin 2.0移⾏を進めており、 Kotlin 2.0ではkaptが使えないことがわかっていた

    • ビルド時間改善だけでなくKotlin 2.0移⾏の観点で もkaptを完全にksp移⾏することを⽬標に 26 kaptのksp移行
  9. © GO Inc. • くぼぼさんの移⾏ツールを使う⽅針に決定 • DataBindingハンターを募り⼿分けをして DataBinding殺しを実⾏ • ハンターのおかげで短期間でDataBinding移⾏が

    完了 • QAはしっかり⽬にやったほうがいいです ◦ DataBinding移⾏関連で不具合が結構出ました 42 DataBinding対応
  10. © GO Inc. • Kotlin 2.0からCompilerがK2 Compilerに変わる ことでビルド速度が向上する(はず) • いずれライブラリ都合などでもKotlin

    2.0が必要に なりそう • 早めに対応してビルド速度向上の恩恵を享受したい • マイグレーションガイドが公式に出ている 44 Kotlin 2.0対応
  11. © GO Inc. • kaptが使えないので以下の対応をする必要がある ◦ ksp化 ◦ kspに対応していないライブラリを外す •

    Compilerが変わったことで型推論が賢くなってお り、Warningが出まくるのでその対応 ◦ allWarningsAsErrors = trueしているとビルド が通らない 46 Kotlin 2.0対応
  12. © GO Inc. • モジュール内でkaptとkspが混在すると遅くなる事 がある • ⼀部だけksp移⾏する場合はビルド速度を確認すべ き •

    DataBindingを剥がすのは画⾯数が多いアプリで は⾮常に困難 • kaptの削除さえできていればKotlin 2.0対応は楽勝 51 まとめ