Cloud Storage for Firebase を使用すると、画像や動画などのユーザー作成コンテンツをアップロードして共有し、リッチメディア コンテンツをアプリに組み込むことができます。データは Google Cloud Storage バケットに格納されます。これはエクサバイト スケールのオブジェクト ストレージ ソリューションで、高可用性とグローバルな冗長性を備えています。Cloud Storage for Firebase を使用すると、モバイル デバイスやウェブブラウザから直接ファイルを安全にアップロードでき、不安定なネットワークでも安心して行えます。
始める前に
Cloud Storage を使用するには、次の作業が必要です。
Firebase を使用するように Unity プロジェクトを登録して構成する。
Unity プロジェクトですでに Firebase を使用している場合、この登録と構成はすでに行われています。
Unity プロジェクトがない場合は、サンプルアプリをダウンロードできます。
Unity プロジェクトに Firebase Unity SDK(具体的には
FirebaseStorage.unitypackage
)を追加する。
Firebase を Unity プロジェクトに追加するには、Firebase コンソールと開いている Unity プロジェクトの両方でタスクを行う必要があります(コンソールから Firebase 構成ファイルをダウンロードし、それを Unity プロジェクトに移動するなど)。
デフォルトの Cloud Storage バケットを作成する
Firebase コンソールのナビゲーション パネルで [Storage] を選択し、[始める] をクリックします。
セキュリティ ルールを使用した Cloud Storage データの保護に関するメッセージを確認します。開発時に公開アクセスルールの設定を考慮してください。
デフォルトの Cloud Storage バケットのロケーションを選択します。
このロケーション設定が、プロジェクトのデフォルトの Google Cloud Platform(GCP)リソース ロケーションになります。この場所は、プロジェクト内の GCP サービスに使用されます 位置情報の設定が必要なアプリの場合、 Cloud Firestore データベースと App Engine アプリ (Cloud Scheduler を使用する場合は必須)。
ロケーションを選択できない場合は、プロジェクトにデフォルトの GCP リソース ロケーションがすでに設定されています。このロケーションは、プロジェクトの作成時か、ロケーション設定を必要とする別のサービスの設定時に設定されたものです。
Blaze プランをご利用の場合は、それぞれ独自のロケーションを使用する複数のバケットを作成できます。
[完了] をクリックします。
公開アクセスを設定する
Cloud Storage for Firebase には宣言型のルール言語が用意されているため、データの構造化方法、インデックスの作成方法、データの書き込みと読み取りの許可を定義できます。認証ユーザーのみがデータの読み取りと書き込みができるように、Cloud Storage への読み取りと書き込みのアクセスはデフォルトでは制限されています。Authentication を設定せずに開始するには、公開アクセスルールを構成します。
これにより、Cloud Storage は、アカウントを使用していないユーザーを含め、誰にでも利用できるようになります 設定時は、必ず Cloud Storage を再び制限してください あります。
FirebaseStorage
クラスへのアクセス
Firebase.Storage.FirebaseStorage
は、Cloud Storage Unity SDK のエントリ ポイントです。
// Get a reference to the storage service, using the default Firebase App FirebaseStorage storage = FirebaseStorage.DefaultInstance;
Cloud Storage を使い始める準備ができました。
まず、Cloud Storage 参照を作成する方法を学びましょう。
高度な設定
次のようないくつかの使用例では、追加の設定が必要です。
- 複数のリージョンで Cloud Storage バケットを使用する
- さまざまなストレージクラスで Cloud Storage バケットを使用する
- 複数の認証ユーザーが同一アプリ内で Cloud Storage バケットを使用する
最初の使用例は、ユーザーが世界中に存在し、それぞれのユーザーの近くにデータを保存したい場合に最適です。たとえば、レイテンシを短縮するため、米国、ヨーロッパ、アジアの各リージョンでバケットを作成して、各リージョンのユーザーのデータをそこに保存するといったことができます。
2 番目の使用例は、アクセス パターンの異なるデータがある場合に役立ちます。たとえば、写真などの頻繁にアクセスされるコンテンツを格納するためにはマルチリージョンまたはリージョン バケットを、またユーザー バックアップなどのアクセス頻度の低いコンテンツを格納するためには Nearline または Coldline バケットをそれぞれ設定できます。
上記のどちらの場合も、複数の Cloud Storage バケットを使用します。
3 番目の使用例は、Google ドライブのような、ユーザーが複数のログイン アカウント(個人用アカウントや仕事用アカウントなど)を持つことができるアプリを作成する場合に役立ちます。カスタムの Firebase アプリ インスタンスを使用して、追加の各アカウントを認証できます。
複数の Cloud Storage バケットを使用する
上記のデフォルト以外の Cloud Storage バケットを使用する場合は、
1 つのアプリで複数の Cloud Storage バケットを使用する場合は、
カスタム バケットを参照する FirebaseStorage
を次のように作成します。
// Get a non-default Storage bucket var 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
のインスタンスを作成します。
// Get the default bucket from a custom FirebaseApp FirebaseStorage storage = FirebaseStorage.GetInstance(customApp); // Get a non-default bucket from a custom FirebaseApp FirebaseStorage storageCustom = FirebaseStorage.GetInstance(customApp, "gs://my-custom-bucket");
次のステップ
アプリを起動する準備をする。
- Google Cloud コンソールでプロジェクトの予算アラートを設定する。
- Firebase コンソールの [使用量と請求額] ダッシュボードをモニタリングして、複数の Firebase サービスを通じたプロジェクトの全体的な使用状況を確認する。 使用状況の詳しい情報を確認するには、Cloud Storage 使用状況ダッシュボードをご利用ください。
- Firebase リリース チェックリストを確認する。