0Pricing
Kotlin Academy · レッスン

KMMプロジェクト構成

共有コードとプラットフォームコードを学びます

「KMMプロジェクト構成」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

KMMとは

Kotlin Multiplatform Mobile (KMM) を使うと、ネイティブUIを維持しながらiOSとAndroidの間でコードを共有できます。ビジネスロジックをKotlinで一度だけ記述できます。

shared モジュール

KMMプロジェクトの中心となるのはsharedモジュールです。Android向けにはJVMライブラリに、iOS向けにはネイティブフレームワークにコンパイルされます。

  • Androidでは通常の依存関係として利用します
  • iOSではObjective-C/Swiftフレームワークとしてインポートします

ソースセット

sharedモジュールはソースセットに分割されます。

  • commonMain — 共有され、プラットフォームに依存しないコード
  • androidMain — Android固有のコード
  • iosMain — iOS固有のコード

commonMain

commonMain では、Kotlin標準ライブラリとマルチプラットフォームライブラリのみを使用できます。AndroidやiOSのAPIを直接参照してはいけません。

// shared/src/commonMain/kotlin/Greeting.kt
class Greeting {
    fun greet(): String = "Hello, KMM!"
}

ターゲットの設定

sharedの build.gradle.kts で、マルチプラットフォームプラグインを使ってビルドするプラットフォームを宣言します。

kotlin {
    androidTarget()
    iosX64()
    iosArm64()
    iosSimulatorArm64()
}

iOSフレームワーク

iOSのターゲットは、Xcodeがインポートする単一のフレームワークにまとめられます。

kotlin {
    listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach {
        it.binaries.framework {
            baseName = "Shared"
        }
    }
}

共通依存関係

マルチプラットフォームライブラリ(coroutines、serialization、Ktor)は commonMain に追加し、すべてのターゲットで共有します。

sourceSets {
    val commonMain by getting {
        dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
        }
    }
}

Androidアプリモジュール

Androidアプリモジュールは、通常のGradleモジュールと同じように shared に依存し、Jetpack ComposeまたはViewsを使ってAndroid UIを構築します。

// androidApp/build.gradle.kts
dependencies {
    implementation(project(":shared"))
}

iOSアプリ

iOSアプリは標準的なXcodeプロジェクトです。生成された Shared フレームワークをリンクし、SwiftからKotlinクラスを呼び出します。

// Swift
// import Shared
// let text = Greeting().greet()

共有するもの

共有に適した典型的なコードは、ネットワーク処理、データモデル、リポジトリ、ユースケース、バリデーションです。UI、ナビゲーション、プラットフォームセンサーはネイティブのままにします。

自己完結型のGreeting

共有ロジックは通常のKotlinコードです。ここでは、それが通常のコードであることを示すために、同じクラスを単独で実行します。

class Greeting {
    fun greet(): String = "Hello, KMM!"
}

fun main() {
    println(Greeting().greet())
}

クイックチェック

AndroidやiOSのAPI参照を一切含めてはいけないコードは、どこに配置しますか。

まとめ

KMMの構造を学びました。

  • commonMain、androidMain、iosMain を持つ shared モジュール
  • マルチプラットフォームプラグインでターゲットを宣言し、iOSにはフレームワークを生成する
  • Androidは project(":shared") 経由で依存し、iOSはフレームワークをインポートする

次はexpectとactualです。

よくある質問

「KMMプロジェクト構成」レッスンは無料ですか?

はい。「KMMプロジェクト構成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「KMMプロジェクト構成」で何を学びますか?

共有コードとプラットフォームコードを学びます ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「KMMプロジェクト構成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. KMMプロジェクト構成
  2. expectとactual
  3. ビジネスロジックの共有
  4. プラットフォームAPI
← Kotlin Academyに戻る