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でマルチプラットフォーム開発を始めよう
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
akkiee76
June 10, 2023
Technology
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
KMMでマルチプラットフォーム開発を始めよう
akkiee76
June 10, 2023
More Decks by akkiee76
See All by akkiee76
Graph Art with Charts API – Beyond Data Visualization
akkie76
0
270
Meet the Translation API
akkie76
0
510
コードレビューで開発を加速させるAIコードレビュー
akkie76
1
780
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
6.2k
コードレビューを支援するAI技術の応用
akkie76
5
1.3k
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
10k
Jetpack Compose で Adaptive Layout に対応しよう
akkie76
0
1.2k
Observationではじめる値監視
akkie76
4
4.9k
TextField 表示スタイル変更の 有効活用例 5 選
akkie76
0
790
Other Decks in Technology
See All in Technology
2027年のMetricKit
kantacky
0
170
Sets in Go
ramalho
1
1.2k
猫付きpingコマンドを自作
uyuki234
0
300
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
210
安全性・開発速度・ユーザー体験の あいだで考える 事業会社のプロダクトセキュリティ
mixi_engineers
PRO
0
100
:syncing_time:
sksat
2
630
明日から業務に使える 生成AI活用ワークショップ
matyuda
0
100
【Aiming】共通基盤なのに「共通化しない」課金・認証基盤「LINK」が選び取ったシングルテナント戦略と運用の秘訣
saikeda
0
170
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
4
26k
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
gree_tech
PRO
0
360
AIに狂うスタートアップが、あえて「人との協働」に全振りした新卒エンジニア研修 / New Graduate Engineer Training at a Startup Accelerating AI Adoption
ohnoeight
0
200
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
570
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
470
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
280
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
350
The Cost Of JavaScript in 2023
addyosmani
55
10k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
480
Transcript
ランチタイムLT会 #1 ©2023 RAKUS Co., Ltd. KMMで始めるマルチプラットフォーム開発 @akkiee76 ランチタイムLT会 #1
ランチタイムLT会 #1 Akihiko Sato / 株式会社ラクス Lead Engineer / @akkiee76
SaaS 開発 (Backend, Frontend) / Mobile 開発 (iOS, Android) 上流工程、コードレビュー、チームの課題改善など コールドブリューコーヒー☕ / パン作り🍞 / あんバターフランス🥐 自己紹介
ランチタイムLT会 #1 会社紹介 株式会社ラクス 「ITサービスで企業の成長を継続的に支援します」 をミッションに、お客様の課題解決やビジネスの成 長をを継続的に支援するクラウドサービスを提供し ています。
ランチタイムLT会 #1 今日伝えたいこと Kotlin Multiplatform for Mobile (KMM) を活用したクロスプラットフォーム開発の導入
ランチタイムLT会 #1 クロスプラットフォーム開発とは? 1つのコードベースを使用して複数のモバイルプラットフォーム向けに アプリを開発する手法。開発者は、異なるプラットフォームごとに独立したア プリを作成する必要がなくなり、開発時間とリソースを節約することも。 ・ React Native ・
Flutter ・ Unity
ランチタイムLT会 #1 クロスプラットフォーム開発とは? メリット ・ 開発 / メンテコストの削減 👑 デメリット
・ ネイティブアプリ固有の機能が実装しにくい ・ プラグインが必要だったり・・・ ・ UIがネイティブに劣る
ランチタイムLT会 #1 クロスプラットフォーム開発の悩み 1. 開発速度・コスト重視でクロスプラットフォームを選定 2. 片手落ち感があっても、ひとまずリリース 3. ネイティブの機能要求が増えて来る 4.
プラグインだと機能拡張に限界を感じる(EOLを迎えることも) 5. やっぱりネイティブにしよう
ランチタイムLT会 #1 Kotlin Multiplatform for Mobile (KMM) JetBrainsが開発したKotlinベースのクロスプラットフォーム 開発フレームワーク。1つの共通のKotlinコードベースを使用して、 iOSとAndroidの両方のプラットフォーム向けにネイティブアプリを
開発することができる点が特徴。
ランチタイムLT会 #1 Kotlin Multiplatform for Mobile (KMM) フレームワークイメージ
ランチタイムLT会 #1 Kotlin Multiplatform for Mobile (KMM) アーキテクチャイメージ Compose Multiplatform
ランチタイムLT会 #1 ここからは導入手順を紹介します
ランチタイムLT会 #1 KMM開発に必要な環境 ・ macOS ・ Android Studio ・ Xcode
・ JDK ・ Kotlin Multiplatform Mobile plugin ・ Kotlin plugin あとは brew install kdoctor を実行するだけ brew install kdoctor
ランチタイムLT会 #1 Android Studio からプロジェクト作成
ランチタイムLT会 #1 プロジェクト構成
ランチタイムLT会 #1 プロジェクトビルド
ランチタイムLT会 #1 KMMによって出力されたコード(Android) class MainActivity : ComponentActivity() { override fun
onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { MyApplicationTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background ) { GreetingView(Greeting().greet()) } } } } } @Composable fun GreetingView(text: String) { Text(text = text) } MainActivity.kt
ランチタイムLT会 #1 KMMによって出力されたコード(iOS) ContentView.swift import SwiftUI import shared struct ContentView:
View { let greet = Greeting().greet() var body: some View { Text(greet) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
ランチタイムLT会 #1 KMMによって出力されたコード(iOS) Shared.h __attribute__((objc_subclassing_restricted)) __attribute__((swift_name("Greeting"))) @interface SharedGreeting : SharedBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); + (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); - (NSString *)greet __attribute__((swift_name("greet()"))); @end
ランチタイムLT会 #1 KMMによって出力されたコード(shared) /commonMain/kotlin class Greeting { private val platform:
Platform = getPlatform() fun greet(): String { return "Hello, ${platform.name}!" } } interface Platform { val name: String } expect fun getPlatform(): Platform class IOSPlatform: Platform { override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion } actual fun getPlatform(): Platform = IOSPlatform() class AndroidPlatform : Platform { override val name: String = "Android ${android.os.Build.VERSION.SDK_INT}" } actual fun getPlatform(): Platform = AndroidPlatform() /iosMain/kotlin /kotlin
ランチタイムLT会 #1 個人的な初感 ・ Jetpack Compose、Swift UI といったモダンフレームワークが採用 ・ Kotlinで実装する共通ロジックは、柔軟に設計ができる
・ Android、iOS 両方のアーキテクチャの知見が必要 ・ これまでのマルチプラットフォーム開発より難易度高い印象 ・ 使いこなせたら生産性が爆上がりしそう
ランチタイムLT会 #1 まとめ KMMは今後も期待が高まるフレームワークです。 使いこなす難易度は高そうですが、 新規開発の機会があれば導入を検討しようと思います!
ランチタイムLT会 #1 ご静聴ありがとうございました