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
Make your Android app into Multiplatform app
Search
Masatoshi Kubode
October 10, 2024
Programming
0
120
Make your Android app into Multiplatform app
https://sansan.connpass.com/event/329244/
Masatoshi Kubode
October 10, 2024
Tweet
Share
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
170
技術を根付かせる / How to make technology take root
kubode
1
300
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
370
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.1k
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
900
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
650
Mobile Chapterが目指すところと技術 / Vision and Technology of Mobile Chapter at Wantedly
kubode
0
330
ウォンテッドリーでのKMPワークフロー / KMP workflow at Wantedly
kubode
0
1.7k
ComposeでのShared Element Transition / Shared Element Transition in Compose
kubode
0
500
Other Decks in Programming
See All in Programming
AtCoder Heuristic First-step Vol.1 講義スライド(山登り法・焼きなまし法編)
takumi152
3
960
Devin , 正しい付き合い方と使い方 / Living and Working with Devin
yukinagae
1
510
SideKiqでジョブが二重起動した事象を深堀りしました
t_hatachi
0
210
小さく段階的リリースすることで深夜メンテを回避する
mkmk884
2
120
remix + cloudflare workers (DO) docker上でいい感じに開発する
yoshidatomoaki
0
120
AI Agentを利用したAndroid開発について
yuchan2215
0
200
パスキーのすべて / 20250324 iddance Lesson.5
kuralab
0
110
リアクティブシステムの変遷から理解するalien-signals / Learning alien-signals from the evolution of reactive systems
yamanoku
2
850
보일러플레이트 코드가 진짜 나쁜 건가요?
gaeun5744
0
370
List とは何か? / PHPerKaigi 2025
meihei3
0
520
令和トラベルにおけるコンテンツ生成AIアプリケーション開発の実践
ippo012
1
250
Django for Data Science (Boston Python Meetup, March 2025)
wsvincent
0
220
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
35
3.2k
Optimizing for Happiness
mojombo
377
70k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Gamification - CAS2011
davidbonilla
80
5.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
490
Unsuck your backbone
ammeep
669
57k
Music & Morning Musume
bryan
46
6.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
7
610
Transcript
© 2024 Wantedly, Inc. Make your Android app into Multiplatform
app DroidKaigi 2024 AfterNight 2024/10/10 ウォンテッドリー株式会社 久保出雅俊
© 2024 Wantedly, Inc. wantedly.com/id/kubode @swiz_ard @kubode
© 2024 Wantedly, Inc. 目的 クロスプラットフォーム開発の1つの可能性を紹介
© 2024 Wantedly, Inc. 1つの可能性 Compose Multiplatformにより、既存のAndroidアプリを段 階的にマルチプラットフォームアプリへ作り変えていく
© 2024 Wantedly, Inc. 1つの可能性 Compose Multiplatformにより、既存のAndroidアプリを段 階的にマルチプラットフォームアプリへ作り変えていく 👉 既存コードを活かしつつ、継続的にリリース可能
© 2024 Wantedly, Inc. Compose Multiplatformとは Jetpack ComposeのKotlin Multiplatform版 •
Composeとほぼ同じAPI • Android互換を意識したAPI
© 2024 Wantedly, Inc. • パッケージ名がandroidx.compose • Lifecycle, ViewModel, Navigation
• Multiplatform Resources Compose MultiplatformのAndroidとの互換性
© 2024 Wantedly, Inc. Multiplatform Resources Androidのsrc/main/resをある程度そのまま Compose Multiplatformに持ち込める
© 2024 Wantedly, Inc. • AndroidXのKotlin Multiplatform化 ◦ Room, DataStore,
Paging, etc. • 各種KotlinライブラリのKMP化、CMP化 ◦ Coil, Koin, etc. Compose Multiplatform以外の実現可能性
© 2024 Wantedly, Inc. つまり Compose Multiplatformにより、既存のAndroidアプリを段 階的にマルチプラットフォームアプリへ作り変えていく 👉 AndroidのコードがすべてKotlinで、UIがすべてJetpack
Composeで、Android依存がほぼなく、すべてのライブラリが KMP対応していれば実現できるはず
© 2024 Wantedly, Inc. 実際に途中までやってみた
© 2024 Wantedly, Inc. 対象 android/sunflowerをiOSでも動作するようにしてみる 🍴 kubode/sunflower 理由 •
もともとがXMLだったものをCompose化したアプリ • RoomやPagingなどKMP化したAndroidXを利用 • ほどよいコード量とテストコード
© 2024 Wantedly, Inc. 手順 • [ ] KMPでないライブラリをKMPへ移行 ◦
Gson → KotlinX Serialization ◦ Retrofit → Ktor ◦ Glide → Coil ◦ Dagger → Koin • [ ] Compose Multiplatform化 ◦ res → Multiplatform Resources ◦ Navigation • [ ] iOSターゲットの追加 ◦ Androidネイティブなコードをexpect/actualでiOS用に書き直し ◦ iOSアプリとして動作させる
© 2024 Wantedly, Inc. 手順 • ✅ KMPでないライブラリをKMPへ移行 ◦ Gson
→ KotlinX Serialization ◦ Retrofit → Ktor ◦ Glide → Coil ◦ Dagger → Koin • ✅ Compose Multiplatform化 ◦ res → Multiplatform Resources ◦ Navigation • [ ] iOSターゲットの追加 ◦ Androidネイティブなコードをexpect/actualでiOS用に書き直し ◦ iOSアプリとして動作させる
© 2024 Wantedly, Inc. 達成できていること ✅ 各手順でAndroidアプリとしてビルド、テスト、動作 つまり… Compose Multiplatformにより、既存のAndroidアプリを段
階的にマルチプラットフォームアプリへ作り変えていく (ただしAndroidでのみ動作)
© 2024 Wantedly, Inc. 難点 iOSターゲットを追加すると…
© 2024 Wantedly, Inc. 現実の課題 • Deeplink • パフォーマンス •
実施する価値 • etc.
© 2024 Wantedly, Inc. まとめ • クロスプラットフォーム開発の1つの可能性を紹介 • Compose MultiplatformのAndroid互換性の良さ
• 個人的には可能性を感じるが、まだまだ早い手法 ◦ Deeplinkやパフォーマンスの課題 ◦ 時間が解決するはず