Kotlin

Kotlin Multiplatform (KMP) ガイド: コード共有と開発手順

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Kotlin Multiplatform(KMP)とは?コード共有の仕組みを理解する

Kotlin Multiplatform(KMP)は、Kotlinで複数プラットフォーム間のコード共有を実現する技術です。AndroidやiOSなどに特化した部分(UIなど)は別途開発し、共通部分を1つのコードベースで管理できる仕組みです。このアプローチにより、開発者が1つの言語で幅広いプラットフォームに対応できるようになります。

KMPの基本概念とメリット

KMPは「同じコードを複数プラットフォームに流用できる」という思想から生まれました。具体的には、データ処理やネットワーク通信などのビジネスロジックを共通化することで、開発効率の向上と保守性の改善が可能になります。

  • メリット1:コードの再利用性
    AndroidとiOSで共通するロジックは1か所で管理できるため、バグ修正や機能追加が効率的です。

  • メリット2:開発コストの削減
    プラットフォームごとのコードを別々に書く必要がないため、初期開発とメンテナンスの手間を軽減できます。

注意点:UIなどのプラットフォーム固有部分は別途実装が必要です。KMPはロジック層の共有に特化しています。


共通コードとプラットフォーム固有コードの役割

共通コードは、expect-actualパターンを用いてプラットフォームごとに適切な処理を切り替えます。たとえば、ファイル操作やネットワークリクエストといった、各OSで異なるAPIを持つ処理は、プラットフォーム固有コードとして実装されます。

プラットフォーム 共通コードの役割 プラットフォーム固有コードの役割
Android データ処理ロジックを共通化 Android SDK特有のAPI呼び出し
iOS ビジネスルールを統一 SwiftまたはObjective-Cによる処理実装

開発環境の準備:Kotlin Multiplatformプロジェクトの初期設定

KMPプロジェクトを作成するには、Android StudioとKotlinプラグインが必要です。最新バージョンの環境構築手順をステップバイステップで解説します。

必要なツールとバージョン

  • Android Studio: 2023.2.1以上(2024年7月時点)
  • JDK: OpenJDK 17またはOracle JDK 17
  • Kotlinプラグイン: 1.9.x以降

Kotlin Multiplatformは、Android Studioの「New Project」テンプレートから直接作成可能です


Android Studioでの新規プロジェクト作成手順

  1. Android Studioを起動し、「New Project」を選択します。
  2. テンプレート選択画面で「Kotlin Multiplatform App」を選び、次へ進みます。
  3. ターゲットプラットフォームとしてAndroidとiOSをチェック(または必要に応じて他のプラットフォームを追加)。
  4. プロジェクト名と保存場所を指定し、「Finish」をクリックします。

expect-actualパターンによるプラットフォーム依存処理

共通コードでexpect宣言を行い、各プラットフォームの実装部分ではactualで処理を定義することで、複数プラットフォームでの柔軟な対応が可能になります。

共通コードで宣言するexpect関数

共通ライブラリ(sharedモジュール)内で以下のようにexpect宣言します。

この宣言は、AndroidとiOSの両方で実装が必要です。


Android/iOSそれぞれでのactual実装例

Androidの場合(Kotlin)

iOSの場合(Swift)

ポイントexpect宣言はプラットフォームに依存せず、actualの実装は各OSごとに適切な言語で記述します。


共通ライブラリの選定と導入方法

KMPでは、共通化できるライブラリとプラットフォーム固有ライブラリを区別して使用する必要があります。適切なライブラリ選定がプロジェクトの安定性に大きく影響します。

KMP対応ライブラリの見分け方

  • 公式ドキュメントに「Multiplatform」や「Common」の記載があるライブラリを優先。
  • 例: kotlinx.coroutinesktor-client-coreなどはKMPに対応しています。
ライブラリ名 対応状況 補足
kotlinx.coroutines ✅ 共通 非同期処理で必須
ktor-client-core ✅ 共通 ネットワークリクエスト用
Android SDK ❌ プラットフォーム固有 Android専用API
SwiftUI ❌ プラットフォーム固有 iOS専用UIフレームワーク

依存関係管理のベストプラクティス

  • build.gradle.ktsimplementationまたはapiでライブラリを追加。
  • 共通ライブラリはsharedモジュールに、プラットフォーム固有ライブラリは各モジュールに分離します。


CI/CDでのKMPプロジェクト構築手順

GitHub Actionsを活用し、複数プラットフォームの自動ビルド・テストを実行できます。環境設定と手順を具体的に解説します。

GitHub Actionsでのビルド設定

  1. .github/workflows/build.ymlファイルを作成。
  2. 以下のようにYAML記述して、AndroidとiOSのCIを並列実行します。

注意:iOSビルドはmacOS環境が必要です。


複数プラットフォーム同時ビルドのポイント

  • 各プラットフォームの依存関係に注意し、共通ライブラリが正しく解決されるように設定します。
  • テストコードもcommonTestと各プラットフォーム用に分離して実行することを推奨します。

実践的なプロジェクト構成ガイド

KMPプロジェクトでは、共通モジュールの分割やソースコード階層の設計が重要です。適切な構造により、保守性と拡張性が向上します。

ソースコード階層の設計方針

  • shared:共通ロジック・データクラス
  • androidApp:Android専用UI・リソース
  • iosApp:iOS専用UI・Swift実装


共通モジュールの分割方法

  • 機能ごとにモジュールを分ける(例: auth, network
  • 関連性が高いコードは同じディレクトリに配置し、明確な名前付けを行う


まとめ

本記事では、Kotlin Multiplatform(KMP)の基礎知識から実装手順までを体系的に解説しました。主なポイントは以下の通りです:

  • KMPはロジック層のコード共有に特化し、UI処理はプラットフォームごとに実装する
  • expect-actualパターンで各プラットフォームの適切なAPIを呼び出せる
  • 共通ライブラリ選定には公式ドキュメントを参考にし、依存関係管理を厳格に
  • GitHub ActionsなどでCI/CDを自動化し、多プラットフォーム同時ビルドを実現

KMPの導入は初期設定がやや複雑ですが、長期的な開発効率向上につながります。実際にプロジェクトを作成して、コード共有の恩恵を感じてみてください。

公式ドキュメントはこちらから:https://developer.android.com/kotlin/multiplatform?hl=ja

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Kotlin