はじめに
Android の AICore は、Gemini Nano などの基盤モデルをシステムレベルで管理する機能です。開発者は Google AI Edge SDK を通じて、これらのモデルを自分のアプリから利用できます。
準備: 依存関係の追加
build.gradle.kts に以下の依存関係を追加します。
dependencies {
// Google AI Edge SDK for Android
implementation("com.google.ai.client.generativeai:generativeai:0.9.0")
// AICore 連携に必要な Google Play Services
implementation("com.google.android.gms:play-services-base:18.5.0")
}
実装例: オンデバイス推論の実行
1. モデルの初期化
GenerativeModel インスタンスを作成します。オンデバイスで動作させるには、modelName に gemini-nano を指定します。
import com.google.ai.client.generativeai.GenerativeModel
import com.google.ai.client.generativeai.type.generationConfig
val generativeModel = GenerativeModel(
// AICore が提供するオンデバイス用モデル名
modelName = "gemini-nano",
// 現状の SDK 仕様では API Key の記述が必要だが、
// AICore 経由の完全なローカル実行では、将来的に内部で処理される予定
apiKey = "YOUR_API_KEY",
generationConfig = generationConfig {
temperature = 0.1f
topK = 1
topP = 0.95f
}
)
2. マルチモーダル入力の作成
画像とテキストを組み合わせた入力を、SDK 標準の content DSL で作成します。
import com.google.ai.client.generativeai.type.content
import android.graphics.Bitmap
fun buildMultimodalInput(bitmap: Bitmap, textPrompt: String) = content {
image(bitmap)
text(textPrompt)
}
3. 推論の実行(Suspend 関数)
非同期で推論を実行し、結果の文字列を取得します。
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import android.util.Log
suspend fun analyzeImageOnDevice(bitmap: Bitmap): String? = withContext(Dispatchers.Default) {
val prompt = buildMultimodalInput(bitmap, "この画像の内容を1行で説明してください")
try {
// generateContent は suspend 関数
val response = generativeModel.generateContent(prompt)
// 成功すれば response.text に結果が格納される
response.text
} catch (e: Exception) {
Log.e("GeminiNano", "推論中にエラーが発生しました", e)
null
}
}
実装上の重要なポイント
AICore のセットアップ状態
Gemini Nano は AICore によって管理されているため、アプリの初回起動時にモデルがダウンロードされていない場合があります。
- モデルの準備: 現在の SDK では、
generateContent呼び出し時にモデルが未準備だと例外が発生することがあります。 - 互換性: Pixel 8/9 シリーズや最新の Samsung Galaxy など、AICore がサポートされている端末である必要があります。
メモリとパフォーマンス
- メモリ消費: モデルのロード時に 1〜2GB 程度の一時的なメモリ消費が発生することがあります。低メモリ端末での動作には細心の注意を払ってください。
- スロットリング: 長時間の推論はサーマルスロットリングを引き起こします。バッチ処理ではなく、ユーザーの操作に連動した単発の推論に向いています。
まとめ
Google AI Edge SDK を利用することで、クラウド版の Gemini とほぼ同じインターフェースでオンデバイス AI を実装できます。
GenerativeModelでgemini-nanoを指定する。contentDSL を使用してマルチモーダル入力を構成する。generateContentを Coroutine 内で呼び出す。
プライバシーが重視されるデータや、オフライン環境での補助機能として、ぜひ活用してみてください。