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
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ウォンテッドリーでのKMPワークフロー / KMP workflow at Wantedly
https://wantedly.connpass.com/event/316051/
Masatoshi Kubode
May 21, 2024
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
AIチャットの改善から見えた、良いAI体験とは / What Constitutes a Good AI Experience: Insights from Improving AI Chat
kubode
0
190
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
270
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.4k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
750
技術を根付かせる / How to make technology take root
kubode
1
520
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
660
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
250
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.5k
Other Decks in Programming
See All in Programming
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.3k
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
120
新卒PdEのリアル
ryu1013
1
360
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.7k
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
620
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.7k
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
970
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
160
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
260
Deep dive into the select statement (GopherCon UK)
jespino
0
170
Foundry Localでエージェント開発
seosoft
0
120
Press start. Python's next generation.
willingc
PRO
3
300
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Building Adaptive Systems
keathley
44
3.2k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
RailsConf 2023
tenderlove
30
1.5k
HDC tutorial
michielstock
2
840
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
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.