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
350
とある大喜利会社の戦略
spbaya0141
0
110
そば屋のひとりごと(KMP関連の雑な話し)
spbaya0141
0
420
JetpackSecurityを今さら学んでみた
spbaya0141
0
330
日本三大何をしているか分からない企業の育児制度
spbaya0141
0
890
僕が考えた超最強のKMMアプリの作り方
spbaya0141
0
480
lazy grid layout
spbaya0141
1
490
Androidアプリを1から作る時に 設定したこと
spbaya0141
1
420
JetpackCompose 導入半年で感じた 改善点
spbaya0141
1
460
Other Decks in Programming
See All in Programming
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
Jakarta EE meets AI
ivargrimstad
0
160
Amazon Qを使ってIaCを触ろう!
maruto
0
400
RubyLSPのマルチバイト文字対応
notfounds
0
120
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
24k
Remix on Hono on Cloudflare Workers
yusukebe
1
290
Quine, Polyglot, 良いコード
qnighy
4
640
C++でシェーダを書く
fadis
6
4.1k
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
170
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
1
100
Tauriでネイティブアプリを作りたい
tsucchinoko
0
370
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
260
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
Scaling GitHub
holman
458
140k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Why Our Code Smells
bkeepers
PRO
334
57k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Designing for humans not robots
tammielis
250
25k
Side Projects
sachag
452
42k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Documentation Writing (for coders)
carmenintech
65
4.4k
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 兆円欲しい!