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
ウォンテッドリーでのKMPワークフロー / KMP workflow at Wantedly
Search
Masatoshi Kubode
May 21, 2024
Programming
0
1.6k
ウォンテッドリーでのKMPワークフロー / KMP workflow at Wantedly
https://wantedly.connpass.com/event/316051/
Masatoshi Kubode
May 21, 2024
Tweet
Share
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
技術を根付かせる / How to make technology take root
kubode
1
250
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
320
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.1k
Make your Android app into Multiplatform app
kubode
0
100
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
830
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
550
Mobile Chapterが目指すところと技術 / Vision and Technology of Mobile Chapter at Wantedly
kubode
0
320
ComposeでのShared Element Transition / Shared Element Transition in Compose
kubode
0
480
K2への完全移行結果 / Results of complete migration to K2
kubode
2
6.2k
Other Decks in Programming
See All in Programming
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
11
1.9k
SpringBoot3.4の構造化ログ #kanjava
irof
2
990
Spring gRPC について / About Spring gRPC
mackey0225
0
220
ARA Ansible for the teams
kksat
0
150
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
9
1.8k
Amazon S3 TablesとAmazon S3 Metadataを触ってみた / 20250201-jawsug-tochigi-s3tables-s3metadata
kasacchiful
0
160
Conform を推す - Advocating for Conform
mizoguchicoji
3
690
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
130
ファインディの テックブログ爆誕までの軌跡
starfish719
2
1.1k
Kubernetes History Inspector(KHI)を触ってみた
bells17
0
220
Amazon Q Developer Proで効率化するAPI開発入門
seike460
PRO
0
110
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
How to train your dragon (web standard)
notwaldorf
91
5.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
A Philosophy of Restraint
colly
203
16k
Six Lessons from altMBA
skipperchong
27
3.6k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Adopting Sorbet at Scale
ufuk
74
9.2k
Navigating Team Friction
lara
183
15k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Transcript
© 2024 Wantedly, Inc. ウォンテッドリーでの KMPワークフロー Mobile勉強会#14 2024/05/21 久保出雅俊
© 2024 Wantedly, Inc. wantedly.com/id/kubode @swiz_ard @kubode
© 2024 Wantedly, Inc. Agenda • 弊社でのKMPのワークフローを紹介 • チーム構成や現状に至った経緯
© 2024 Wantedly, Inc. Kotlin Multiplatform (KMP)
© 2024 Wantedly, Inc. Kotlin Multiplatform
© 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
© 2024 Wantedly, Inc. ウォンテッドリーでのKotlin Multiplatform
© 2024 Wantedly, Inc. 導入
© 2024 Wantedly, Inc. 共通化レベル
© 2024 Wantedly, Inc. Presentation Logic SearchReactor send(Action.Bookmark) state
© 2024 Wantedly, Inc. Repository構成 KMP iOS Android SwiftPM Maven
Publish Publish
© 2024 Wantedly, Inc. Mobile Chapter チーム構成とコミット KMP iOS Android
専門性 iOS Android Commit Commit
© 2024 Wantedly, Inc. ワークフロー
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 KMP
内部実装 iOS UI実装 Android UI実装 画面仕様 QA リリース 結合
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 画面仕様
QA リリース • 仕様を元にStateとActionをモデリング、実装 ◦ KMP/iOS/Android全エンジニアがそれぞれの観点でレビュー • KMPの状態更新などの中身は実装しない KMP 内部実装 iOS UI実装 Android UI実装 結合
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 画面仕様
QA リリース • KMPは内部の状態更新を実装していく • iOS/AndroidはStateをもとにPreview駆動開発 • UI実装とStateやActionに乖離があればフィードバック KMP 内部実装 iOS UI実装 Android UI実装 結合
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 画面仕様
QA リリース • KMPの内部実装が進んだらiOS/Androidと結合を始める • 実装と結合の工程はきっちり別れずグラデーションで進行 • 結合時の課題はフィードバックして改善 KMP 内部実装 iOS UI実装 Android UI実装 結合
© 2024 Wantedly, Inc. 開発ワークフロー KMP インターフェー ス 設計・実装 画面仕様
QA リリース KMPでは、ここの並列化とフィードバック速度が重要 KMP 内部実装 iOS UI実装 Android UI実装 結合
© 2024 Wantedly, Inc. 開発ワークフローの重要な工程 KMP インターフェー ス 設計・実装 画面仕様
QA リリース 手戻りを減らす フィードバックを早く回す KMP 内部実装 iOS UI実装 Android UI実装 結合
© 2024 Wantedly, Inc. KMPインターフェース設計・実装 KMP インターフェー ス 設計・実装 画面仕様
QA リリース 手戻りを減らす KMP 内部実装 iOS UI実装 Android UI実装 結合
© 2024 Wantedly, Inc. • 実装時の手戻りが多い課題があった ◦ KMPに破壊的変更を頻繁に入れる ◦ UI側で不足する状態が実装中に発覚
• → 仕様整理や設計のレベルを上げよう! KMPインターフェース設計・実装
© 2024 Wantedly, Inc. KMPインターフェース設計・実装
© 2024 Wantedly, Inc. KMPインターフェース設計・実装 • 手戻りがかなり減った • モデリングの手法も議論が起きて堅牢に ◦
data class (直積) → sealed class (直和)
© 2024 Wantedly, Inc. 結合 KMP インターフェー ス 設計・実装 画面仕様
QA リリース フィードバックを早く回す KMP 内部実装 iOS UI実装 Android UI実装 結合
© 2024 Wantedly, Inc. 結合 • 以前はKMPに手動でバージョンをつけてパッケージ化 ◦ KMPの結合までが非常に手間、心理的ハードル ◦
結合のフィードバックが回しづらい
© 2024 Wantedly, Inc. 結合 • CI/CDを整備、メインブランチマージで自動的にPR作成 ◦ iOS/Android側のPRをマージするだけに •
朝会での相談などフィードバックの機会を増やす • 設計工程を手厚くしたことで結合時の手戻りも減った
© 2024 Wantedly, Inc. まとめ
© 2024 Wantedly, Inc. まとめ • 弊社でのKMPのワークフローを紹介 • 当たり前だけど設計は重要な工程 •
CI/CDはフィードバックを回すためにも必須 • チーム内のコミュニケーションを活発に
© 2024 Wantedly, Inc.