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ナニモワカラナイ
Search
sobaya
January 22, 2024
Programming
1
310
KMPナニモワカラナイ
sobaya
January 22, 2024
Tweet
Share
More Decks by sobaya
See All by sobaya
酒飲んでたらテックリードになった話
spbaya0141
0
340
とある大喜利会社の戦略
spbaya0141
0
100
そば屋のひとりごと(KMP関連の雑な話し)
spbaya0141
0
420
JetpackSecurityを今さら学んでみた
spbaya0141
0
330
日本三大何をしているか分からない企業の育児制度
spbaya0141
0
880
僕が考えた超最強のKMMアプリの作り方
spbaya0141
0
480
lazy grid layout
spbaya0141
1
480
Androidアプリを1から作る時に 設定したこと
spbaya0141
1
420
JetpackCompose 導入半年で感じた 改善点
spbaya0141
1
460
Other Decks in Programming
See All in Programming
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
230
EventSourcingの理想と現実
wenas
6
2.1k
2万ページのSSG運用における工夫と注意点 / Vue Fes Japan 2024
chinen
3
1.4k
Content Security Policy入門 セキュリティ設定と 違反レポートのはじめ方 / Introduction to Content Security Policy Getting Started with Security Configuration and Violation Reporting
uskey512
1
450
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
7
1.2k
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
4
1.7k
Dev ContainersとGitHub Codespacesの素敵な関係
ymd65536
1
130
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
3
410
OpenTelemetryでRailsのパフォーマンス分析を始めてみよう(KoR2024)
ymtdzzz
5
1.8k
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
470
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
270
gopls を改造したら開発生産性が高まった
satorunooshie
8
260
Featured
See All Featured
How to Ace a Technical Interview
jacobian
275
23k
A Tale of Four Properties
chriscoyier
156
23k
A better future with KSS
kneath
238
17k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Agile that works and the tools we love
rasmusluckow
327
21k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
1.9k
Done Done
chrislema
181
16k
Unsuck your backbone
ammeep
668
57k
Transcript
KMPナニモワカラナイ
KMP ナニモワカラナイ 〜2024 年には完全に理解できるか!?〜 そば屋
まずは2023 年を振り返る
KMP のお仕事を2 個経験
一つ目のお仕事紹介 UI のState までKMP で管理しアプリ側は基本的にUI だけを用意すれ ばいい設計 DI 周りはアプリにお任せしているのでclass が用意されているだ
け Repository はAndroid,iOS,KMP の3 個用意しKMP は好きなバージョン を取り込めるようになっている開発環境
一つ目のお仕事紹介 詳しいことはDroidKaigi 2023 で発表 したので、気になる方はそちらを ご覧ください
二つ目のお仕事紹介 共通化するのはRepository かUseCase までとし、UI のState 管理も アプリで行う方式 DI はKoin を使用してKMP
内で完結できる部分は完結させている 開発環境も1 つのRepository で行っている
いったんまとめる
共通化 Compose Multiplatform を使ってUI も含めて共通化( 未経験) UIState まで共通化 Repository,UseCase まで共通化(
一部Util なども提供)
DI Koin などKMP 対応のライブラリを使いKMP 内で可能な限り対応 Hilt がいいからDI はアプリ側で行う
Repository それぞれ別で用意する 一本で行く
Domain まで共通化 UI ステートも共通化 UI も共通化 アプリでDI KMP でDI 別Repository
共通Repository 経験済みの組み合わせ
上ルート
上ルート 今回の仕事ではRepository 周りが複雑なので、 工数の削減になりそう( 手厚くテストも書きやすい) 同一のソースコードなのでAndroid,iOS で違う人が実装したことに よる仕様の勘違いでの違う動作は防げる
上ルート ただ、それほどRepository やUseCase がそれほど複雑な事が多いの か?→工数的なメリットは一般的に得にくい気がする 同じコードを使えるので同じ動作が担保されることについてはメリ ットになると思う
下ルート
下ルート Android の開発者目線だと同じKotlin だしUI だけ書けばだいたい想定通 り動作してくれたので楽な部分もあった
下ルート KMP とは別要因も絡み以下の問題が出た UIState を作った人とアプリの実装者が別だからコミュニケーシ ョンコストが異常に高くなった UIState まで用意するとiOS での取り回しが辛かったらしくiOS は
KMP の実装を使わないことも発生した
KMP 実装 下ルート Repository を分けていたことで急ぎの対応が遅くなった。 KMP レビュー KMP 配布 KMP
取り込み アプリ実装
現時点での確定情報 ※ 明日には言ってる事が変わる可能性があります
共通化はDomain まで State まで手を出すとiOS が使えないことも出てきてしまい共通化 でなくなる あと、iOS の人がめっちゃ怒ってたからやめた方がいい( 魚肉ソー セージ渡して納得してもらった)
Repository は1 本 KMP の取り込み作業がなくなるし、毎回Android,iOS のビルドが通 ることが確認できるので安心感がある( 取り込み時に問題発覚が 無い) ただ、変更されたコードを確認して、Android,iOS
必要なビルドだ け走る設定はした方がいい
何が分からないか把握して 2024 年を生きる
移行 新規の立ち上げはしたけど、KMP への移行は未経験 Android,iOS 共にアプリがあるけどKMP にする Android しかなくてiOS も作りたいからKMP 使う
iOS しかなくてAndroid も作りたいからKMP 使う Flutter などからの移行
Android,iOS 共にアプリがあ るけどKMP にする どんな目的があるか知りたい。 工数削減を目的とされると厳しいと思っているので、その他何かメ リットがあれば説明できるようになりたい。 移行と追加開発のバランスなども知りたい
Android しかなくてiOS も作 りたいからKMP 使う Retrofit をKtorfit に置き換え( たぶん簡単) は想像がつく
UseCase もShare モジュールにすればいいだけだと思う DI どうするか?既存があるならHilt を使ってる確率が高そう Repository が分かれてたら取り込み作業で面倒が起きる可能性あるけ ど、1 本なら大きな問題ないのでは?
iOS しかなくてAndroid も作 りたいからKMP 使う iOS もUI 以外は使いまわせない気がするからメリットあるのか学びた い そもそもiOS
何も知らないからそこからスタート
Flutter などからの移行 Flutter 何それ美味しいの? この移行が発生するのは最新な機能を使いたいとかUI 周りをめっち ゃこだわりたいだと思い込んでる 完全に作り直すことになるのとFlutter に比べたら工数増えるし本当 にメリットがあるパターンがあるのか知りたい
※Flutter 以外だとしても
2024 年なにやるの?
まずは移行の知識を得よう 仕事はいつどんな要件の物がもらえるか分からないので、 Now in Android をKMP に移行してみるチャレンジをやってみよう と思ってる iOS の開発知識も一緒に得られるメリットも!!
どんな要望があるのか聞きたい KMP 移行してみたいかもとか気になると言う会社さん!! お話ししてください!!求めている物とか体制とかを聞けるだ けで知識になるのでお願いします。 これまでの経験ベースでオススメ度合いや構成・ライブラリな どお話しできます。 ※ ゆめみにお仕事くれたら嬉しいですが、くれなくてもいいのでお話しできたら嬉しいで す(
お話し後に営業的な連絡をガンガンするとかはしないので)
2024 年も一番大切にしたい事
働かないで! 働かないで! 5000 兆円欲しい! 5000 兆円欲しい!