コンソールへ移動

Firebase プロジェクトについて理解する

このページでは、Firebase プロジェクトに関するいくつかの重要なコンセプトの概要を説明します。リンクがある場合はそのページに移動し、特長やサービス、さらには他のプラットフォームについて、詳細な情報を確認してください。このページの末尾では、Firebase プロジェクトの一般的なベスト プラクティスをリストにしています。

Firebase プロジェクト、アプリ、プロダクトの関係

Firebase プロジェクトは Firebase の最上位のエンティティです。Firebase プロジェクトにアプリをリンクして、Firebase を使用するための構成を行ったあとで、アナリティクス、Cloud Firestore、Performance Monitoring、もしくは Remote Config などの Firebase プロダクト用 Firebase SDK をいくつでも追加できます。

Firebase プロジェクトと Google Cloud Platform(GCP)の関係

Firebase コンソールで新しい Firebase プロジェクトを作成した場合、内部で実際に作成されるのは Google Cloud Platform(GCP)プロジェクトです。GCP プロジェクトは、データ、コード、構成、サービスのための仮想的なコンテナと考えることができます。Firebase プロジェクトは、GCP プロジェクトに Firebase 固有の構成とサービスを加えたものです。 はじめに GCP プロジェクトを作成し、その後に Firebase を追加することもできます。

Firebase プロジェクトは GCP プロジェクトであるため、次のような特長があります。

  • Firebase コンソールに表示されるプロジェクトは、GCP ConsoleGoogle API コンソールにも表示されます。

  • プロジェクトの課金権限は、Firebase と GCP 間で共有されます。

  • プロジェクトにおける一意の識別子(例: project ID など)は、Firebase と GCP 間で共有されます。

  • プロジェクトで、Firebase と GCP の両方のプロダクトと API を使えます。

  • プロジェクトを削除すると、Firebase の GCP の両方で削除されます。

Firebase プロジェクトとアプリ接続の設定

Firebase コンソールで Firebase プロジェクトを設定し、アプリへ接続できます(高度な用途の場合は Firebase Management REST API も使用できます)。プロジェクトの設定とアプリへの接続処理を実施する際に、いくつかの構成を決定し、特別な構成ファイルもしくはオブジェクトをローカル プロジェクトに追加する必要があります。

プロジェクトを設定し、アプリへの接続を行う前に、一般的なベスト プラクティスをよく確認してください。

プロジェクト名

プロジェクトを作成する際には、プロジェクト名を設定します。この識別子は、Firebase コンソールGCP ConsoleFirebase CLI でプロジェクトを内部限定で表す名称になります。さまざまなプロジェクトをより簡単に見分けられるようにするためのものであり、Firebase や GCP で公開されているどのプロダクト、サービス、リソースでも、このプロジェクト名は非公開となっています。

プロジェクト名は、settings [プロジェクトの設定] でいつでも編集できます。プロジェクト名が上部ペインに表示されます。

プロジェクト ID

Firebase プロジェクトとその関連 GCP プロジェクトでは、Firebase と GCP を含めた全体で、プロジェクト用のグローバルで一意な識別子であるプロジェクト ID が設定されます。Firebase プロジェクトの作成時、Firebase によって自動的に一意な ID がプロジェクトに割り当てられますが、この ID はセットアップ中に編集できます。

プロジェクトを削除すると、プロジェクト ID も削除されます。また、その ID を他のプロジェクトでもう一度使用することもできなくなります。

Firebase リソースとプロジェクト ID

一般公開されている Firebase のリソースにプロジェクト ID が表示されます。以下はその例です。

  • デフォルト ホスティング サブドメイン - your-project-id.firebaseapp.com
  • デフォルト Realtime Database URL - your-project-id.firebaseio.com
  • デフォルト Cloud Storage バケット名 - your-project-id.appspot.com

