◉GEMINI LABEN
●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、明日です。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、明日です。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…
記事一覧/開発ツール
⟐ 開発ツール/2026-04-18上級

Gemini API × Kotlin Multiplatform:iOS/Android 共通 AI ロジックの設計から App Store 公開まで

Kotlin Multiplatform(KMP)とGemini APIを組み合わせ、iOS・Android両対応のAI機能を1つのコードベースで実装する完全ガイド。共通ビジネスロジック設計・SwiftUI/Compose UI・本番APIキー管理・マルチモーダル対応まで動作確認済みコードで解説します。

kotlin-multiplatformkmpgemini-api290ios13android8cross-platform3mobile5swiftui4jetpack-compose3

✦ プレミアム記事

iOS アプリと Android アプリ、それぞれに AI 機能を実装しようとすると、同じロジックを Swift と Kotlin で二度書くことになります。私が実際にそれをやってみて感じたのは、「コードの重複よりも、バグ修正や API 変更への対応を2プラットフォームで同時にやる消耗感」でした。

Kotlin Multiplatform(KMP)は、そのコスト構造を根本から変えます。Gemini API を呼ぶロジック、レスポンスのパース、エラーハンドリング、状態管理——これらを共通モジュールに一度書けば、iOS も Android も同じコードで動きます。ネイティブ UI の体験は損なわずに。

ここで扱うのはKMP プロジェクトへの Gemini API 統合を、セットアップから本番デプロイまで動作確認済みのコードで解説します。

KMP + Gemini を選ぶ理由と、避けるべき落とし穴

なぜ Flutter や React Native ではないのか

クロスプラットフォーム開発の選択肢として Flutter や React Native も有力です。ただ、AI 機能を本格的に組み込む際にはそれぞれ課題があります。

Flutter は Dart での Gemini SDK アクセスが限定的で、Google が提供する公式 SDK(Python・JS・Swift・Kotlin)との相性が良くありません。Google が Dart SDK を提供していますが、機能追加が遅れがちです。

React Native は JavaScript ベースで、Gemini の JS SDK をそのまま使えるメリットがありますが、ネイティブのカメラ連携や画像処理パフォーマンスに課題が残ります。

KMP は Kotlin の REST API クライアント(Ktor)を共通モジュールで使い、iOS/Android どちらからも同じビジネスロジックを呼べる点が決定的な優位性です。SwiftUI と Jetpack Compose それぞれでネイティブ UI を書きながら、AI の呼び出し部分は一箇所にまとめられます。

KMP が本当に向いている AI アプリの特徴

  • テキスト生成・チャット・要約など、ネットワーク越しの Gemini API 呼び出しが中心
  • iOS と Android で同じビジネスロジックを持つ(異なるのは UI だけ)
  • 将来的に Desktop(macOS、Windows)や Web への展開を視野に入れている

逆に、デバイス上での推論(Gemini Nano)や、プラットフォーム固有の ML フレームワーク連携が必要な場合は、ネイティブ実装の方が適しています。

プロジェクトセットアップ

必要な環境

  • Android Studio Giraffe 以降(KMP プラグイン対応版)
  • Xcode 15 以降(iOS ビルドに必要)
  • JDK 17 以降
  • Gemini API キー(Google AI Studio で無料取得)

Gradle の設定

新しい KMP プロジェクトは Android Studio の「New Project → Kotlin Multiplatform App」ウィザードで作成できます。生成されたプロジェクトに Gemini API を組み込むための shared/build.gradle.kts の設定は次の通りです。

// shared/build.gradle.kts
 
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
 
plugins {
    alias(libs.plugins.kotlinMultiplatform)
    alias(libs.plugins.androidLibrary)
    kotlin("plugin.serialization") version "2.0.0"
}
 
kotlin {
    androidTarget {
        @OptIn(ExperimentalKotlinGradlePluginApi::class)
        compilerOptions {
            jvmTarget.set(JvmTarget.JVM_11)
        }
    }
 
    listOf(
        iosX64(),
        iosArm64(),
        iosSimulatorArm64()
    ).forEach { iosTarget ->
        iosTarget.binaries.framework {
            baseName = "Shared"
            isStatic = true
        }
    }
 
    sourceSets {
        commonMain.dependencies {
            // Ktor: HTTP クライアント(KMP 全プラットフォーム対応)
            implementation("io.ktor:ktor-client-core:2.3.12")
            implementation("io.ktor:ktor-client-content-negotiation:2.3.12")
            implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.12")
            // Kotlinx Serialization(JSON パース)
            implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
            // Coroutines
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
        }
        androidMain.dependencies {
            // Android 向けの Ktor エンジン
            implementation("io.ktor:ktor-client-okhttp:2.3.12")
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
        }
        iosMain.dependencies {
            // iOS 向けの Ktor エンジン(Darwin = Apple プラットフォーム)
            implementation("io.ktor:ktor-client-darwin:2.3.12")
        }
    }
}

なぜ Ktor か: Gemini の公式 Kotlin SDK(com.google.ai.client.generativeai)は Android/JVM 専用で、iOS を含む共通モジュールからはそのままでは使えません。Ktor + Gemini REST API の直接呼び出しにすることで、iOS・Android・Desktop 全プラットフォームで動作します。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦KMP + Gemini API のセットアップと共通モジュール設計に詰まっていた開発者が、Gradle設定・HTTP通信・コルーチン設計の正しいパターンを今日手に入れられる
✦iOS(SwiftUI)とAndroid(Jetpack Compose)それぞれのUI実装を、共通AIロジックから分離した動くコードで習得し、2つのプラットフォームを1つのコードベースでカバーできる
✦APIキーのセキュアな管理・レート制限対策・マルチモーダル入力(画像解析)対応まで揃え、本番品質のAI搭載クロスプラットフォームアプリをリリースできる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

◈ API / SDK2026-06-23
Gemini 3.2 Pro の Function Calling を iOS/Android アプリに統合する実装パターン
Gemini 3.2 Pro の Function Calling を iOS/Android アプリに統合する実装ガイド。SwiftUI・Kotlin 両対応の動くコード例と、個人開発の壁紙アプリで実証した本番設計パターン(コスト・レイテンシ・段階ロールアウト・回帰テスト)を解説します。
◈ API / SDK2026-04-03
Gemini API × SwiftUI 本番アプリ実装ガイド:ストリーミング・マルチモーダル・エラーハンドリング・App Store対策まで
Gemini APIをSwiftUIアプリに本番レベルで統合する実装ノウハウ。ストリーミング応答・マルチモーダル入力・エラーハンドリング・テスト戦略・App Store申請対策まで、プロ向けの実装ノウハウを実例とともに整理します。
⟐ 開発ツール2026-04-18
Gemini API × Tauri 2.0 でクロスプラットフォームAIデスクトップアプリを構築する
Tauri 2.0とGemini APIを組み合わせてmacOS・Windows・Linux対応のデスクトップAIアプリを構築する実践ガイド。Rustバックエンドによる安全なAPIキー管理、ストリーミング配信、ネイティブOS機能との連携を動くコードで解説します。