このページでは、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 プロジェクトとこの階層の対応
上の図には表示されていませんが、Google Cloud プロジェクト階層は Google Cloud プロジェクトと関係があります。Google Cloud プロジェクトは、実際には 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 プロジェクトに含める必要があります。個別にラベル付けされた各アプリはプライバシーの観点からも、他のアプリとデータを共有しないようにしてください。
次のステップ
さまざまな環境の一般的なセキュリティ ガイドラインを確認する。各環境とそのデータが安全であることを確認する必要があります。
Firebase リリース チェックリストを確認する。