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

このページでは、Firebase プロジェクトに関するいくつかの重要なコンセプトの概要を説明します。リンクがある場合はそのページに移動し、機能、サービス、ツール、ベスト プラクティスについて詳細な情報を確認してください。

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

Firebase プロジェクトは Firebase の最上位のエンティティです。プロジェクトでは、Apple アプリ、Android アプリ、ウェブアプリを登録できます。Firebase にアプリを登録すると、AnalyticsCloud FirestorePerformance MonitoringRemote Config などの Firebase プロダクト用の Firebase SDK をいくつでも追加できます。

このプロセスの詳細については、次のプラットフォーム向けのスタートガイドをご覧ください。
iOS+ | Android | ウェブ | Unity | C++ | Flutter

Firebase プロジェクトの階層について

Firebase プロジェクトの基本階層(プロジェクト、登録済みのアプリ、プロビジョニングされたリソースとサービスを含む)を示す図 次の図は、Firebase プロジェクトの基本階層を示しています。主な関係は次のとおりです。

  • Firebase プロジェクトは、すべてのアプリと、そのプロジェクト用にプロビジョニングされたリソースとサービスを格納するコンテナに似ています。

  • Firebase プロジェクトには、1 つ以上の Firebase アプリを登録できます(たとえば、アプリの iOS バージョンと Android バージョンの両方、あるいはアプリの無料版と有料版の両方を登録できます)。

  • 同じ Firebase プロジェクトに登録されているすべての Firebase アプリは、そのプロジェクトにプロビジョニングされた同じリソースとサービスのすべてにアクセスできます。次に例を示します。

    • 同じ Firebase プロジェクトに登録されているすべての Firebase アプリは、Firebase HostingAuthenticationRealtime DatabaseCloud FirestoreCloud StorageCloud Functions などの同じバックエンドを共有します。

    • 同じ Firebase プロジェクトに登録されているすべての Firebase アプリは、同じ Google アナリティクス プロパティに関連付けられています。ここで、各 Firebase アプリは、そのプロパティの個別のデータ ストリームになります。

Firebase プロジェクトと Google Cloud の関係

新しい Firebase プロジェクトを作成するときに、実際には Google Cloud プロジェクトを作成しています。はじめに Google Cloud プロジェクトを作成し、その後に Firebase を追加することもできます。Google Cloud プロジェクトは、データ、コード、構成、サービスのための仮想的なコンテナと考えることができます。

すべての Firebase プロジェクトについて、Google Cloud コンソールのプロジェクトの [ラベル] ページfirebase:enabled というラベルが Firebase によって自動的に追加されます。このラベルについて詳しくは、よくある質問をご覧ください。

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

  • プロジェクトには、Firebase コンソールだけでなく、Google Cloud コンソールGoogle API Console からアクセスして操作できます。

  • プロジェクトを操作するには、Firebase CLIgcloud CLI、Google の Terraform リソースを使用します。

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

  • プロジェクトの IAM 権限とロールは、Firebase と Google Cloud 間で共有されます。プロジェクト メンバー(プリンシパル)が Google Cloud プロジェクトに対して持っているアクセス権は、Firebase プロジェクトにも適用されます(その逆も同様です)。

  • プロジェクトでの課金は、Firebase と Google Cloud 間で共有されます。Google Cloud プロジェクトで課金が有効になっている場合、Firebase プロジェクトは Firebase の従量課金制の Blaze 料金プランになります。

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

  • Google Cloud プロジェクトに適用されているリソース階層(組織、フォルダなど)は、Firebase プロジェクトにも適用されます。

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

  • プロジェクト内のリソースやデータの削除または変更は、Firebase と Google Cloud の両方に適用されます。

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

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

本番環境のアプリでは、明確な開発ワークフローを設定する必要があります。これには通常、複数の環境が使用されます。デベロッパーのワークフローに関するドキュメント(一般的なベスト プラクティスセキュリティに関する一般的なガイドラインなども含む)を参照して、Firebase プロジェクトの設定とアプリの登録を行い、開発ワークフローを作成してください。

Firebase プロジェクトの操作

プロダクト SDK に加えて、いくつかの異なるツールとインターフェースを使用して Firebase プロジェクトを直接操作できます。

Firebase コンソール

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

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

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

Firebase プロジェクトは Google Cloud プロジェクトでもあるため、タスクやプロダクトによっては、Firebase コンソールではなく Google Cloud を使用する必要があります。

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

Firebase には、Firebase HostingCloud Functions for FirebaseFirebase Extensions など、特定の Firebase プロダクトの構成と管理を行うための Firebase CLI も用意されています。

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

Firebase Management REST API

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

Firebase プロジェクト ID

Firebase プロジェクトは、Firebase バックエンドや各種デベロッパー インターフェースで、プロジェクト名、プロジェクト番号、プロジェクト ID などの識別子を使用して確認できます。

プロジェクト名

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

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

プロジェクト番号

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

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

プロジェクト ID

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

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

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

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

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

    • Firebase Apple アプリ: 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(Apple バンドル ID または Android パッケージ名)や Firebase プロジェクト固有の値(API キー、プロジェクト ID、Realtime Realtime Database URL、Cloud Storage バケット名など)があります。このような点を考慮したうえで、Firebase Security Rules を使用し、Realtime DatabaseCloud FirestoreCloud Storage にあるデータとファイルを保護してください。

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

Firebase プロジェクト、アプリ、サイトの一般的な制限事項

Firebase プロジェクト、アプリ、サイトの一般的な制限事項は次のとおりです。

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

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

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

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

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

    Firebase プロジェクト内の Firebase アプリの合計数は 30 個までに制限されています。

    エンドユーザーから見て、1 つの Firebase プロジェクト内のすべての Firebase アプリが、同じアプリケーションのプラットフォーム別のバリアントとなるようにしてください。マルチテナンシーの詳細については、ベスト プラクティスのドキュメントをご覧ください。

    詳しくは、よくある質問のプロジェクトごとのアプリ数の上限をご覧ください。

  • プロジェクトあたりの Hosting サイトの数

    Firebase Hosting マルチサイト機能では、プロジェクトごとに最大 36 個のサイトがサポートされます。

アプリのリリース