【コトリンマルチプラットフォーム】

Kotlin Multiplatform(KMP) とは?

💡 ビジネスロジックは1回書くだけ→ あとは各OSにおまかせ!
📌 このページのポイント
Kotlin Multiplatform 構成図 共有コード(Kotlin Common) ビジネスロジック / データ層 / ネットワーク通信 一度書くだけで全プラットフォームに共有 Android Jetpack Compose ネイティブUI Kotlin/JVM iOS SwiftUI / UIKit ネイティブUI Kotlin/Native Web HTML / CSS / JS ブラウザUI Kotlin/JS Desktop Compose Desktop ネイティブUI Kotlin/JVM
Kotlin Multiplatformの共有コードとプラットフォーム固有コードの構成
ひよこ ひよこ

iOSAndroidの両方に対応したアプリを作りたいんだけど、2回書かなきゃダメ?

ペンギン先生 ペンギン先生

従来はそうだったんだけど、Kotlin Multiplatformを使えば共通部分を1回書くだけで済むんだ。たとえばAPI通信やデータ加工などのビジネスロジックはKotlinで共有して、画面だけ各OSのネイティブ技術で作るイメージだよ

ひよこ ひよこ

Flutterとは何が違うの?

ペンギン先生 ペンギン先生

Flutterは画面(UI)も含めて全部共通化するアプローチなんだ。一方KMPは「ロジックだけ共有して、UIは各プラットフォームのネイティブで作る」のが基本スタイルだよ。だからiOSらしいUIAndroidらしい操作感を保ちやすいんだ

ひよこ ひよこ

でもUIも共通化できたほうが楽じゃない?

ペンギン先生 ペンギン先生

それもできるよ。Compose Multiplatformを組み合わせればUIKotlinで共通化できるんだ。ただしiOSSwiftUI的な操作感を完璧に再現するのはまだ発展途上の部分もあるから、プロジェクトの要件に合わせて選ぶのがポイントだね

ひよこ ひよこ

Android開発者にとってはどういうメリットがあるの?

ペンギン先生 ペンギン先生

めちゃくちゃ大きいよ。普段使っているKotlinのスキルがそのままiOS開発にも活きるからね。Googleが公式サポートしていることもあって、Android開発チームがiOS対応を広げる手段として急速に普及しているんだ

ひよこ ひよこ

デメリットはないの?

ペンギン先生 ペンギン先生

iOS固有の機能を使う場合はSwiftとの連携コードが必要になるし、iOSチームにもKotlinの知識が求められるのがハードルかな。あとビルドシステムがGradleベースで複雑になりがちだから、初期セットアップにはそれなりの経験が必要だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Kotlin Multiplatform」って出てきたら「Kotlinでロジックを書いて複数のOS・プラットフォームに展開できる技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Kotlin Multiplatform」 = Kotlin マルチプラットフォーム
💬 KotlinはJetBrainsが開発した言語で、名前はサンクトペテルブルク近くのコトリン島に由来するよ。Multiplatformは「複数の基盤」という意味だね
← 用語集にもどる