Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© 2024 Wantedly, Inc. Make your Android app into Multiplatform app DroidKaigi 2024 AfterNight 2024/10/10 ウォンテッドリー株式会社 久保出雅俊
Slide 2
Slide 2 text
© 2024 Wantedly, Inc. wantedly.com/id/kubode @swiz_ard @kubode
Slide 3
Slide 3 text
© 2024 Wantedly, Inc. 目的 クロスプラットフォーム開発の1つの可能性を紹介
Slide 4
Slide 4 text
© 2024 Wantedly, Inc. 1つの可能性 Compose Multiplatformにより、既存のAndroidアプリを段 階的にマルチプラットフォームアプリへ作り変えていく
Slide 5
Slide 5 text
© 2024 Wantedly, Inc. 1つの可能性 Compose Multiplatformにより、既存のAndroidアプリを段 階的にマルチプラットフォームアプリへ作り変えていく 👉 既存コードを活かしつつ、継続的にリリース可能
Slide 6
Slide 6 text
© 2024 Wantedly, Inc. Compose Multiplatformとは Jetpack ComposeのKotlin Multiplatform版 ● Composeとほぼ同じAPI ● Android互換を意識したAPI
Slide 7
Slide 7 text
© 2024 Wantedly, Inc. ● パッケージ名がandroidx.compose ● Lifecycle, ViewModel, Navigation ● Multiplatform Resources Compose MultiplatformのAndroidとの互換性
Slide 8
Slide 8 text
© 2024 Wantedly, Inc. Multiplatform Resources Androidのsrc/main/resをある程度そのまま Compose Multiplatformに持ち込める
Slide 9
Slide 9 text
© 2024 Wantedly, Inc. ● AndroidXのKotlin Multiplatform化 ○ Room, DataStore, Paging, etc. ● 各種KotlinライブラリのKMP化、CMP化 ○ Coil, Koin, etc. Compose Multiplatform以外の実現可能性
Slide 10
Slide 10 text
© 2024 Wantedly, Inc. つまり Compose Multiplatformにより、既存のAndroidアプリを段 階的にマルチプラットフォームアプリへ作り変えていく 👉 AndroidのコードがすべてKotlinで、UIがすべてJetpack Composeで、Android依存がほぼなく、すべてのライブラリが KMP対応していれば実現できるはず
Slide 11
Slide 11 text
© 2024 Wantedly, Inc. 実際に途中までやってみた
Slide 12
Slide 12 text
© 2024 Wantedly, Inc. 対象 android/sunflowerをiOSでも動作するようにしてみる 🍴 kubode/sunflower 理由 ● もともとがXMLだったものをCompose化したアプリ ● RoomやPagingなどKMP化したAndroidXを利用 ● ほどよいコード量とテストコード
Slide 13
Slide 13 text
© 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アプリとして動作させる
Slide 14
Slide 14 text
© 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アプリとして動作させる
Slide 15
Slide 15 text
© 2024 Wantedly, Inc. 達成できていること ✅ 各手順でAndroidアプリとしてビルド、テスト、動作 つまり… Compose Multiplatformにより、既存のAndroidアプリを段 階的にマルチプラットフォームアプリへ作り変えていく (ただしAndroidでのみ動作)
Slide 16
Slide 16 text
© 2024 Wantedly, Inc. 難点 iOSターゲットを追加すると…
Slide 17
Slide 17 text
© 2024 Wantedly, Inc. 現実の課題 ● Deeplink ● パフォーマンス ● 実施する価値 ● etc.
Slide 18
Slide 18 text
© 2024 Wantedly, Inc. まとめ ● クロスプラットフォーム開発の1つの可能性を紹介 ● Compose MultiplatformのAndroid互換性の良さ ● 個人的には可能性を感じるが、まだまだ早い手法 ○ Deeplinkやパフォーマンスの課題 ○ 時間が解決するはず