第21回|Firebase Storage:画像アップロードと表示[AI]
⚙️ 準備と環境設定
Firebase Storageを使うには、まずFirebaseプロジェクトの作成とAndroid Studio Otterとの連携が必要です。Storage機能を有効化し、Androidアプリに google-services.json を追加します。
![第21回|Firebase Storage:画像アップロードと表示[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. Firebase ConsoleでStorageを有効化
Firebase Consoleを開き、対象プロジェクトで「Storage」を選択し、有効化します。セキュリティルールも初期設定として「読み書き可」にしておくと、開発時にスムーズです。実運用では適切な認証ルールを設定してください。
2. Gradle依存関係の追加
dependencies {
implementation platform('com.google.firebase:firebase-bom:34.3.0')
implementation 'com.google.firebase:firebase-storage-ktx'
implementation 'io.coil-kt:coil-compose:2.4.0'
}
説明:Firebase StorageのKTXライブラリと、Composeで画像を簡単に表示するためにCoil Composeを導入します。
🤖 Geminiによる支援の使い方
Gemini AIを活用すると、Firebase Storageの画像アップロードやダウンロードのCompose実装例を自動生成できます。「ComposeでFirebase Storageに画像をアップロードし、表示するサンプルコードを生成」と入力するだけで、ボタンや画像表示処理までのKotlinコードを生成可能です。初心者でもスムーズにUIとバックエンドを連携できます。
💡 Kotlinでの実装例
以下に、Composeを用いたFirebase Storageでの画像アップロードと表示の例を示します。
1. 画像選択とアップロードボタン
@Composable
fun UploadImageButton(onImageSelected: (Uri) -> Unit) {
val context = LocalContext.current
val launcher = rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? ->
uri?.let { onImageSelected(it) }
}
Button(
onClick = { launcher.launch("image/*") },
modifier = Modifier.fillMaxWidth().padding(16.dp)
) {
Text(text = "画像を選択してアップロード")
}
}
説明:ユーザーが端末から画像を選択すると、Uriとしてコールバックが返ります。ComposeのButtonで簡単にUIを作成しています。
2. Firebase Storageへのアップロード
fun uploadImageToFirebase(uri: Uri, onSuccess: (String) -> Unit, onFailure: (Exception) -> Unit) {
val storageRef = Firebase.storage.reference
val imageRef = storageRef.child("images/${System.currentTimeMillis()}.jpg")
imageRef.putFile(uri)
.addOnSuccessListener { taskSnapshot ->
imageRef.downloadUrl.addOnSuccessListener { downloadUri ->
onSuccess(downloadUri.toString())
}
}
.addOnFailureListener { exception ->
onFailure(exception)
}
}
説明:選択した画像をStorageの「images」フォルダにアップロードします。成功時にはダウンロードURLを取得し、Composeで表示可能にします。
3. Composeでの画像表示
@Composable
fun DisplayImageFromUrl(imageUrl: String) {
AsyncImage(
model = imageUrl,
contentDescription = "Uploaded Image",
modifier = Modifier
.fillMaxWidth()
.height(200.dp)
.padding(8.dp)
)
}
説明:Coil Composeの AsyncImage を使用して、Firebase Storageから取得した画像URLを簡単に画面上に表示できます。
🧩 FirebaseまたはCloudとの連携
Firebase StorageとComposeアプリを連携する際のポイントは以下です:
- google-services.json の追加:プロジェクトの
app/ディレクトリに配置 - Gradle設定:Firebase Storage KTXとCoil Composeを依存関係に追加
- Storage参照の作成:アップロード先のフォルダやファイル名を指定
- ActivityResultLauncherの利用:Composeでユーザーが選択した画像Uriを取得
- 画像URLの取得:アップロード後、ダウンロードURLをComposeで表示
- セキュリティルール:開発時は読み書き可に設定、運用時は認証ユーザーのみアクセス可能に変更
📘 まとめ
第21回では、Firebase Storageを使った画像のアップロードとCompose画面での表示方法を解説しました。Gemini AIを活用することで、UI作成やアップロード処理のKotlinコードを効率的に生成可能です。これにより、初心者でもクラウドストレージを活用したアプリ開発がスムーズに進められます。
「※本ブログはこの一文以外は、AIによる記載です。内容にウソが含まれている可能性がありますので、ご注意ください。写真もAIで作成しています。」