Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
7.2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
K2への完全移行結果 / Results of complete migration to K2
https://potatotips.connpass.com/event/307311/
Masatoshi Kubode
February 07, 2024
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
AIチャットの改善から見えた、良いAI体験とは / What Constitutes a Good AI Experience: Insights from Improving AI Chat
kubode
0
160
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
250
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.4k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
740
技術を根付かせる / How to make technology take root
kubode
1
510
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
650
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
240
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.5k
Other Decks in Programming
See All in Programming
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
300
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
610
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
480
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
210
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
What's New in Android 2026
veronikapj
0
250
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.4k
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
380
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
310
Android CLI
fornewid
0
210
Featured
See All Featured
Technical Leadership for Architectural Decision Making
baasie
3
470
sira's awesome portfolio website redesign presentation
elsirapls
0
320
Thoughts on Productivity
jonyablonski
76
5.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
480
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
210
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Utilizing Notion as your number one productivity tool
mfonobong
4
520
Designing Powerful Visuals for Engaging Learning
tmiket
1
480
KATA
mclloyd
PRO
35
15k
My Coaching Mixtape
mlcsv
0
210
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.