mcpField
F
firebase-storage

firebase-storage

github.com/evancaクラウド・DevOps665171 回インストール1 日前に更新
リポジトリ

firebase-storage について

Flutter 向けの Firebase Cloud Storage ガイドです。ファイル転送、メタデータ、エラー処理、進捗監視、アクセス制御を扱います。

主な機能

  1. 01ファイルのアップロード、ダウンロード、削除
  2. 02ファイルメタデータの取得と更新
  3. 03Storage エラーと再試行の処理
  4. 04アップロードの監視、一時停止、再開、キャンセル
  5. 05Firebase Security Rules によるアクセス制御

活用シーン

  1. 01Flutter アプリでファイルを保存・取得
  2. 02アップロードファイルにカスタムメタデータを付与
  3. 03進捗表示と転送の管理
  4. 04ユーザー権限に応じたファイルアクセス制限

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/evanca/flutter-ai-rules --skill firebase-storage

インストール後、Claude Code で/firebase-storageを入力して読み込まれたか確認します。

詳細

Firebase Cloud Storage スキル

このスキルでは、Flutter アプリケーションで Firebase Cloud Storage を正しく使用する方法を説明します。

使用するタイミング

次の場合にこのスキルを使用します。

  • Flutter プロジェクトで Cloud Storage を設定するとき。
  • ファイルをアップロードまたはダウンロードするとき。
  • ファイルのメタデータを管理するとき。
  • Storage のエラーに対処し、アップロードの進行状況を監視するとき。

1. セットアップと設定

flutter pub add firebase_storage
import 'package:firebase_storage/firebase_storage.dart';

final storage = FirebaseStorage.instance;
// Or specify a bucket explicitly:
// final storage = FirebaseStorage.instanceFor(bucket: "gs://BUCKET_NAME");
  • Firebase Storage を使用するには、Blaze(従量課金制)プランが必要です。
  • flutterfire configure を実行して、Firebase の設定にデフォルトの Storage バケット名を追加します。

セキュリティに関する注意: デフォルトでは、Cloud Storage バケットで何らかの操作を行うには Firebase Authentication が必要です。パブリックアクセスを設定すると、App Engine のファイルも一般公開される可能性があります。Authentication を設定したら、アクセスを再び制限してください。


2. ファイル操作

参照を作成する:

final storageRef = FirebaseStorage.instance.ref();
final fileRef = storageRef.child("uploads/file.jpg");

アップロード:

final uploadTask = fileRef.putFile(file);
final snapshot = await uploadTask;
final downloadUrl = await snapshot.ref.getDownloadURL();

ダウンロード(メモリ内):

final data = await fileRef.getData();

ダウンロード URL:

final downloadUrl = await fileRef.getDownloadURL();

削除:

await fileRef.delete();

3. メタデータの管理

メタデータを取得する:

final metadata = await fileRef.getMetadata();
print('Content type: ${metadata.contentType}');
print('Size: ${metadata.size}');

メタデータを更新する:

final newMetadata = SettableMetadata(
  contentType: "image/jpeg",
  customMetadata: {'uploaded_by': 'user123'},
);
await fileRef.updateMetadata(newMetadata);

ファイルに追加のキーと値のペアを保存するには、カスタムメタデータを使用します。


4. エラー処理

FirebaseException を使用して try-catch でエラーを処理します。主なエラーコードは次のとおりです。

コード意味
storage/object-not-found参照先にファイルが存在しません
storage/bucket-not-foundCloud Storage 用のバケットが設定されていません
storage/project-not-foundCloud Storage 用のプロジェクトが設定されていません
storage/quota-exceededストレージの割り当て容量を超えました
storage/unauthenticatedユーザーの認証が必要です
storage/unauthorizedユーザーに権限がありません
storage/retry-limit-exceeded操作がタイムアウトしました
  • Spark プランで quota-exceeded が発生した場合は、Blaze にアップグレードしてください。
  • ネットワーク関連のエラーやタイムアウトに備えて、リトライ処理を実装してください。

5. パフォーマンスとベストプラクティス

アップロードの進行状況を監視する:

final uploadTask = fileRef.putFile(file);
uploadTask.snapshotEvents.listen((TaskSnapshot snapshot) {
  print('Progress: ${(snapshot.bytesTransferred / snapshot.totalBytes) * 100}%');
});
  • uploadTask.cancel() でアップロードをキャンセルします。
  • uploadTask.pause() と uploadTask.resume() でアップロードを一時停止/再開します。
  • アップロード前にファイルサイズを最適化すると、コストを抑え、パフォーマンスを向上できます。
  • 包括的なデータ管理には、Cloud Storage を Firestore と併用します。
  • ローカルでの開発とテストには、Firebase Local Emulator Suiteを使用します。

6. セキュリティ

  • Firebase Security Rulesを使用して、ファイルへのアクセスを制御します。
  • Storage のルールをFirebase Authenticationと組み合わせて、ユーザー単位のアクセス制御を行います。
  • 本番環境にデプロイする前に、セキュリティルールを十分にテストしてください。

参考資料

コメント