上記のすべてのリソースについて、デフォルト以外のインスタンスも作成できます。デフォルトでないインスタンスの一般公開名は、自由に編集可能です。Firebase にホストされているサイトにカスタム ドメインを接続でき、Realtime Database のシャーディングが可能なほか、複数の Cloud Storage バケットが作成できます(お使いのプラットフォームに関するスタートガイドをご確認ください)。

Firebase CLI とプロジェクト ID

用途により、同じローカルアプリ ディレクトリに関連付けられた複数の Firebase プロジェクトを扱う場合があります。そのような状況で Firebase CLI を使用する場合、どの Firebase プロジェクトを扱うのかを通知するために firebase コマンドを使って --project フラグを引き渡す必要があります。

複数のプロジェクト ID を覚える必要がないよう、それぞれの Firebase プロジェクトにプロジェクト エイリアスを設定することもできます。

API 呼び出しとプロジェクト ID

複数の API 呼び出しを使用する場合は、Firebase プロジェクトを識別するためのプロジェクト ID が必要となります。

プロジェクト ID を探す

  • Firebase コンソールで、settings をクリックし、[プロジェクトの設定] を選択します。プロジェクト ID が上部ペインに表示されます。

  • Firebase CLI を使用して firebase list を実行します。プロジェクト ID がアカウントに関連するすべての Firebase プロジェクトとともに表示されます。

Firebase 構成ファイルとオブジェクト

アプリを Firebase プロジェクトに接続すると、Firebase コンソールから、ローカル プロジェクトに直接追加できる Firebase 構成ファイル(Android / iOS の場合)、もしくは構成オブジェクト(ウェブの場合)が提供されます。

  • iOS の場合は、GoogleService-Info.plist 構成ファイルを追加します。
  • Android の場合は、google-services.json 構成ファイルを追加します。
  • ウェブの場合は、初期化スクリプト用の Firebase 構成オブジェクトを追加します。

Firebase 構成ファイルや構成オブジェクトの取得は、いつでも可能です。

Firebase 構成ファイルや構成オブジェクトによって、Firebase プロジェクトやそのリソース(データベース、ストレージ バケットなど)とアプリが関連付けられます。

プラットフォーム固有の ID(Firebase コンソールの設定ワークフローで入力されたもの)や、Firebase プロジェクト固有の値(API キー、Realtime Database の URL、ストレージ バケット名など)を含んだ構成ファイルや構成オブジェクトの内容については、公開が前提となっています。このような点を考慮したうえで、セキュリティ ルールを使用し、Realtime DatabaseCloud FirestoreCloud Storage にあるデータとファイルを保護してください。

オープンソース プロジェクトの場合、一般的に考えて、ソース管理に Firebase 構成ファイルや構成オブジェクトを含めることはおすすめできません。なぜなら、ほとんどの場合において、ユーザーが各自で Firebase プロジェクトを作成し、それぞれのバックエンドにアプリを接続すると想定されるためです。

Firebase プロジェクトの管理

Firebase プロジェクトの管理方法への影響が考えられる場合には、プロジェクト レベルの一般的なベスト プラクティスを必ず確認してください。

プロジェクトを管理するツール

Firebase コンソール

Firebase コンソールによって、機能の充実した環境で Firebase プロダクト、アプリ、プロジェクト レベルの設定を管理できます。

Firebase コンソール - [Project Overview] 画面

コンソール左側のパネルに、最上位のカテゴリ別に整理された Firebase プロダクトの一覧が表示されます。左側のパネルの上部で settings をクリックして、プロジェクト設定を開きます(設定には統合アクセス権限課金があります)。

コンソール中央には、さまざまな種類のアプリに接続するための設定ワークフローを起動するボタンが表示されます。Firebase の利用を開始すると、コンソールのメインエリアが、使用中のプロダクトの状態を表示するダッシュボードに変わります。

Firebase CLI(コマンドライン ツール)

Firebase では、Firebase Hosting と Cloud Functions for Firebase など、特定の Firebase プロダクトについて構成と管理を行う Firebase CLI も用意されています。

