Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

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

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

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

Firebase プロジェクトは Firebase の最上位のエンティティです。プロジェクトでは、iOS アプリ、Android アプリ、ウェブアプリを登録して Firebase アプリを作成します。Firebase にアプリを登録すると、アナリティクス、Cloud Firestore、Performance Monitoring、Remote Config などの Firebase プロダクト用の Firebase SDK をいくつでも追加できます。

このプロセスの詳細については、スタートガイド(iOS | Android | ウェブ | Unity | C++)をご覧ください。

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

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

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

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

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

  • プロジェクトの一意の識別子(プロジェクト番号プロジェクト ID など)は、Firebase と GCP 間で共有されます。

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

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

Firebase プロジェクトの設定とアプリの登録

Firebase コンソールで Firebase プロジェクトを設定し、アプリを登録できます(高度な用途の場合は Firebase Management REST API または Firebase CLI も使用できます)。プロジェクトを設定してアプリを登録する際は、組織上の決定を行い、Firebase 固有の構成情報をローカル プロジェクトに追加する必要があります。

プロジェクトを設定してアプリを登録する前に、プロジェクト レベルの一般的なベスト プラクティス(このページの下部にあります)をよく確認してください。

プロジェクト名

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

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

プロジェクト番号

Firebase プロジェクトとその関連 GCP プロジェクトにはプロジェクト番号が付けられます。これは、Google が割り当てた、プロジェクト用のグローバルに一意で正規の識別子です。この識別子は、統合を構成する場合や、Firebase、Google、サードパーティのサービスに対して API 呼び出しを行う場合に使用します。

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

多くの API 呼び出しでは、プロジェクトの一意の識別子が必要となります。多くの API でプロジェクト ID を使用できますが、Firebase、Google、サードパーティのサービスに対して API 呼び出しを行う場合には、プロジェクト番号を使用することをおすすめします。

プロジェクトの識別子、特にプロジェクト番号の使い方の詳細については、Google の AIP 2510 標準をご覧ください。

プロジェクト番号を確認する

  • Firebase コンソール: [プロジェクトの設定] をクリックします。プロジェクト番号が上部ペインに表示されます。

  • Firebase CLI: firebase projects:list を実行します。お使いのアカウントに関連付けられているすべての Firebase プロジェクトとともにプロジェクト番号が表示されます。

  • Firebase Management REST API: projects.list を呼び出します。レスポンス本文の FirebaseProject オブジェクト内にプロジェクト番号が含まれています。

プロジェクト ID

Firebase プロジェクトとその関連 GCP プロジェクトにはプロジェクト ID が付けられます。これは、すべての Firebase と GCP において一意のユーザー定義のプロジェクト用識別子です。Firebase プロジェクトを作成する際、プロジェクトには一意の ID が自動的に割り当てられますが、プロジェクトの設定時に編集できます。通常この識別子は、プロジェクトを参照するための便宜的なエイリアスとして扱われます。

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

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

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

  • デフォルトの Hosting サブドメイン: PROJECT_ID.web.appPROJECT_ID.firebaseapp.com
  • デフォルトの Realtime Database URL: PROJECT_ID.firebaseio.com
  • デフォルトの Cloud Storage バケット名: PROJECT_ID.appspot.com

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

Firebase CLI とプロジェクト ID

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

プロジェクト ID を覚えなくても済むように、Firebase プロジェクトごとにプロジェクト エイリアスを設定することもできます。

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

多くの API 呼び出しでは、プロジェクトの一意の識別子が必要となります。多くの API でプロジェクト ID を使用できますが、Firebase、Google、サードパーティのサービスに対して API 呼び出しを行う場合には、プロジェクト番号を使用することをおすすめします。

プロジェクトの識別子、特にプロジェクト番号の使い方の詳細については、Google の AIP 2510 標準をご覧ください。

プロジェクト ID を確認する

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

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

  • Firebase Management REST API: projects.list を呼び出します。レスポンス本文の FirebaseProject オブジェクト内にプロジェクト ID が含まれています。

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

アプリを Firebase プロジェクトに登録すると、Firebase コンソールに Firebase 構成ファイル(iOS アプリか Android アプリ)または構成オブジェクト(ウェブアプリ)が表示されるので、これをローカルアプリ ディレクトリに直接追加します。

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

アプリの Firebase 構成ファイルまたは Firebase 構成オブジェクトはいつでも入手できます

Firebase 構成ファイルまたは Firebase 構成オブジェクトによって、特定の Firebase プロジェクトとそのリソース(データベース、ストレージ バケットなど)がアプリに関連付けられます。構成に含まれている「Firebase オプション」は、Firebase や Google サービスが Firebase サーバー API と通信したり、クライアント データを Firebase プロジェクトや Firebase アプリに関連付けたりするために必要なパラメータです。次に、最低限必要な「Firebase オプション」を示します。

  • API キー: 非公開のユーザーデータへのアクセスを必要としない特定の API を呼び出すときに使用される、暗号化された簡単な文字列(例: AIzaSyDOCAbC123dEf456GhI789jKl012-MnO

  • プロジェクト ID: すべての Firebase と GCP において一意のユーザー定義のプロジェクト識別子。この識別子は、一部の Firebase リソースでは URL や名前に表示されますが、通常はプロジェクトを参照するための便宜的なエイリアスとして扱われます(値の例: myapp-project-123)。

  • アプリケーション ID(「AppID」): すべての Firebase において一意の Firebase アプリ識別子。形式はプラットフォームによって異なります。

    • Firebase iOS アプリ: GOOGLE_APP_ID(値の例: 1:1234567890:ios:321abc456def7890
      これは Apple バンドル ID ではありません
    • Firebase Android アプリ: mobilesdk_app_id(値の例: 1:1234567890:android:321abc456def7890
      これは Android パッケージ名または Android アプリケーション ID ではありません。
    • Firebase ウェブアプリ: appId(例: 1:65211879909:web:3ae38ef1cdcb2e01fe5f0c

Firebase 構成ファイルまたは Firebase 構成オブジェクトの内容は公開情報とみなされます。公開であるとみなされる情報としては、アプリのプラットフォーム固有の ID(iOS バンドル ID または Android パッケージ名)や Firebase プロジェクト固有の値(API キー、プロジェクト ID、Realtime Database URL、Storage バケット名など)があります。このような点を考慮したうえで、Firebase セキュリティ ルールを使用し、Realtime DatabaseCloud FirestoreCloud Storage にあるデータとファイルを保護してください。

オープンソース プロジェクトの場合、一般的に考えて、ソース管理にアプリの Firebase 構成ファイルや Firebase 構成オブジェクトを含めることはおすすめできません。ほとんどの場合、ユーザーは独自の Firebase プロジェクトを作成し、(独自の Firebase 構成ファイルまたは Firebase 構成オブジェクトを使用して)アプリが独自の Firebase リソースを参照するように設定すると想定されるからです。

Firebase プロジェクトの管理

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

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

Firebase コンソール

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

Firebase コンソール - [プロジェクトの概要] 画面

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

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

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

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

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

Firebase Management REST API

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

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

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

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

複数のビルド バリアントで、異なる iOS バンドル ID や Android パッケージ名を定義する場合には、各バリアントを別々の 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 つあたりで最大 36 個のサイトをサポートします。

アプリのリリース