第22回|Google Cloudとの連携:APIキー設定と利用例[AI]
⚙️ 準備と環境設定
本記事では、Google Cloud Platform(GCP)とAndroidアプリを連携させる方法を解説します。特にCloud Translation APIやVision APIをComposeとKotlinで活用する手順に焦点を当てます。
![第22回|Google Cloudとの連携:APIキー設定と利用例[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. GCPプロジェクト作成とAPI有効化
Google Cloud Consoleにアクセスし、新しいプロジェクトを作成します。次に「APIとサービス」から以下を有効化します:
- Cloud Translation API
- Cloud Vision API
- 必要に応じて他のAI系API
これにより、アプリ側で翻訳や画像解析などのAI機能を利用可能になります。
2. サービスアカウントとAPIキー取得
「サービスアカウント」から新規作成し、JSON形式のキーをダウンロードします。このJSONファイルはAndroid Studioの app/src/main/res/raw/ 配下に配置します。APIキーを直接埋め込む方法もありますが、セキュリティ上サービスアカウントのJSONを利用するのが推奨です。
3. Gradle依存関係追加
dependencies {
implementation "com.google.cloud:google-cloud-translate:2.23.2"
implementation "com.google.cloud:google-cloud-vision:2.24.1"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
}
説明:Cloud TranslationとVision API用のライブラリを導入します。非同期処理はCoroutinesを使用します。
🤖 Geminiによる支援の使い方
Gemini AIを活用すると、APIキーを使ったCloud TranslationやVision APIの呼び出しサンプルコードを生成できます。「Composeで翻訳ボタンと画像解析機能を作るKotlinコードを生成」と指示すれば、UIとAPI呼び出し処理をまとめて提案してくれます。これにより初心者でも安全にAPI連携の実装が可能です。
💡 Kotlinでの実装例
以下はCloud Translation APIとVision APIをComposeで利用する基本例です。
1. Cloud Translation API呼び出し
import com.google.cloud.translate.Translate
import com.google.cloud.translate.TranslateOptions
import com.google.cloud.translate.Translation
suspend fun translateText(text: String, targetLang: String = "ja"): String {
val translate: Translate = TranslateOptions.getDefaultInstance().service
val translation: Translation = translate.translate(
text,
Translate.TranslateOption.targetLanguage(targetLang)
)
return translation.translatedText
}
説明:非同期処理で翻訳を実行。Kotlin 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 detectLabels(imageFile: File): List {
val imageBytes = ByteString.readFrom(imageFile.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))
val labels = response.responsesList.first().labelAnnotationsList
return labels.map { it.description }
}
}
説明:画像ファイルをVision APIに渡してラベル検出を行います。結果はラベル文字列リストとして返却され、Compose UIで表示可能です。
3. Compose UIでの利用例
@Composable
fun TranslateAndDetectScreen() {
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 = {
// ここで画像ファイル選択後 detectLabels を呼ぶ
}) { Text("画像ラベル検出") }
labels.forEach { label ->
Text(text = label)
}
}
}
説明:ユーザー入力テキストを翻訳し、画像を選択してVision APIでラベル検出を行うCompose画面例です。Gemini AIを利用すると、このようなUI+API呼び出しサンプルを自動生成可能です。
🧩 FirebaseまたはCloudとの連携
Cloud TranslationやVision APIをAndroidアプリに安全に組み込むポイント:
- JSONサービスアカウントの安全管理:
res/raw/配下に配置 - Gradleで必要ライブラリの依存関係を追加
- Coroutinesを使った非同期処理でUIスレッドをブロックしない
- Gemini AIを活用してUIとAPI呼び出しコードを自動生成し、実装効率を向上
- 運用環境ではAPIキーやサービスアカウント情報を安全に保管し、Gitに含めない
📘 まとめ
第22回では、Google Cloud APIとAndroidアプリを連携する手順を解説しました。Cloud TranslationやVision APIをKotlinとComposeで活用する方法、APIキー管理、Gemini AIを使ったコード生成の活用例を紹介しました。これにより、初心者でもクラウドAI機能を安全かつ効率的にアプリに組み込むことが可能です。
「※本ブログはこの一文以外は、AIによる記載です。内容にウソが含まれている可能性がありますので、ご注意ください。写真もAIで作成しています。」