App Design Center(ADC)と Firebase を使ってみる

Firebase は、Google Cloud の Application Design Center(ADC)と統合されています。これにより、エンタープライズのお客様は標準化とガバナンスのニーズを満たしながら、アプリ デベロッパーが迅速にリリースできるようにすることができます。ADC を使用すると、リソースのプロビジョニング、IAM 権限の付与などのガードレールを定義する事前定義されたテンプレートにより、インフラストラクチャが組織の標準とベスト プラクティスに準拠するようになります。

このページでは、次の内容について説明します。

ADC と Firebase の概要

Google Cloud のドキュメントで ADC の概要を確認することをおすすめします。Google Cloud のドキュメントには、主なコンセプトや初期設定ガイドなど、ADC に関する詳細なガイドもいくつか用意されています。

ADC を使用する場合、「アプリ」は、ビジネス機能を提供するリソースとサービスの論理グループとして定義されます。Firebase デベロッパーの場合、ADC の「アプリ」は Firebase プロジェクトと同等と考えることができます。登録済みの iOS、Android、ウェブアプリはすべて、プロジェクトの同じリソースとサービスを共有し、アクセスできます。

まずは、Google Cloud コンソールで利用可能なデザイン キャンバスと呼ばれる GUI エクスペリエンスを使用して ADC を操作することをおすすめします。デザイン キャンバスを使用すると、アプリで使用するインフラストラクチャのアーキテクチャ図を可視化して作成できます。

ADC は Terraform を基盤としているため、ADC を使用して定義されたインフラストラクチャのコード定義にいつでもアクセスできます。

サポートされている Firebase プロダクト

ADC で使用できる、サポートされている Firebase プロダクトの初期セットは次のとおりです。

ADC を使用する主なペルソナ

ADC を理解して使用する一般的な方法は、次の 2 つのペルソナに基づいて ADC 関連のタスクを分類することです。

  • プラットフォーム エンジニア: このペルソナは、再利用可能でポリシーが適用された ADC テンプレートを設計、検証し、ADC カタログに公開します。

  • アプリケーション デベロッパー: このペルソナは、公開された ADC テンプレート(チームの ADC カタログなど)を使用して、インフラストラクチャを構成してデプロイします。また、アプリの実際のコードベースと機能も開発します。

アクセスを制御するために必要な IAM ロール

IAM ロールを割り当てることで、特定のタスクを実行できるプロジェクト メンバー(またはプリンシパル)を制御できます。

たとえば、スペースの作成と割り当て、カタログの管理、テンプレートの設計を行う必要があるプラットフォーム エンジニアに、Application Design Center 管理者ロール(roles/designcenter.admin)を割り当てることができます。ただし、アプリケーション デベロッパーには、テンプレートを使用できるが、テンプレートを作成できないように、アプリケーション編集者ロール(roles/designcenter.applicationEditor)のみを割り当てる必要があります。

次の表に、ADC 関連のタスク、対象となるペルソナ、必要なロールを示します。

タスク ペルソナ IAM ロール1
テンプレートを作成、管理する
ADC ライフサイクル全体を管理する
(スペース、カタログ、テンプレートの管理、アプリの構成とデプロイなど)
プラットフォーム エンジニア 管理プロジェクトに対するApplication Design Center 管理者
(roles/designcenter.admin)
テンプレートの作成と管理、アプリの構成とデプロイ プラットフォーム エンジニア 管理プロジェクトに対する Application Design Center ユーザー
(roles/designcenter.user)
ADC アプリをデプロイするためのサービス アカウントを作成する
サービス アカウントを作成する プラットフォーム エンジニア 管理プロジェクトに対するサービス アカウントの作成
(roles/iam.serviceAccountCreator)
ADC デプロイに使用されるプロジェクトへのアクセス権をサービス アカウントに付与する プラットフォーム エンジニア デプロイ プロジェクトに対するプロジェクト IAM 管理者
(roles/resourcemanager.projectIamAdmin)
ADC アプリを構成してデプロイする
アプリのライフサイクル全体を管理する
(ソースコードや CI / CD システムとの統合を含む)
アプリケーション デベロッパー 管理プロジェクトに対するアプリケーション管理者
(roles/designcenter.applicationAdmin)
管理者が設定した既存のテンプレートと接続に基づいてアプリを構成してデプロイする アプリケーション デベロッパー 管理プロジェクトに対するアプリケーション編集者
(roles/designcenter.applicationEditor)

1 これらのロールの一部は、管理プロジェクトに設定する必要があります。これは、Google Cloud 階層内の最上位リソースです。

全般的なワークフロー

このセクションでは、ADC テンプレートを作成して使用する一般的なワークフローについて説明します。各ステップには、通常そのステップを実行するペルソナがタグ付けされています。

  1. ステップ 1: ADC を設定する(プラットフォーム エンジニア)
  2. ステップ 2: テンプレートを作成する(プラットフォーム エンジニア)
  3. ステップ 3: テンプレートを使用する(アプリケーション デベロッパー)
  4. ステップ 4: 実際のアプリを開発する(アプリケーション デベロッパー)

ステップ 1: ADC を設定する(プラットフォーム エンジニア)

