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

Kotlin Multiplatform(KMP) とは?

最終更新:
💡 共通の処理を分けて、各プラットフォームで使う

Kotlinで書いたコードを、Android・iOS・Web・デスクトップなどの複数のプラットフォームで共有する技術。ロジックだけ、またはCompose MultiplatformによるUIも共有する構成を選べる。固有のAPI・ビルド・テストは別に考える。

📌 このページのポイント
KMP:共通の処理を、各アプリへKotlinの共通コード例:データ処理・通信のロジックAndroidアプリ固有の機能・UIiOSアプリ固有の機能・UIUIの共有も、Composeで選べる共通化と、各環境での動作確認は別だよ
ロジックを共有するモバイルアプリの構成例。KMPはWeb・デスクトップ等も対象にでき、固有APIやUIの共有範囲を選びます。
ひよこ ひよこ
iOSとAndroidに、同じ処理を書かなくていい?
ペンギン先生 ペンギン先生
API通信やデータ処理など、共通にできる部分をKotlinで共有できるよ。各プラットフォームが共通コードを使う構成にする。ただし、OS固有の機能までそのまま全部使えるわけではない。何を共通にするか、分けて考えよう。
ひよこ ひよこ
画面も、必ず共通にするの?
ペンギン先生 ペンギン先生
選べるよ。ロジックだけ共有し、iOSのSwiftUIなどで画面を別に作る構成もある。Compose Multiplatformを使ってUIも共有する構成もある。KMPは共通コードの仕組み、Compose Multiplatformはそれを利用するUIの道具として区別すると分かりやすいね。
ひよこ ひよこ
OS固有の機能は、どう呼ぶの?
ペンギン先生 ペンギン先生
共通コードから使う形を決め、各プラットフォームで具体的な処理を書く方法があるよ。Kotlinのexpect/actual宣言はその仕組みの1つ。ライブラリも、使いたい対象で共通APIを提供しているか確認しよう。対応していないAPIを共通部分へそのまま置くことはできないんだ。
ひよこ ひよこ
1回書けば、ビルドや確認も1回?
ペンギン先生 ペンギン先生
コードを共有することと、各環境で動くことを確かめる作業は別だよ。iOS向けなら、公式FAQはXcodeの導入やMacでの実行環境を案内している。共通処理のテストに加え、各OSの連携や表示も確認する必要があるんだ。
ひよこ ひよこ
今あるアプリも、全部書き直すの?
ペンギン先生 ペンギン先生
必ず全部を共有する必要はないよ。公式資料はロジックのみの共有とUIも含めた共有の移行例を分けて案内している。共通化したい処理、既存の画面、チームの経験、ライブラリの対応を見て範囲を決めよう。共有率を高くすること自体が目的ではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Kotlin Multiplatform」って出てきたら「Kotlinの共通コードを、複数のプラットフォームで使う技術」と思えばだいたいOK!
📖 おまけ:英語の意味
「Kotlin Multiplatform」 = Kotlinによる複数プラットフォーム向け開発
💬 JetBrainsの技術で、KMPとも呼ばれるよ。共通にする範囲をプロジェクトに合わせて選べるんだ。

参考資料

← 用語集にもどる