npm を使って CLI をインストールすると、グローバルに firebase コマンドを利用できるようになります。Firebase にホストされたコンテンツの新バージョンのデプロイや、関数の更新にはこの CLI を使用してください。また、CLI を使用してローカルアプリ ディレクトリと Firebase プロジェクトをリンクさせることも可能です。

Firebase Management REST API

Firebase Management REST API を使うと、Firebase プロジェクトをプログラムで管理できるようになります。たとえば、プログラムで Android アプリiOS アプリをプロジェクトに登録できます。また、プロジェクトに登録されているアプリ(Android / iOS)を一覧表示することもできます。

一般的なベスト プラクティス

プロジェクトへのアプリの追加

エンドユーザーから見て、1 つのプロジェクト内のすべてのアプリが、同じアプリケーションのプラットフォーム別のバリエーションとなるようにしてください。同じアプリやゲームの Android バージョン、iOS バージョン、ウェブ バージョンから、同じ Firebase プロジェクトに接続してみることをおすすめします。通常、1 つのプロジェクト内にあるすべてのアプリは、同じ Firebase リソース(データベースやストレージ バケットなど)を共有します。

複数のビルド バリエーションで、異なる iOS バンドル ID や Android アプリ ID を定義する場合には、各バリエーションを別々の Firebase プロジェクトに登録できます。ただし、複数のバリエーションで同じ Firebase リソースを共有する場合は、同じ Firebase プロジェクトに登録してください。

1 つのプロジェクトに含めることのできるアプリ数に上限はありませんが、アプリの追加によって、基礎となる OAuth 2.0 クライアント ID が 1 つ以上作成される場合があります。1 つのプロジェクトで作成できるクライアント ID の数には上限があり、30 個程度です。

マルチテナンシー

論理的に独立した別のアプリやウェブサイトを、単一のプロジェクトに複数接続すること(「マルチテナンシー」と呼ばれるやり方)は、おすすめできません。マルチテナンシーには慎重な構成が必要となる場合があり、アナリティクス集計時の意図せぬ問題や、認証の共有、過度に複雑化したデータベース構造、そして難解なセキュリティ ルールなどの課題がデータ プライバシーに大きく関わってきます。

一般に、アプリ間で同じデータと構成を共有しないのであれば、それぞれのアプリを異なる Firebase プロジェクトに接続することを強くおすすめします。

たとえば、ホワイトラベル アプリケーションを開発する場合、個別にラベル付けしたアプリごとに固有の Firebase プロジェクトを用意するべきです。それぞれのアプリは、他のアプリとデータを共有しません。プライバシーの観点からも、データの共有はすべきではありません。

なお、Firebase プロジェクト、アプリ、サイトの数には一般的な上限があります。

  • アカウントあたりのプロジェクト数

    • 無料の Spark プラン - プロジェクト割り当ての上限によって少ない数しか保有できません(通常は約 5~10)。
    • 有料プラン - Cloud 請求先アカウントが良好な状態である限り、請求先アカウントあたりのプロジェクト割り当ての数は大幅に増加します。

    多くのデベロッパーにとってプロジェクト割り当ての上限が問題になることはほとんどありませんが、必要に応じてプロジェクト割り当ての増加をリクエストできます。

    プロジェクトが完全に削除されるまで 30 日かかります。完全に削除されるまでは割り当てにカウントされます。

  • プロジェクトあたりのアプリ数

    1 つのプロジェクトに含めることのできるアプリ数に上限はありませんが、アプリの追加によって、基礎となる OAuth 2.0 クライアント ID が 1 つ以上作成される場合があります。1 つのプロジェクトで作成できるクライアント ID の数には上限があり、30 個程度です。

  • プロジェクトあたりのホスティング サイト数

    Firebase Hosting のマルチサイト機能では、プロジェクト 1 つあたりで最大 20 個のサイトをサポートします。

アプリのリリース