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
350
KMPナニモワカラナイ
sobaya
January 22, 2024
Tweet
Share
More Decks by sobaya
See All by sobaya
酒飲んでたらテックリードになった話
spbaya0141
0
390
とある大喜利会社の戦略
spbaya0141
0
140
そば屋のひとりごと(KMP関連の雑な話し)
spbaya0141
0
470
JetpackSecurityを今さら学んでみた
spbaya0141
0
360
日本三大何をしているか分からない企業の育児制度
spbaya0141
0
940
僕が考えた超最強のKMMアプリの作り方
spbaya0141
0
510
lazy grid layout
spbaya0141
1
520
Androidアプリを1から作る時に 設定したこと
spbaya0141
1
450
JetpackCompose 導入半年で感じた 改善点
spbaya0141
1
490
Other Decks in Programming
See All in Programming
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
180
Honoとフロントエンドの 型安全性について
yodaka
7
1.3k
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
38
15k
ソフトウェアエンジニアの成長
masuda220
PRO
12
1.9k
2024年のWebフロントエンドのふりかえりと2025年
sakito
3
260
Lottieアニメーションをカスタマイズしてみた
tahia910
0
130
もう僕は OpenAPI を書きたくない
sgash708
5
1.8k
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
150
GAEログのコスト削減
mot_techtalk
0
120
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
100
Unity Android XR入門
sakutama_11
0
160
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
770
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
67
4.6k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Building Applications with DynamoDB
mza
93
6.2k
Being A Developer After 40
akosma
89
590k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
Site-Speed That Sticks
csswizardry
4
380
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Gamification - CAS2011
davidbonilla
80
5.1k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
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 兆円欲しい!