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

K2への完全移行結果 / Results of complete migration to K2

K2への完全移行結果 / Results of complete migration to K2

Masatoshi Kubode

February 07, 2024
Tweet

More Decks by Masatoshi Kubode

Other Decks in Programming

Transcript

  1. © 2024 Wantedly, Inc. 紹介 Wantedly Visit iOS, Android and

    Web 気軽に会社訪問 ミッションや価値観への共感でマッチング • 給与や福利厚⽣などの条件ではなく、想いがあれば会社 の規模にとらわれない まず「話を聞きに⾏く」という新しい体験 • 個⼈と企業がフラットな⽬線で出会えることで、より魅 ⼒的な場所を⾒つけることが可能に
  2. © 2024 Wantedly, Inc. K2 • Kotlin 2.0のコンパイラー実装のこと • Kotlinのコードのコンパイル速度が最大2倍

    • Kotlin 2.0の言語機能追加に対応しやすい • Kotlin 1.9から実験的に有効化できる
  3. © 2024 Wantedly, Inc. 落とし穴 • kaptはKotlin言語バージョン2でサポートされていない • kaptがある限り完全移行とは言えない >

    Task :features:discover:kaptGenerateStubsDebugKotlin w: Kapt currently doesn't support language version 2.0+. Falling back to 1.9.
  4. © 2024 Wantedly, Inc. K2に必要なこと • kapt -> KSP ◦

    Dagger Hilt ◦ Room ◦ 自作のコード生成 • Data Binding
  5. © 2024 Wantedly, Inc. kapt -> KSP • HiltやRoomは特に問題なし •

    自作のコード生成はKSPに書き換え ◦ インターフェースは大きく変わるが、コードを生成するロジックは変更なし
  6. © 2024 Wantedly, Inc. 前後比較 Data Binding移行開始前 VS K2有効化後 CPU:

    Apple M1 Max, Memory: 64GB • クリーンビルド ◦ $ ./gradlew clean && ./gradlew compileVisitQaDebugAndroidTestSources --no-daemon --no-build-cache --no-configuration-cache --max-workers=1 • --max-workers=1(並列ビルド無効) • --scan
  7. © 2024 Wantedly, Inc. ビルド時間 Before After % クリーンビルド 100s

    92s 8% 🎉 max-worker=1 191s 155s 19% 🎉 max-worker=1 Kotlin関連Taskのみ※ 177s 117s 34% 🎉 ※--scanあり、KotlinCompile&Kapt&Ksp
  8. © 2024 Wantedly, Inc. まとめ • K2について説明 • kaptというかData Bindingが大変

    • ビルド時間は改善するが改善の余地あり ◦ 並列化の効率を上げるほうが効果が高い • Kotlin 2がきても安心