プラットフォーム エンジニアのペルソナ(またはそれ以上)が、次のタスクを完了して ADC を設定します。通常、これらのタスクは 1 回だけ完了すれば、ADC を使用するための設定がすべて完了します。

  1. ADC の初期設定。

    Google Cloud ドキュメントの ADC の初期設定ガイドの手順とガイダンスに沿って操作します。このガイドでは、フォルダレベルの境界を設定することを前提としています。

    この設定が完了すると、チームが共同作業、テンプレートの作成、アプリケーションのデプロイを行うための専用エリアであるスペースが作成されます。このスペース(およびフォルダとカタログ)が、ADC で共同作業するすべてのユーザーと共有されていることを確認します。

  2. スペースのアクセス権とユーザーを設定します。

    Google Cloud ドキュメントの ADC のスペース ユーザーを管理するの手順に沿って操作します。このページで前述したアクセスを制御するために必要な IAM ロールに関するガイダンスを使用します。

  3. プロジェクトを事前にプロビジョニングする。

    フォルダに 1 つ以上の新しい Google Cloud プロジェクトを作成します。これらのプロジェクトに Cloud Billing アカウントをリンクしてください。これらのプロジェクトは、アプリケーション デベロッパーがテンプレートで定義されたインフラストラクチャをデプロイするときに使用されます。

  4. デプロイ サービス アカウントを構成する。

    ADC は、厳密にスコープが設定されたサービス アカウントを使用して、リソースの自動プロビジョニングを管理します。これにより、アプリケーション デベロッパーが独自のアカウントを使用してインフラストラクチャをデプロイできなくなります。

    ADC は、作成したテンプレートのデプロイをテストするときに、スコープが厳密に設定されたサービス アカウントを自動的に作成できます。アプリケーション デベロッパーに適切と思われる権限を持つ独自のサービス アカウントを使用することもできます。

ステップ 2: テンプレートを作成する(プラットフォーム エンジニア)

プラットフォーム エンジニアのペルソナは、デザイン キャンバスまたは Gemini Cloud Assist を使用して、新しい ADC テンプレートを作成します。

  1. リソースを定義する。

    デザイン キャンバスを使用して、コンポーネントをキャンバスにドラッグ&ドロップし、コンポーネント間の接続を作成します。これらのコンポーネントは、アプリケーション デベロッパーが使用する Firebase(および Google Cloud)サービスを定義する方法です。

    たとえば、テンプレートで次のようなリソースを定義できます。

    • アプリケーション デベロッパーは、リソースを使用する iOS、Android、ウェブアプリを開発できます。
    • アプリケーション デベロッパーは、アプリで Firebase AI Logic、Firebase Authentication、Cloud Firestore、Firebase Security Rules を使用できます(ADC でサポートされているすべての Firebase プロダクトのリストをご覧ください)。
    • Firebase Security Rules は、デフォルトですべてのアクセス リクエストを拒否するように設定されています。その後、アプリケーション デベロッパーがこのテンプレートを独自のデプロイに使用するときに、これらの Security Rules を変更して、必要なアクセスモデルに合わせることができます。
  2. ポリシーを定義する。

    デプロイされたインフラストラクチャの IAM ロールやリソースの許可されたリージョンなどのポリシーを定義する場合は、それらのポリシーのそれぞれのインターフェースで設定する必要があります。ADC では現在、テンプレート レベルでのポリシーの定義はサポートされていません。

    プロジェクト メンバーに割り当てる Firebase IAM ロールは、メンバーに実行してもらう作業に応じて選択できます。たとえば、Firebase コンソールでリソースを表示するだけでよい場合は、Firebase 閲覧者ロール(roles/firebase.viewer)を割り当てます。

    リソースのリージョン制限は、フォルダレベルまたは組織レベルで設定できます。

  3. テンプレートをカタログに追加する。

    テンプレートをテストしたら、チームの ADC カタログに追加します。このカタログは、適切なユーザー(特にアプリケーション デベロッパー)と共有して、テンプレートを使用できるようにする必要があります(上記のステップ 1: ADC を設定するをご覧ください)。

ステップ 3: テンプレートを使用する(アプリケーション デベロッパー)

アプリケーション デベロッパーのペルソナは、事前定義されたテンプレートを選択し、特定のユースケースに合わせて構成してから、インフラストラクチャをデプロイします。

  1. テンプレートを選択して構成します。

    ADC カタログからテンプレートを選択し、アプリケーション ドラフトを作成するように構成します。使用可能な構成(リソースに使用可能なリージョンなど)は、プラットフォーム エンジニアがテンプレートの作成時に設定した構成に限定されます。

  2. インフラストラクチャをデプロイする。

    アプリケーションの下書きが作成されたら、インフラストラクチャのデプロイ用に作成された、事前にプロビジョニングされたプロジェクトのいずれかに ADC アプリをデプロイします(上記のステップ 1: ADC を設定するをご覧ください)。

    Firebase コンソールにアクセスして、プロジェクトにプロビジョニングされたリソースと有効なサービスを確認できます。

    )を使用して、ADC でデプロイされた Firebase プロジェクトを直接開くことができます。

ステップ 4: 実際のアプリを開発する(アプリケーション デベロッパー)

ADC は、Firebase と Google Cloud インフラストラクチャの設定(リソースのプロビジョニングや API の有効化など)に役立ちます。ただし、これらのリソースと API を使用する実際のアプリのコーディングは行いません。

アプリケーション デベロッパーのペルソナが行う必要がある重要なことは次のとおりです。

  1. アプリのコードベースを Firebase に接続する。

    Firebase 構成を取得して、各アプリのコードベースに追加します。

    たとえば、テンプレートで Android アプリが許可されている場合は、Android プロジェクト内の適切なディレクトリに google-services.json ファイルを追加する必要があります。

  2. コードとリソースを一致させる。

    (Cloud Firestore を使用している場合) Firebase Security Rules を更新して公開し、アプリの Cloud Firestore データモデルに合わせます。

Google アシスタントの機能

  • デプロイされた ADC「アプリ」をモニタリングする。これらは App Hub に自動的に登録されます。これにより、より広範な Google Cloud デプロイのコンテキストで、Firebase リソースの統合モニタリング、費用のモニタリング、トラブルシューティングが可能になります。