Cloud Storage for Firebase を使用すると、画像や動画などのユーザー生成コンテンツをアップロードして共有できるため、リッチ メディア コンテンツをアプリに組み込むことができます。データはGoogle Cloud Storageバケットに保存されます。これは、高可用性とグローバルな冗長性を備えたエクサバイト規模のオブジェクト ストレージ ソリューションです。 Cloud Storage for Firebase を使用すると、これらのファイルをモバイル デバイスやウェブブラウザから直接安全にアップロードでき、不安定なネットワークを簡単に処理できます。
前提条件
まだ行っていない場合は、 Firebase を Android プロジェクトに追加します。
デフォルトの Cloud Storage バケットを作成する
Firebase コンソールのナビゲーション ペインから [ Storage ] を選択し、[ Get started ] をクリックします。
セキュリティ ルールを使用した Cloud Storage データの保護に関するメッセージを確認します。開発中は、パブリック アクセスのルールを設定することを検討してください。
デフォルトの Cloud Storage バケットの場所を選択します。
この場所の設定は、プロジェクトのデフォルトの Google Cloud Platform (GCP) リソースの場所です。この場所は、場所の設定を必要とするプロジェクト内の GCP サービス、特にCloud FirestoreデータベースとApp Engineアプリ (Cloud Scheduler を使用する場合に必要) に使用されることに注意してください。
ロケーションを選択できない場合、プロジェクトにはデフォルトの GCP リソース ロケーションがすでに存在します。プロジェクトの作成時、または場所の設定が必要な別のサービスのセットアップ時に設定されました。
Blaze プランを使用している場合は、それぞれに独自の場所を持つ複数のバケットを作成できます。
[完了]をクリックします。
公開アクセスを設定する
Cloud Storage for Firebase は、データをどのように構造化するか、インデックスを作成する方法、いつデータを読み書きできるかを定義できる宣言型ルール言語を提供します。デフォルトでは、Cloud Storage への読み取りおよび書き込みアクセスは制限されているため、認証されたユーザーのみがデータの読み取りまたは書き込みを行うことができます。認証をセットアップせずに開始するには、パブリック アクセスのルールを構成できます。
これにより、アプリを使用していない人も含めて、誰でも Cloud Storage を使用できるようになるため、認証を設定するときに Cloud Storage を再度制限してください。
アプリに Cloud Storage SDK を追加する
モジュール (アプリレベル) の Gradle ファイル(通常は<project>/<app-module>/build.gradle
) で、Cloud Storage Android ライブラリの依存関係を追加します。ライブラリのバージョン管理には、 Firebase Android BoMを使用することをお勧めします。 Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Cloud Storage library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-storage-ktx' }
Firebase Android BoMを使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。
(代替) BoM を使用せずに Firebase ライブラリの依存関係を追加する
Firebase BoM を使用しないことを選択した場合は、依存関係の行で各 Firebase ライブラリ バージョンを指定する必要があります。
アプリで複数のFirebase ライブラリを使用する場合は、BoM を使用してライブラリ バージョンを管理することを強くお勧めします。これにより、すべてのバージョンに互換性が確保されます。
dependencies { // Add the dependency for the Cloud Storage library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-storage-ktx:20.1.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Cloud Storage library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-storage' }
Firebase Android BoMを使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。
(代替) BoM を使用せずに Firebase ライブラリの依存関係を追加する
Firebase BoM を使用しないことを選択した場合は、依存関係の行で各 Firebase ライブラリ バージョンを指定する必要があります。
アプリで複数のFirebase ライブラリを使用する場合は、BoM を使用してライブラリ バージョンを管理することを強くお勧めします。これにより、すべてのバージョンに互換性が確保されます。
dependencies { // Add the dependency for the Cloud Storage library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-storage:20.1.0' }
クラウド ストレージを設定する
Cloud Storage バケットにアクセスするための最初のステップは、 FirebaseStorage
のインスタンスを作成することです。
Kotlin+KTX
storage = Firebase.storage
Java
FirebaseStorage storage = FirebaseStorage.getInstance();
Cloud Storage を使用する準備が整いました。
まず、 Cloud Storage 参照を作成する方法を学びましょう。
詳細設定
追加のセットアップが必要なユース ケースがいくつかあります。
- 複数の地域で Cloud Storage バケットを使用する
- 異なるストレージ クラスでの Cloud Storage バケットの使用
- 同じアプリ内の複数の認証済みユーザーで Cloud Storage バケットを使用する
最初のユース ケースは、世界中にユーザーがいて、ユーザーのデータを近くに保存したい場合に最適です。たとえば、米国、ヨーロッパ、アジアにバケットを作成して、これらの地域のユーザーのデータを保存し、レイテンシを短縮できます。
2 番目の使用例は、アクセス パターンが異なるデータがある場合に役立ちます。たとえば、写真やその他の頻繁にアクセスされるコンテンツを格納するマルチリージョンまたはリージョン バケットと、ユーザー バックアップまたはその他のアクセス頻度の低いコンテンツを格納するニアラインまたはコールドライン バケットをセットアップできます。
これらのいずれのユース ケースでも、複数の Cloud Storage バケットを使用する必要があります。
3 番目のユース ケースは、ユーザーが複数のログイン アカウント (個人アカウントと仕事用アカウントなど) を持つことができる Google ドライブなどのアプリを構築している場合に役立ちます。カスタム Firebase アプリ インスタンスを使用して、追加の各アカウントを認証できます。
複数の Cloud Storage バケットを使用する
上記のデフォルト以外の Cloud Storage バケットを使用する場合、または 1 つのアプリで複数の Cloud Storage バケットを使用する場合は、カスタム バケットを参照するFirebaseStorage
のインスタンスを作成できます。
Kotlin+KTX
// Get a non-default Storage bucket val storage = Firebase.storage("gs://my-custom-bucket")
Java
// Get a non-default Storage bucket FirebaseStorage storage = FirebaseStorage.getInstance("gs://my-custom-bucket");
インポートされたバケットの操作
既存の Cloud Storage バケットを Firebase にインポートする場合、 Google Cloud SDKに含まれている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
のインスタンスを作成できます。
Kotlin+KTX
// Get the default bucket from a custom FirebaseApp val storage = Firebase.storage(customApp!!) // Get a non-default bucket from a custom FirebaseApp val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")
Java
// Get the default bucket from a custom FirebaseApp FirebaseStorage storage = FirebaseStorage.getInstance(customApp); // Get a non-default bucket from a custom FirebaseApp FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");
次のステップ
アプリを起動する準備をします。
App Checkを有効にして、自分のアプリだけがストレージ バケットにアクセスできるようにします。
Google Cloud Console でプロジェクトの予算アラートを設定します。
Firebase コンソールで使用状況と請求のダッシュボードを監視して、複数の Firebase サービスにわたるプロジェクトの使用状況の全体像を把握します。より詳細な使用状況については、クラウド ストレージの使用状況ダッシュボードにアクセスすることもできます。
Firebase の起動チェックリストを確認します。