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.9k
ウォンテッドリーでの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
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.1k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
560
技術を根付かせる / How to make technology take root
kubode
1
390
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
500
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.3k
Make your Android app into Multiplatform app
kubode
0
180
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.2k
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
920
Mobile Chapterが目指すところと技術 / Vision and Technology of Mobile Chapter at Wantedly
kubode
0
380
Other Decks in Programming
See All in Programming
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
110
Serena MCPのすすめ
wadakatu
4
990
10年もののAPIサーバーにおけるCI/CDの改善の奮闘
mbook
0
810
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
31k
Devvox Belgium - Agentic AI Patterns
kdubois
1
120
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
1
440
CSC305 Lecture 05
javiergs
PRO
0
210
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
170
複雑化したリポジトリをなんとかした話 pipenvからuvによるモノレポ構成への移行
satoshi256kbyte
1
1k
Catch Up: Go Style Guide Update
andpad
0
220
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
160
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
200
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
970
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
Site-Speed That Sticks
csswizardry
11
900
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Building an army of robots
kneath
306
46k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Context Engineering - Making Every Token Count
addyosmani
5
230
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Navigating Team Friction
lara
190
15k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Thoughts on Productivity
jonyablonski
70
4.9k
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.