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
400
とある大喜利会社の戦略
spbaya0141
0
150
そば屋のひとりごと(KMP関連の雑な話し)
spbaya0141
0
470
JetpackSecurityを今さら学んでみた
spbaya0141
0
370
日本三大何をしているか分からない企業の育児制度
spbaya0141
0
940
僕が考えた超最強のKMMアプリの作り方
spbaya0141
0
510
lazy grid layout
spbaya0141
1
520
Androidアプリを1から作る時に 設定したこと
spbaya0141
1
460
JetpackCompose 導入半年で感じた 改善点
spbaya0141
1
500
Other Decks in Programming
See All in Programming
Rails 1.0 のコードで学ぶ find_by* と method_missing の仕組み / Learn how find_by_* and method_missing work in Rails 1.0 code
maimux2x
1
260
Learning Kotlin with detekt
inouehi
1
200
Ça bouge du côté des animations CSS !
goetter
2
160
ABEMA iOS 大規模プロジェクトにおける段階的な技術刷新 / ABEMA iOS Technology Upgrade
akkyie
1
250
たのしいSocketのしくみ / Socket Under a Microscope
coe401_
8
1.4k
AIレビュー導入によるCIツールとの共存と最適化
kamo26sima
1
640
Lambdaの監視、できてますか?Datadogを用いてLambdaを見守ろう
nealle
2
760
Domain-Driven Design (Tutorial)
hschwentner
13
22k
PRレビューのお供にDanger
stoticdev
1
240
やっと腹落ち「スプリント毎に動くモノをリリースする」〜ゼロから始めるメガバンクグループのアジャイル実践〜
sasakendayo
0
150
Amazon Bedrockマルチエージェントコラボレーションを諦めてLangGraphに入門してみた
akihisaikeda
1
160
color-scheme: light dark; を完全に理解する
uhyo
7
510
Featured
See All Featured
Being A Developer After 40
akosma
89
590k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Faster Mobile Websites
deanohume
306
31k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1.1k
Typedesign – Prime Four
hannesfritz
41
2.5k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
The Language of Interfaces
destraynor
156
24k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
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 兆円欲しい!