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
1k
KMM&Compose MutiPlatformで始めるクロスプラットフォーム開発
potatotips #82 iOS/Android開発Tips共有会の発表資料です。
akkiee76
June 21, 2023
Tweet
Share
More Decks by akkiee76
See All by akkiee76
Meet the Translation API
akkie76
0
150
コードレビューで開発を加速させるAIコードレビュー
akkie76
0
160
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
1.2k
コードレビューを支援するAI技術の応用
akkie76
5
590
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
7.1k
Jetpack Compose で Adaptive Layout に対応しよう
akkie76
0
320
Observationではじめる値監視
akkie76
3
3.3k
TextField 表示スタイル変更の 有効活用例 5 選
akkie76
0
420
rememberUpdatedState の使いどころを考える
akkie76
0
280
Other Decks in Technology
See All in Technology
大規模ドラレコデータ収集・機械学習基盤を支える AWS CDK 〜導入・運用事例紹介〜
pemugi
0
110
エンジニア向け会社紹介資料
caddi_eng
14
230k
LINE WORKSへ簡単通知!Incoming Webhookアプリの紹介
mmclsntr
0
110
AOAI Dev Day LLMシステム開発 Tips集
hirosatogamo
15
3.8k
AI研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
130
AIエージェントを現場に導入する目線とは
masahiro_nishimi
1
1.5k
DDDにおける認可の扱いとKotlinにおける実装パターン / authorization-for-ddd-and-kotlin-implement-pattern
urmot
4
390
可視化プラットフォームGrafanaの基本と活用方法の全て
hamadakoji
0
230
Datadog Cloud SIEMを使ってAWS環境の脅威を可視化した話/lifeistech-datadog-cloud-siem
gidajun
0
480
AWS IAMのアンチパターン/AWSが考える最低権限実現へのアプローチ概略(JAWS-UG朝会#59資料改修20分版)
htan
0
330
公共領域から学ぶ クラウド移行についてエンジニアが意識していること
kawakawa2222
0
140
E2Eテスト自動化プラットフォームにおけるAIの活用
shift_evolve
0
190
Featured
See All Featured
The Cult of Friendly URLs
andyhume
75
5.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
189
16k
Leading Effective Engineering Teams 2024
addyosmani
3
300
Build The Right Thing And Hit Your Dates
maggiecrowley
28
2.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
17
8.7k
Build your cross-platform service in a week with App Engine
jlugia
227
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
26
1.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
23
1.9k
Web development in the modern age
philhawksworth
203
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
Building a Scalable Design System with Sketch
lauravandoore
458
32k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
36
9.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 ご静聴ありがとうございました