Kotlin expect、actualキーワード

マルチプラットフォーム開発(expect、actual)

expectactualキーワードは、Kotlin Multiplatformプロジェクトで使用される特別なキーワードである。これは、Kotlinが複数のプラットフォームで使用されるように設計された特徴を活用する。

一般的にKotlin Multiplatformプロジェクトでは、コードを複数のプラットフォーム(例: JVM、Android、iOS、JavaScript)で共有する。しかし、各プラットフォームごとに特定の実装が必要な場合がある。このような場合に、expectactualキーワードを使用して、プラットフォームごとに異なる実装を提供できる。

  • expect
    • expectキーワードは、特定のインターフェース、クラス、または関数がプラットフォームでどのように実装されるべきかを宣言するために使用される。
    • つまり、期待される実装を定義する。これは一般的に共有コードで使用され、特定のプラットフォームで提供されるべきAPIを定義するために使用される。
  • actual
    • actualキーワードはexpectキーワードと対応し、実際にそのインターフェース、クラス、または関数の具体的な実装を提供する。
    • これはプラットフォームごとに提供される特定の実装である。したがって、各プラットフォームに対して特定のコードを記述できる。

次は、expectactualキーワードを使用して、プラットフォームごとに異なる実装を提供する簡単な例である。

// common module
expect fun platformSpecificFunction(): String

// JVM module
actual fun platformSpecificFunction(): String {
    return "This is the JVM implementation"
}

// iOS module
actual fun platformSpecificFunction(): String {
    return "This is the iOS implementation"
}

// Usage
fun main() {
    println(platformSpecificFunction()) // Output depends on the platform
}

上の例でplatformSpecificFunctionは共有(common)モジュールでexpectとして宣言されている。そして各プラットフォームに応じた実際の実装は、actualキーワードを使用して提供される。これにより、各プラットフォームで実行するたびに適切な実装が使用される。