ウェブで使ってみる

Cloud Storage for Firebase を使用して画像や動画などのユーザー作成コンテンツをアップロードして共有し、リッチメディア コンテンツをアプリに組み込むことができます。データは Google Cloud Storage バケットに格納されます。これはエクサバイト スケールのオブジェクト ストレージ ソリューションで、高い可用性とグローバルな冗長性を備えています。Cloud Storage を使うと、モバイル端末やウェブブラウザから直接ファイルを安全にアップロードでき、不安定なネットワークも簡単に扱うことができます。

前提条件

  1. アプリに Firebase SDK を追加して設定します。

公開アクセスを設定する

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

この場合、アプリを使用しない人を含むあらゆる人々に Storage が公開されるため、認証を設定するときに必ず Storage へのアクセス制限を再設定してください。

Cloud Storage を設定する

バケットを Firebase SDK の構成に追加する必要があります。

そのためには Storage バケット URL が必要です。これは、Firebase コンソールの [Storage] ページの [ファイル] タブにあるファイル ビューアに見出しとして表示されています。この URL を確認したら、config オブジェクトに storageBucket 属性を追加します。

  // Set the configuration for your app
  // TODO: Replace with your project's config object
  var config = {
    apiKey: '<your-api-key>',
    authDomain: '<your-auth-domain>',
    databaseURL: '<your-database-url>',
    storageBucket: '<your-storage-bucket>'
  };
  firebase.initializeApp(config);

  // Get a reference to the storage service, which is used to create references in your storage bucket
  var storage = firebase.storage();

これで Cloud Storage が使えるようになりました。

まず、Cloud Storage 参照を作成する方法を学びましょう。

高度な設定

次のようないくつかのユースケースでは追加の設定が必要です。

  • 複数の地域でストレージ バケットを使用する
  • 異なるストレージ クラスでストレージ バケットを使用する
  • 同じアプリで複数の認証ユーザーを使用してストレージ バケットを使用する

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

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

上記のどちらの場合も、複数のストレージ バケットを使用します。

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

複数のストレージ バケットを使用する

上記で提供されているデフォルト以外のストレージ バケットを使用する場合、または単一のアプリで複数のストレージ バケットを使用する場合は、カスタム バケットを参照する firebase.storage のインスタンスを作成できます。

// Get a non-default Storage bucket
var storage = firebase.app().storage("gs://my-custom-bucket");

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

既存の Cloud Storage バケットを Firebase にインポートするときは、Google Cloud SDK に含まれている gsutil ツールを使用して、Firebase からこれらのファイルにアクセスできるようにする必要があります。

gsutil -m acl ch -r -u firebase-storage@system.gserviceaccount.com:O gs://<your-cloud-storage-bucket>

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

カスタムの Firebase App を使用する

カスタムの firebase.app.App を使用して複雑なアプリを作成する場合は、そのアプリで初期化された firebase.storage.Storage のインスタンスを作成できます。

// Get the default bucket from a custom firebase.app.App
var storage = customApp.storage();

// Get a non-default bucket from a custom firebase.app.App
var storage = customApp.storage("gs://my-custom-bucket");

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。