Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
K2への完全移行結果 / Results of complete migration to K2
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
200
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
280
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.4k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
750
技術を根付かせる / How to make technology take root
kubode
1
520
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
660
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
250
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.6k
Other Decks in Programming
See All in Programming
Family mrubyの進捗
kishima
1
110
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
110
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
270
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
150
新卒PdEのリアル
ryu1013
1
490
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
360
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
150
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
490
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
150
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
330
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
140
Heart of Swift Concurrency
koher
0
220
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
The Language of Interfaces
destraynor
162
27k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Scaling GitHub
holman
464
140k
What's in a price? How to price your products and services
michaelherold
247
13k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Design in an AI World
tapps
1
310
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
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.