Firebase プロジェクトの設定に関する一般的なベスト プラクティス

このページでは、Firebase プロジェクトを設定し、プロジェクトにアプリを登録するための一般的なベスト プラクティスについて説明します。このベスト プラクティスに従うことで、個々の環境を利用する際の明確な開発ワークフローを作成することができます。このページで紹介するベスト プラクティスを十分に理解したら、一般的なセキュリティ ガイドラインもご確認ください。

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

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

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

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

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

    • 同じ Firebase プロジェクトに登録されているすべての Firebase アプリは、Firebase Hosting、Authentication、Realtime Database、Cloud Firestore、Cloud Storage、Cloud Functions など、同じバックエンドを共有します。

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

Google Cloud プロジェクトとこの階層の対応

上の図には表示されていませんが、Firebase プロジェクト階層は Google Cloud プロジェクトと関係があります。Firebase プロジェクトは、実際には Google Cloud プロジェクトであり、Firebase 固有の構成とサービスが有効になっています。また、同じ Firebase プロジェクトに登録されているアプリはすべて共有され、同じ Google Cloud リソースとサービスにアクセスできます。

Firebase と Google Cloud の関係の詳細については、Firebase プロジェクトについてをご覧ください。

Firebase プロジェクトにアプリ バリアントを登録する

以下に、アプリ バリアントを Firebase プロジェクトに登録するための重要なヒントを示します。

  • エンドユーザーから見ると、Firebase プロジェクトに登録されているすべてのアプリは、同じアプリケーションのプラットフォーム別のバリアントにする必要があります。同じアプリやゲームの iOS バージョン、Android バージョン、ウェブ バージョンを、同じ Firebase プロジェクトに登録します。

  • 同じ Firebase リソースを共有できる複数のビルド バリアントがある場合は、同じ Firebase プロジェクトにバリアントを登録します。たとえば、同じプロジェクトのブログとウェブアプリ、同じプロジェクトの同じアプリの無料版と有料版などです。

  • (一般的なエンドユーザーのアクティビティやアクセスなどではなく)リリース ステータスに基づいて複数のビルド バリアントがある場合は、別の Firebase プロジェクトを使用して、それぞれのビルド バリアントを登録します。例として、デバッグビルドとリリースビルドがあります。これらのビルドをそれぞれ別の Firebase プロジェクトに登録します。

    • デバッグデータが汚染されたり、本番環境のデータが上書きされる可能性があるため、リリース ステータスに基づいたビルドでは、同じ Firebase リソースを共有しないでください。

    • これらの各ビルド バリアントのプラットフォーム バリアントは、同じ Firebase プロジェクト内に存在する必要があります。たとえば、iOS と Android の両方のデバッグビルドを Firebase プロジェクト dev に登録します。これらは、どちらも同じ非本番環境のデータとリソースを操作できるためです。

マルチテナンシーの回避

マルチテナンシーには慎重な構成が必要となる場合があり、アナリティクス集計時の意図せぬ問題や、認証の共有、過度に複雑化したデータベース構造、そして難解なセキュリティ ルールなどのデータ プライバシーに関する問題を招く可能性があります。

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

たとえば、ホワイトラベル アプリケーションを開発する場合、個別にラベル付けしたアプリごとに固有の Firebase プロジェクトを用意し、そのラベルの iOS バージョンと Android バージョンを同じ Firebase プロジェクトに含める必要があります。個別にラベル付けされた各アプリはプライバシーの観点からも、他のアプリとデータを共有しないようにしてください。

次のステップ