第23回|GeminiとCloudを組み合わせたAIアプリ構想[AI]
⚙️ 準備と環境設定
本記事では、Android Studio Otter(2025.2.1)とGemini AIを活用し、Google Cloud APIを組み合わせた応用AIアプリの構想と実装手順を解説します。特にComposeを中心にKotlinで開発する方法を、初心者にも分かりやすく解説します。
![第23回|GeminiとCloudを組み合わせたAIアプリ構想[AI] 1 Android Studio Otter](https://zesys.net/blog/wp-content/uploads/2025/11/ChatGPT-Image-2025年11月10日-18_51_43-300x200.png)
1. Android Studio Otterのセットアップ
まず、最新のAndroid Studio Otterをインストールし、新規プロジェクトをKotlin + Composeテンプレートで作成します。必要に応じてGradleで以下依存関係を追加してください:
dependencies {
implementation "androidx.compose.ui:ui:1.5.0"
implementation "androidx.compose.material3:material3:1.2.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
}
これにより、Compose UI、Material3、非同期処理用Coroutinesが利用可能になります。
2. Google Cloudプロジェクト準備
Cloud TranslationやVision、またはText-to-Speech APIを使用する場合は、GCPコンソールで新規プロジェクトを作成し、対象APIを有効化します。サービスアカウントを作成してJSONキーをダウンロードし、app/src/main/res/raw/ 配下に配置します。
🤖 Geminiによる支援の使い方
Gemini AIは、アプリの画面構成やAPI呼び出しコードを生成するサポートをします。例えば「Compose画面でテキストを入力して翻訳し、画像を解析して結果を表示するUIを生成」と指示すれば、GeminiはUI構造とCloud API呼び出しのKotlinコード例を提案してくれます。
このようにGeminiを活用することで、初心者でも複雑なCloud API連携をスムーズに実装可能です。
💡 Kotlinでの実装例
以下は、Gemini生成コードとCloud APIを組み合わせた基本的な実装例です。
1. Cloud Translation API呼び出し
import com.google.cloud.translate.Translate
import com.google.cloud.translate.TranslateOptions
import com.google.cloud.translate.Translation
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
suspend fun translateText(text: String, targetLang: String = "en"): String {
return withContext(Dispatchers.IO) {
val translate: Translate = TranslateOptions.getDefaultInstance().service
val translation: Translation = translate.translate(
text,
Translate.TranslateOption.targetLanguage(targetLang)
)
translation.translatedText
}
}
説明:非同期処理でテキストを翻訳。Coroutinesを使用することでComposeのUIスレッドをブロックせず安全に実行できます。
2. Vision APIで画像解析
import com.google.cloud.vision.v1.AnnotateImageRequest
import com.google.cloud.vision.v1.ImageAnnotatorClient
import com.google.cloud.vision.v1.Feature
import com.google.protobuf.ByteString
import java.io.File
suspend fun analyzeImage(file: File): List {
val imageBytes = ByteString.readFrom(file.inputStream())
val feature = Feature.newBuilder().setType(Feature.Type.LABEL_DETECTION).build()
val request = AnnotateImageRequest.newBuilder()
.addFeatures(feature)
.setImage(com.google.cloud.vision.v1.Image.newBuilder().setContent(imageBytes).build())
.build()
ImageAnnotatorClient.create().use { client ->
val response = client.batchAnnotateImages(listOf(request))
return response.responsesList.first().labelAnnotationsList.map { it.description }
}
}
説明:選択した画像をVision APIに送信し、ラベル検出を行います。結果はCompose UIで一覧表示可能です。
3. Compose画面での統合
@Composable
fun AiAppScreen() {
var inputText by remember { mutableStateOf("") }
var translatedText by remember { mutableStateOf("") }
var labels by remember { mutableStateOf(listOf()) }
Column(modifier = Modifier.padding(16.dp)) {
TextField(
value = inputText,
onValueChange = { inputText = it },
label = { Text("テキスト入力") }
)
Spacer(modifier = Modifier.height(8.dp))
Button(onClick = {
CoroutineScope(Dispatchers.IO).launch {
translatedText = translateText(inputText)
}
}) { Text("翻訳") }
Text("翻訳結果: $translatedText", modifier = Modifier.padding(top = 8.dp))
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = {
// 画像選択後 analyzeImage 呼び出し
}) { Text("画像解析") }
labels.forEach { label ->
Text(text = label)
}
}
}
説明:テキスト翻訳と画像解析のUIを統合したCompose画面例です。Gemini AIを利用することで、このUI構成とAPI呼び出しをまとめて生成できます。
🧩 FirebaseまたはCloudとの連携
GeminiとCloud APIを組み合わせる場合、以下を注意してください:
- JSONサービスアカウントを安全に管理し、Gitに含めない
- 非同期処理はCoroutinesを活用してUIスレッドをブロックしない
- Gemini生成コードを元に、Compose画面とCloud API呼び出しを統合
- 実機やエミュレータでテストしてAPIキーの認証やレスポンスを確認
- Translation、Vision、Text-to-Speechなど複数APIを組み合わせて応用可能
📘 まとめ
第23回では、Gemini AIとGoogle Cloud APIを組み合わせた応用AIアプリの構想と実装例を紹介しました。GeminiによるUI生成とCloud API呼び出しの統合例を通じて、初心者でもAIアプリ開発の効率を大幅に向上させることが可能です。Kotlin + Composeでの非同期処理やサービスアカウント管理にも触れ、実践的な応用方法を理解できます。
「※本ブログはこの一文以外は、AIによる記載です。内容にウソが含まれている可能性がありますので、ご注意ください。写真もAIで作成しています。」