1. モバイル開発でよくあるコード重複の問題
多くのモバイルアプリは次のような構造で開発される。

この構造では次のような処理が重複しやすい。
・API通信
・データ処理
・ビジネスロジック
例えばAPIレスポンスの解析やドメインロジックは、AndroidとiOSで別々に実装されることが多い。
2. Kotlin Multiplatformとは何か
Kotlin Multiplatformは、Kotlinコードを複数プラットフォームで共有するための仕組みである。共通ロジックを1つのモジュールにまとめ、AndroidとiOSの両方から利用できる。
基本構造は次の通りである。

このshared moduleにプラットフォームに依存しないコードを実装する。
3. KotlinコードがAndroidとiOSで動く仕組み
Kotlin Multiplatformでは、共通コードはプラットフォームごとにネイティブコードへコンパイルされる。
Androidでは通常のKotlinコードとして動作する。一方、iOSではKotlin/NativeによってFrameworkが生成され、アプリから利用される。
4. プラットフォームごとの実装を分離する方法(expect / actual)
Kotlin Multiplatformでは、プラットフォーム依存の処理を分離するために expect/actualを使用する。
・共通コード

・Android実装

・iOS実装

この仕組みにより、共通インターフェースを維持しながらプラットフォーム固有APIを利用できる。
5. Kotlin Multiplatformプロジェクトの基本構造
KMPプロジェクトでは、共通コードを配置するshared moduleを作成する。
一般的な構造は次の通りである。

commonMainには共通ロジックを実装し、androidMainとiosMainにはプラットフォーム固有コードを配置する。
6. AndroidとiOSアプリへの統合
共有コードはそれぞれのアプリから利用される。
Androidの場合
・Gradle dependencyとして利用
iOSの場合
・Kotlin/NativeでFrameworkを生成
・Xcodeプロジェクトに追加
構造は次のようになる。

7. Android StudioからiOSアプリを実行する
Kotlin MultiplatformプロジェクトではAndroid StudioからiOSアプリを実行することもできる。
基本的な流れは次の通りである。

この構成により、Kotlinコードを変更しながらAndroidとiOS両方で動作確認できる。
8. Compose MultiplatformによるUI共有
Compose MultiplatformではUIコードも共有できる。
構造

Compose Multiplatformでは宣言的UIを利用し、AndroidとiOSの両方で同じUIコードを実行できる。ただしiOSではネイティブUIと組み合わせて使用するケースも多い。
9. Kotlin Multiplatformを使った開発構造
KMPを利用するとアプリの構造は次のようになる。
・従来
・KMP

ビジネスロジックを共通化できる点が大きな特徴である。
10. Kotlin Multiplatformが向いている領域
KMPはすべてのコードを共有するための技術ではない。特に共有しやすい領域は次の通りである。

一方、UIやOS固有機能はプラットフォームごとに実装する。
11. 導入する際の注意点
Kotlin Multiplatformを導入する場合、いくつかの点に注意する必要がある。

そのため、既存プロジェクトでは段階的に導入するケースが多い。
Kotlin MultiplatformはAndroidとiOSでビジネスロジックを共有するための仕組みであり、モバイルアプリのコード重複を減らすことができる。共有コードはKotlinで実装され、Androidでは通常のKotlinコードとして動作し、iOSではKotlin/Nativeによって生成されたFrameworkとして利用される。さらにCompose Multiplatformの進展によりUI共有の可能性も広がっている。ただしすべてのコードを共通化できるわけではなく、UIやプラットフォーム固有機能はそれぞれの環境で実装する必要がある。Kotlin Multiplatformはネイティブ開発を置き換えるものではなく、AndroidとiOSの開発構造を整理するための選択肢の一つとして利用されている。



