Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
K2への完全移行結果 / Results of complete migration to K2
Search
Masatoshi Kubode
February 07, 2024
Programming
2
6.8k
K2への完全移行結果 / Results of complete migration to K2
https://potatotips.connpass.com/event/307311/
Masatoshi Kubode
February 07, 2024
Tweet
Share
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.2k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
610
技術を根付かせる / How to make technology take root
kubode
1
420
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
530
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.3k
Make your Android app into Multiplatform app
kubode
0
180
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.3k
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
980
Mobile Chapterが目指すところと技術 / Vision and Technology of Mobile Chapter at Wantedly
kubode
0
380
Other Decks in Programming
See All in Programming
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
490
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
240
dotfiles 式年遷宮 令和最新版
masawada
1
610
tparseでgo testの出力を見やすくする
utgwkk
1
120
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
4k
FluorTracer / RayTracingCamp11
kugimasa
0
180
GeistFabrik and AI-augmented software development
adewale
PRO
0
240
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
6
1.2k
CSC509 Lecture 14
javiergs
PRO
0
220
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
210
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
4
1.9k
関数実行の裏側では何が起きているのか?
minop1205
1
410
Featured
See All Featured
Building an army of robots
kneath
306
46k
Raft: Consensus for Rubyists
vanstee
140
7.2k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
A better future with KSS
kneath
240
18k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
Rails Girls Zürich Keynote
gr2m
95
14k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
KATA
mclloyd
PRO
32
15k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Visualization
eitanlees
150
16k
Transcript
© 2024 Wantedly, Inc. K2への完全移行結果 potatotips 86 2024/02/07 久保出雅俊
© 2024 Wantedly, Inc. wantedly.com/id/kubode X: @swiz_ard GitHub: @kubode
© 2024 Wantedly, Inc. 紹介 Wantedly Visit iOS, Android and
Web 気軽に会社訪問 ミッションや価値観への共感でマッチング • 給与や福利厚⽣などの条件ではなく、想いがあれば会社 の規模にとらわれない まず「話を聞きに⾏く」という新しい体験 • 個⼈と企業がフラットな⽬線で出会えることで、より魅 ⼒的な場所を⾒つけることが可能に
© 2024 Wantedly, Inc. 話すこと • K2完全有効化までの道のり • K2化を始める前との比較
© 2024 Wantedly, Inc. K2とは
© 2024 Wantedly, Inc. K2 • Kotlin 2.0のコンパイラー実装のこと • Kotlinのコードのコンパイル速度が最大2倍
• Kotlin 2.0の言語機能追加に対応しやすい • Kotlin 1.9から実験的に有効化できる
© 2024 Wantedly, Inc. K2を使うには • gradle.propertiesに以下を追加 kotlin.experimental.tryK2=true kapt.use.k2=true android.lint.useK2Uast=true
© 2024 Wantedly, Inc. これだけ
© 2024 Wantedly, Inc. と思ったら
© 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.
© 2024 Wantedly, Inc. K2移行プロジェクト
© 2024 Wantedly, Inc. K2に必要なこと • kapt -> KSP ◦
Dagger Hilt ◦ Room ◦ 自作のコード生成 • Data Binding
© 2024 Wantedly, Inc. kapt -> KSP • HiltやRoomは特に問題なし •
自作のコード生成はKSPに書き換え ◦ インターフェースは大きく変わるが、コードを生成するロジックは変更なし
© 2024 Wantedly, Inc. Data Bindingの移行
© 2024 Wantedly, Inc. Data Bindingの移行 https://speakerdeck.com/kubode/easier-migration-of-data-binding 具体的な手法は 過去の発表で
© 2024 Wantedly, Inc. Data Bindingの移行 • 移行ツールを作成、作業を大きく減らす • 単純作業化して分担
• 品質はレビューよりも自動テストとQAに委ねる
© 2024 Wantedly, Inc.
© 2024 Wantedly, Inc.
© 2024 Wantedly, Inc. 前後比較
© 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
© 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
© 2024 Wantedly, Inc. --scan Before After この辺を並列化しないと効果が薄い
© 2024 Wantedly, Inc. まとめ
© 2024 Wantedly, Inc. まとめ • K2について説明 • kaptというかData Bindingが大変
• ビルド時間は改善するが改善の余地あり ◦ 並列化の効率を上げるほうが効果が高い • Kotlin 2がきても安心
© 2024 Wantedly, Inc.