Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

Flutterでクラウドストレージを使い始める

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Cloud Storage for Firebaseを使用すると、画像や動画などのユーザー生成コンテンツをアップロードして共有できます。これにより、アプリにリッチメディアコンテンツを組み込むことができます。データはGoogleCloudStorageバケットに保存されます。これは、高可用性とグローバルな冗長性を備えたエクサバイト規模のオブジェクトストレージソリューションです。 Cloud Storage for Firebaseを使用すると、これらのファイルをモバイルデバイスやウェブブラウザから直接安全にアップロードして、むらのあるネットワークを簡単に処理できます。

前提条件

まだ行っていない場合は、Flutter用のFirebaseSDKをインストールして初期化します

デフォルトのCloudStorageバケットを作成します

  1. Firebaseコンソールのナビゲーションペインで[ストレージ]を選択し、[開始]をクリックします。

  2. セキュリティルールを使用してクラウドストレージデータを保護することに関するメッセージを確認します。開発中は、パブリックアクセスのルールを設定することを検討してください。

  3. デフォルトのCloudStorageバケットの場所を選択します。

    • この場所の設定は、プロジェクトのデフォルトのGoogle Cloud Platform(GCP)リソースの場所です。この場所は、場所の設定が必要なプロジェクトのGCPサービス、具体的にはCloudFirestoreデータベースとAppEngineアプリ(Cloud Schedulerを使用する場合に必要)に使用されることに注意してください。

    • 場所を選択できない場合、プロジェクトにはすでにデフォルトのGCPリソースの場所があります。プロジェクトの作成時、または場所の設定が必要な別のサービスの設定時に設定されました。

    Blazeプランを使用している場合は、それぞれが独自の場所を持つ複数のバケットを作成できます。

  4. [完了]をクリックします。

パブリックアクセスを設定する

Cloud Storage for Firebaseは、データの構造化方法、インデックス作成方法、データの読み取りと書き込みのタイミングを定義できる宣言型ルール言語を提供します。デフォルトでは、Cloud Storageへの読み取りおよび書き込みアクセスが制限されているため、認証されたユーザーのみがデータの読み取りまたは書き込みを行うことができます。 Firebase認証を設定せずに開始するには、パブリックアクセスのルールを設定できます。

これにより、Cloud Storageは、アプリを使用していない人も含め、誰でも利用できるようになります。そのため、認証を設定するときは、CloudStorageを再度制限してください。

CloudStorageSDKをアプリに追加します

  1. Flutterプロジェクトのルートから、次のコマンドを実行してプラグインをインストールします。

    flutter pub add firebase_storage
    
  2. 完了したら、Flutterアプリケーションを再構築します。

    flutter run
    
  3. Dartコードにプラグインをインポートします。

    import 'package:firebase_storage/firebase_storage.dart';
    

クラウドストレージをセットアップする

Cloud Storageバケットにアクセスするための最初のステップは、 FirebaseStorageのインスタンスを作成することです。

final storage = FirebaseStorage.instance;

これで、CloudStorageの使用を開始する準備が整いました。

まず、 CloudStorageリファレンスを作成する方法を学びましょう。

詳細設定

追加のセットアップが必要なユースケースがいくつかあります。

最初のユースケースは、世界中にユーザーがいて、その近くにデータを保存したい場合に最適です。たとえば、米国、ヨーロッパ、アジアでバケットを作成して、これらの地域のユーザーのデータを保存し、レイテンシを短縮できます。

2番目のユースケースは、アクセスパターンが異なるデータがある場合に役立ちます。たとえば、写真やその他の頻繁にアクセスされるコンテンツを保存するマルチリージョンまたはリージョナルバケットと、ユーザーのバックアップやその他の頻繁にアクセスされないコンテンツを保存するニアラインまたはコールドラインバケットを設定できます。

これらのユースケースのいずれでも、複数のCloudStorageバケットを使用する必要があります。

3番目の使用例は、ユーザーが複数のログインアカウント(たとえば、個人アカウントと仕事用アカウント)を持つことができるGoogleドライブなどのアプリを構築している場合に役立ちます。カスタムFirebaseアプリインスタンスを使用して、追加の各アカウントを認証できます。

複数のCloudStorageバケットを使用する

上記のデフォルト以外のCloudStorageバケットを使用する場合、または単一のアプリで複数のCloud Storageバケットを使用する場合は、カスタムバケットを参照するFirebaseStorageのインスタンスを作成できます。

// Get a non-default Storage bucket
final storage = FirebaseStorage.instanceFor(bucket: "gs://my-custom-bucket");

インポートされたバケットの操作

既存のCloudStorageバケットをFirebaseにインポートする場合、 GoogleCloudSDKに含まれているgsutilツールを使用してこれらのファイルにアクセスする機能をFirebaseに付与する必要があります。

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://YOUR-CLOUD-STORAGE-BUCKET

Firebaseプロジェクトの概要で説明されているように、プロジェクト番号を見つけることができます。

新しく作成されたバケットには、Firebaseを許可するようにデフォルトのアクセス制御が設定されているため、これは影響しません。これは一時的な措置であり、将来的には自動的に実行されます。

カスタムFirebaseアプリを使用する

カスタムFirebaseAppを使用してより複雑なアプリを構築している場合は、そのアプリで初期化されたFirebaseStorageのインスタンスを作成できます。

// Use a non-default App
final storage = FirebaseStorage.instanceFor(app: customApp);

次のステップ