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
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
0
880
Make your Android app into Multiplatform app
kubode
0
81
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
680
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
420
Mobile Chapterが目指すところと技術 / Vision and Technology of Mobile Chapter at Wantedly
kubode
0
290
ComposeでのShared Element Transition / Shared Element Transition in Compose
kubode
0
450
K2への完全移行結果 / Results of complete migration to K2
kubode
2
6k
Data Bindingの移行を楽にする / Easier migration of Data Binding
kubode
0
1.6k
Compose Shadow Alternative
kubode
0
410
Other Decks in Programming
See All in Programming
talk-with-local-llm-with-web-streams-api
kbaba1001
0
170
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
140
create_tableをしただけなのに〜囚われのuuid編〜
daisukeshinoku
0
240
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
300
Jakarta EE meets AI
ivargrimstad
0
230
これでLambdaが不要に?!Step FunctionsのJSONata対応について
iwatatomoya
2
3.6k
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
120
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
1
120
急成長期の品質とスピードを両立するフロントエンド技術基盤
soarteclab
0
920
[JAWS-UG横浜 #76] イケてるアップデートを宇宙いち早く紹介するよ!
maroon1st
0
450
バグを見つけた?それAppleに直してもらおう!
uetyo
0
170
As an Engineers, let's build the CRM system via LINE Official Account 2.0
clonn
1
670
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Building Applications with DynamoDB
mza
91
6.1k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Into the Great Unknown - MozCon
thekraken
33
1.5k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.2k
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.