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
KMM&Compose MutiPlatformで始めるクロスプラットフォーム開発
Search
akkiee76
June 21, 2023
Technology
2
940
KMM&Compose MutiPlatformで始めるクロスプラットフォーム開発
potatotips #82 iOS/Android開発Tips共有会の発表資料です。
akkiee76
June 21, 2023
Tweet
Share
More Decks by akkiee76
See All by akkiee76
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
210
コードレビューを支援するAI技術の応用
akkie76
5
460
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
6.4k
Jetpack Compose で Adaptive Layout に対応しよう
akkie76
0
120
Observationではじめる値監視
akkie76
3
1.9k
TextField 表示スタイル変更の 有効活用例 5 選
akkie76
0
310
rememberUpdatedState の使いどころを考える
akkie76
0
200
M3 NavigationBar をマスターする
akkie76
0
500
アーキテクチャを明文化して臨んだ新規アプリ開発戦略
akkie76
0
140
Other Decks in Technology
See All in Technology
パスワードを保存しますか?
hanacchi
0
240
社内での継続的な機械学習勉強会の開催のコツ
yudai00
1
230
QAエンジニアが伝えたい品質保証の羅針盤 / Compass for Quality Assurance
mii3king
1
270
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshiitaka
2
570
From here to resilience - a travel guide
ufried
1
140
M5stackで使用できるpHセンサの開発
shinrinakamura
1
300
Documentação de Produtos: Artefatos essenciais na prática
rigolon
1
240
MixIT 2024 - Pulumi : Gérer son infra avec son langage de programmation préféré
ju_hnny5
1
130
成長をサポートするピープルマネジメントのやり方
sioncojp
9
1.5k
令和版ソフトウェアエンジニアの情報収集術 PHPカンファレンス香川2024
ysknsid25
4
740
「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用
nrryuya
8
7.3k
Microsoft for Startups Founders Hub_20240429 update
daikikanemitsu
1
2.6k
Featured
See All Featured
Designing Experiences People Love
moore
136
23k
In The Pink: A Labor of Love
frogandcode
138
21k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Creatively Recalculating Your Daily Design Routine
revolveconf
211
11k
Visualization
eitanlees
137
14k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
41
4.4k
Fireside Chat
paigeccino
22
2.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
80
44k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
9
1.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
A better future with KSS
kneath
231
16k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
12
1.1k
Transcript
potatotips #82 ©2023 RAKUS Co., Ltd. KMM & Compose MultiPlatformで
始めるクロスプラットフォーム開発 @akkiee76 potatotips #82 iOS/Android開発Tips共有会
potatotips #82 Akihiko Sato / 株式会社ラクス Lead Engineer / @akkiee76
SaaS 開発 (Backend, Frontend) / Mobile 開発 (iOS, Android) 上流工程、コードレビュー、チームの課題改善など コールドブリューコーヒー☕ / パン作り🍞 / あんバターフランス🥐 自己紹介
potatotips #82 今日伝えたいこと KMM & Compose MultiPlatform を導入したクロスプラットフォーム開発の紹介
potatotips #82 Kotlin Multiplatform for Mobile (KMM) JetBrainsが開発したKotlinベースのクロスプラットフォーム 開発フレームワーク。1つの共通のKotlinコードベースを使用して、 iOSとAndroidの両方のプラットフォーム向けにネイティブアプリを
開発することができる点が特徴。
potatotips #82 Kotlin Multiplatform for Mobile (KMM) フレームワークイメージ
potatotips #82 Kotlin Multiplatform for Mobile (KMM) アーキテクチャイメージ Compose Multiplatform
potatotips #82 Compose MultiPlatform Compose Multiplatformは、Kotlinを使用して複数のプラットフォーム間でUI を共有するための宣言的なフレームワークです。JetBrainsとオープンソースの貢献 者によって開発され、Jetpack Composeに基づいています。 https://github.com/JetBrains/compose-multiplatform
potatotips #82 ここからは導入手順を紹介します
potatotips #82 開発に必要な環境 ・ macOS ・ Android Studio ・ Xcode
・ JDK ・ Kotlin Multiplatform Mobile plugin ・ Kotlin plugin ・ CocoaPods dependency manager あとは brew install kdoctor を実行するだけ
potatotips #82 プロジェクト作成 * Desktop版はIntelliJから作成可能
potatotips #82 プロジェクト構成
potatotips #82 commonMainに定義されている共通コード
potatotips #82 実際に利用したライブラリなど ・ Navigation ・ Network ・ DI (時間の関係上3つ紹介)
potatotips #82 Navigation 自分の実装イメージはこんな感じでしたが・・・。
potatotips #82 Navigation サポートされていなかった。。 https://github.com/JetBrains/compose-multiplatform/tree/master/tutorials/Navigation
potatotips #82 Navigation とりあえず自前で実装(Android)
potatotips #82 Navigation とりあえず自前で実装(iOS) * main.ios.ktも定義が必要です。
potatotips #82 Network Ktrofitライブラリを 導入して実装 RetrofitのようなAPIで 実装することが可能 https://foso.github.io/Ktorfit/
potatotips #82 Network レスポンスをselializeするため、 kotlinx-serializationも同時に導入 します。 https://github.com/Kotlin/kotlinx.serialization
potatotips #82 DI (Dependency Injection) 〜 module 定義 Koin(InsertKoinIO)を導入して実装 https://insert-koin.io/docs/reference/koin-mp/kmp/
potatotips #82 DI (Dependency Injection) 〜 Android 編
potatotips #82 DI (Dependency Injection) 〜 iOS 編
potatotips #82 まとめ ・ ComposeでViewを共通で利用できるため、 生産性の向上、保守性に期待できる ・ Kotlinで実装する共通ロジックは、柔軟に設計ができる ・ Android、iOS
両方のアーキテクチャの知見が必要 ・ まだまだ使い勝手が悪い点もあるが今後のアップデートに期待!
potatotips #82 ご静聴ありがとうございました