ウォンテッドリーでのKMPワークフロー / KMP workflow at Wantedly
by
Masatoshi Kubode
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. ウォンテッドリーでの KMPワークフロー Mobile勉強会#14 2024/05/21 久保出雅俊
Slide 2
Slide 2 text
© 2024 Wantedly, Inc. wantedly.com/id/kubode @swiz_ard @kubode
Slide 3
Slide 3 text
© 2024 Wantedly, Inc. Agenda ● 弊社でのKMPのワークフローを紹介 ● チーム構成や現状に至った経緯
Slide 4
Slide 4 text
© 2024 Wantedly, Inc. Kotlin Multiplatform (KMP)
Slide 5
Slide 5 text
© 2024 Wantedly, Inc. Kotlin Multiplatform
Slide 6
Slide 6 text
© 2024 Wantedly, Inc. https://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html
Slide 7
Slide 7 text
© 2024 Wantedly, Inc. ウォンテッドリーでのKotlin Multiplatform
Slide 8
Slide 8 text
© 2024 Wantedly, Inc. 導入
Slide 9
Slide 9 text
© 2024 Wantedly, Inc. 共通化レベル
Slide 10
Slide 10 text
© 2024 Wantedly, Inc. Presentation Logic SearchReactor send(Action.Bookmark) state
Slide 11
Slide 11 text
© 2024 Wantedly, Inc. Repository構成 KMP iOS Android SwiftPM Maven Publish Publish
Slide 12
Slide 12 text
© 2024 Wantedly, Inc. Mobile Chapter チーム構成とコミット KMP iOS Android 専門性 iOS Android Commit Commit
Slide 13
Slide 13 text
© 2024 Wantedly, Inc. ワークフロー
Slide 14
Slide 14 text
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 KMP 内部実装 iOS UI実装 Android UI実装 画面仕様 QA リリース 結合
Slide 15
Slide 15 text
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 画面仕様 QA リリース ● 仕様を元にStateとActionをモデリング、実装 ○ KMP/iOS/Android全エンジニアがそれぞれの観点でレビュー ● KMPの状態更新などの中身は実装しない KMP 内部実装 iOS UI実装 Android UI実装 結合
Slide 16
Slide 16 text
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 画面仕様 QA リリース ● KMPは内部の状態更新を実装していく ● iOS/AndroidはStateをもとにPreview駆動開発 ● UI実装とStateやActionに乖離があればフィードバック KMP 内部実装 iOS UI実装 Android UI実装 結合
Slide 17
Slide 17 text
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 画面仕様 QA リリース ● KMPの内部実装が進んだらiOS/Androidと結合を始める ● 実装と結合の工程はきっちり別れずグラデーションで進行 ● 結合時の課題はフィードバックして改善 KMP 内部実装 iOS UI実装 Android UI実装 結合
Slide 18
Slide 18 text
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 画面仕様 QA リリース KMPでは、ここの並列化とフィードバック速度が重要 KMP 内部実装 iOS UI実装 Android UI実装 結合
Slide 19
Slide 19 text
© 2024 Wantedly, Inc. 開発ワークフローの重要な工程 KMP インターフェー ス 設計・実装 画面仕様 QA リリース 手戻りを減らす フィードバックを早く回す KMP 内部実装 iOS UI実装 Android UI実装 結合
Slide 20
Slide 20 text
© 2024 Wantedly, Inc. KMPインターフェース設計・実装 KMP インターフェー ス 設計・実装 画面仕様 QA リリース 手戻りを減らす KMP 内部実装 iOS UI実装 Android UI実装 結合
Slide 21
Slide 21 text
© 2024 Wantedly, Inc. ● 実装時の手戻りが多い課題があった ○ KMPに破壊的変更を頻繁に入れる ○ UI側で不足する状態が実装中に発覚 ● → 仕様整理や設計のレベルを上げよう! KMPインターフェース設計・実装
Slide 22
Slide 22 text
© 2024 Wantedly, Inc. KMPインターフェース設計・実装
Slide 23
Slide 23 text
© 2024 Wantedly, Inc. KMPインターフェース設計・実装 ● 手戻りがかなり減った ● モデリングの手法も議論が起きて堅牢に ○ data class (直積) → sealed class (直和)
Slide 24
Slide 24 text
© 2024 Wantedly, Inc. 結合 KMP インターフェー ス 設計・実装 画面仕様 QA リリース フィードバックを早く回す KMP 内部実装 iOS UI実装 Android UI実装 結合
Slide 25
Slide 25 text
© 2024 Wantedly, Inc. 結合 ● 以前はKMPに手動でバージョンをつけてパッケージ化 ○ KMPの結合までが非常に手間、心理的ハードル ○ 結合のフィードバックが回しづらい
Slide 26
Slide 26 text
© 2024 Wantedly, Inc. 結合 ● CI/CDを整備、メインブランチマージで自動的にPR作成 ○ iOS/Android側のPRをマージするだけに ● 朝会での相談などフィードバックの機会を増やす ● 設計工程を手厚くしたことで結合時の手戻りも減った
Slide 27
Slide 27 text
© 2024 Wantedly, Inc. まとめ
Slide 28
Slide 28 text
© 2024 Wantedly, Inc. まとめ ● 弊社でのKMPのワークフローを紹介 ● 当たり前だけど設計は重要な工程 ● CI/CDはフィードバックを回すためにも必須 ● チーム内のコミュニケーションを活発に
Slide 29
Slide 29 text
© 2024 Wantedly, Inc.