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
1k
ウォンテッドリーでの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
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
85
Mobile Chapterが目指すところと技術 / Vision and Technology of Mobile Chapter at Wantedly
kubode
0
110
ComposeでのShared Element Transition / Shared Element Transition in Compose
kubode
0
290
K2への完全移行結果 / Results of complete migration to K2
kubode
2
4.2k
Data Bindingの移行を楽にする / Easier migration of Data Binding
kubode
0
810
Compose Shadow Alternative
kubode
0
250
アイコンをComposeにする / Compose the Icons
kubode
0
440
デザインシステムのCompose実装 / Design system Compose implementation
kubode
0
510
KMMのCI/CD
kubode
3
740
Other Decks in Programming
See All in Programming
Namespace on read
tagomoris
2
370
Async Await: Mastering Python's Time-Bending Tricks - EuroPython2024
yanbo
1
290
Javaの現状2024夏 / Java current status 2024 summer
kishida
4
1.4k
Temporalを取り巻く仕様を整理する
sajikix
0
110
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
140
はしめてのプログラミングとロボット制御
watawatavoltage
0
290
SDCon2024: Enabling DevOps and Team Topologies thru architecture: architecting for fast flow
cer
PRO
0
780
CSC307 Lecture 07
javiergs
PRO
0
220
継続的な活動で築く地方エンジニアの道
myamashii
2
350
Prompt FlowによるLLMアプリケーション開発
yuto2000
1
1k
TiDB Serverless ~理想のServerless DBを考える~
soso_15315
1
160
最古の関数型言語「Lisp」ことはじめ / lisp_in_kamiyama
uhooi
1
190
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
63
4.2k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
248
12k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
360
22k
Art, The Web, and Tiny UX
lynnandtonic
291
20k
10 Git Anti Patterns You Should be Aware of
lemiorhan
652
58k
The Language of Interfaces
destraynor
151
23k
How to train your dragon (web standard)
notwaldorf
79
5.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.8k
The Cost Of JavaScript in 2023
addyosmani
31
4.7k
How to Ace a Technical Interview
jacobian
274
23k
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.