Skip to content

プロジェクトへの依存関係の追加

このチュートリアルでは IntelliJ IDEA を使用しますが、Android Studio でも同様に進めることができます。どちらの IDE もコア機能と Kotlin マルチプラットフォーム(Kotlin Multiplatform)のサポートを共有しています。



これは「共有ロジックとネイティブ UI を使用した Kotlin マルチプラットフォーム アプリの作成」チュートリアルの第 3 部です。続行する前に、前のステップを完了していることを確認してください。

第 1 ステップ

Kotlin マルチプラットフォーム アプリの作成
このチュートリアルでは IntelliJ IDEA を使用しますが、Android Studio でも同様に進めることができます。どちらの IDE もコア機能と Kotlin マルチプラットフォームのサポートを共有しています。これは「共有ロジックとネイティブ UI を使用した Kotlin マルチプラットフォーム アプリの作成」チュートリアルの第 1 部です。Kotlin マルチプラットフォーム アプリの作成、ユーザーインターフェースの更新、依存関係の追加、より多くのロジックの共有、プロジェクトの仕上げを行います。

第 2 ステップ
ユーザーインターフェースの更新
このチュートリアルでは IntelliJ IDEA を使用しますが、Android Studio でも同様に進めることができます。どちらの IDE もコア機能と Kotlin マルチプラットフォームのサポートを共有しています。これは「共有ロジックとネイティブ UI を使用した Kotlin マルチプラットフォーム アプリの作成」チュートリアルの第 2 部です。続行する前に、前のステップを完了していることを確認してください。Kotlin マルチプラットフォーム アプリの作成、ユーザーインターフェースの更新、依存関係の追加、より多くのロジックの共有、プロジェクトの仕上げを行います。

第 3 ステップ 依存関係の追加
第 4 ステップ より多くのロジックの共有
第 5 ステップ プロジェクトの仕上げ

最初の Kotlin マルチプラットフォーム プロジェクトを作成し、微調整を行いました! 次は、成功するクロスプラットフォーム アプリケーションを構築するために不可欠な、サードパーティ ライブラリへの依存関係を追加する方法を学びましょう。

依存関係の種類

Kotlin マルチプラットフォーム プロジェクトで使用できる依存関係には 2 つの種類があります。

  • マルチプラットフォームの依存関係 (Multiplatform dependencies): 複数のターゲットをサポートし、共通ソースセット commonMain で使用できるマルチプラットフォーム ライブラリです。

    KoinCoilSQLDelight など、最新の Android ライブラリの多くはすでにマルチプラットフォームをサポートしています。その他のマルチプラットフォーム ライブラリについては、JetBrains の実験的な検索サービスである klibs.io で探すことができます。

  • ネイティブの依存関係 (Native dependencies): 関連するエコシステムの通常のライブラリです。 ネイティブ プロジェクトでは通常、Android の場合は Gradle を、iOS の場合は Swift Package Manager を使用してこれらを扱います。

    マルチプラットフォーム プロジェクト モジュールを扱う際、通常、セキュリティ ストレージや特定のシステムコールなどのプラットフォーム API を使用したい場合には、依然としてネイティブの依存関係が必要になります。ビルドスクリプトでは、androidMainiosMain などのネイティブ ソースセットの構成でネイティブの依存関係を指定します。

どちらのタイプの依存関係についても、ローカルおよび外部のリポジトリを使用できます。

マルチプラットフォーム依存関係の追加

Android アプリの開発経験がある場合、マルチプラットフォーム依存関係の追加は、通常の Android プロジェクトで Gradle 依存関係を追加するのと似ています。唯一の違いは、特定のソースセットに追加する必要がある点です。

挨拶をもう少し華やかにしてみましょう: OS のバージョンに加えて、元旦までの残り日数を表示する機能を追加します。 完全にマルチプラットフォームをサポートしている kotlinx-datetime ライブラリは、共有コードで日付を扱うための最も便利な方法です。

  1. gradle/libs.versions.toml ファイルを開き、バージョンカタログに kotlinx-datetime の依存関係を追加します。

    toml
    [versions]
    kotlinx-datetime = "0.8.0"
    
    [libraries]
    kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }
  2. sharedLogic/build.gradle.kts ファイルを開き、共通コード ソースセットを構成するセクションにそのライブラリ エントリへの参照を追加します。

    kotlin
    kotlin {
        //... 
        sourceSets {
            commonMain.dependencies {
                implementation(libs.kotlinx.datetime)
            } 
        }
    }
  3. Build | Sync Project with Gradle Files メニュー項目を選択するか、ビルドスクリプトエディターの Sync Gradle Changes ボタンをクリックして Gradle ファイルを同期します: Gradle ファイルを同期する

kotlinx-datetime API の呼び出し

依存関係が追加されたので、共通コードに日付と時刻の計算を追加できます。

  1. sharedLogic/src/commonMain/.../greetingkmp ディレクトリを右クリックし、New | Kotlin Class/File を選択して、新しいファイル NewYear.kt を作成します。

  2. NewYear.kt に、datetime の日付演算を使用して今日から来年の初めまでの日数を計算し、表示するフレーズを作成する 2 つの関数を追加します。

    kotlin
    fun daysUntilNewYear(): Int {
        val today = Clock.System.todayIn(TimeZone.currentSystemDefault())
        val closestNewYear = LocalDate(today.year + 1, 1, 1)
        return today.daysUntil(closestNewYear)
    }
    
    fun daysPhrase(): String = "There are only ${daysUntilNewYear()} days left until New Year! 🎆"
  3. IDE の提案に従って、必要なインポートをすべて追加します。 kotlinx.datetime.Clock ではなく、kotlin.time.Clock をインポートするようにしてください。

  4. Greeting.kt ファイルで Greeting クラスを更新して、結果を確認します。

    kotlin
    class Greeting {
        private val platform: Platform = getPlatform()
    
        fun greet(): List<String> = buildList {
            add(if (Random.nextBoolean()) "Hi!" else "Hello!")
            add("Guess what this is! > ${platform.name.reversed()}!")
            add(daysPhrase())
        }
    }
  5. 結果を確認するには、IntelliJ IDEA から androidAppiosApp の実行構成を再実行します。

外部依存関係を追加して更新されたモバイル マルチプラットフォーム アプリ

次のステップ

チュートリアルの次のパートでは、さらに多くの依存関係と、より複雑なロジックをプロジェクトに追加します。

次のパートに進む

関連項目

ヘルプの利用