Firebase Data Connect を使ってみる

このクイックスタートでは、本番環境の SQL インスタンスを使用してアプリケーションに Firebase Data Connect を作成する方法について説明します。次のことを行います。

  • Firebase プロジェクトに Firebase Data Connect を追加します。
  • アプリ用に Cloud SQL インスタンスをプロビジョニングします。
  • 本番環境インスタンスで動作する Visual Studio Code 拡張機能を含む開発環境を設定します。
  • 次に、次のことを行う方法を説明します。
    • 映画アプリのスキーマを作成する
    • アプリで使用するクエリとミューテーションを定義する
    • サンプルデータを使用してクエリとミューテーションをテストする
    • 厳格に型指定された SDK を生成し、アプリで使用する
    • 最終的なスキーマ、クエリ、データをクラウドにデプロイします。

Firebase プロジェクトと Cloud SQL データベースを作成する

  1. まだ作成していない場合は、Firebase プロジェクトを作成します。
    1. Firebase コンソールで [プロジェクトを追加] をクリックし、画面上の手順に沿って操作します。
  2. Firebase コンソールの [Data Connect] セクションに移動し、プロダクトの設定ワークフローに沿って操作します。
  3. プロジェクトを Blaze プランにアップグレードします。これにより、Cloud SQL for PostgreSQL インスタンスを作成できます。

  4. CloudSQL for PostgreSQL データベースのロケーションを選択します。

  5. プロジェクト、サービス、データベースの名前と ID をメモして、後で確認できるようにします。

  6. 残りの設定フローに沿って、[完了] をクリックします。

開発フローを選択する

Data Connect には、開発ツールをインストールする 2 つの方法があります。

前提条件

このクイックスタートを使用するには、以下が必要です。

開発環境を設定する

  1. ローカル プロジェクト用の新しいディレクトリを作成します。
  2. 新しいディレクトリで VS Code を開きます。
  3. Visual Studio Code Marketplace から Firebase Data Connect 拡張機能をインストールします。

プロジェクト ディレクトリを設定する

ローカル プロジェクトを設定するには、プロジェクト ディレクトリを初期化します。IDE ウィンドウの左側のパネルで Firebase アイコンをクリックして、Data Connect VS Code 拡張機能の UI を開きます。

  1. [Google でログイン] ボタンをクリックします。
  2. [Firebase プロジェクトを接続] ボタンをクリックし、コンソールで前に作成したプロジェクトを選択します。
  3. [Run firebase init] ボタンをクリックして、フローを完了します。
  4. [Start emulators] ボタンをクリックします。

スキーマの作成

Firebase プロジェクト ディレクトリの /dataconnect/schema/schema.gql ファイルで、映画を含む GraphQL スキーマの定義を開始します。

映画

Data Connect では、GraphQL フィールドは列にマッピングされます。Movie 型には、idtitleimageUrlgenre があります。Data Connect は、プリミティブ データ型 StringUUID を認識します。

次のスニペットをコピーするか、ファイル内の対応する行のコメント化を解除します。

# File `/dataconnect/schema/schema.gql`

# By default, a UUID id key will be created by default as primary key.
type Movie @table {
  id: UUID! @default(expr: "uuidV4()")
  title: String!
  imageUrl: String!
  genre: String
}

MovieMetadata

映画が作成されたので、映画のメタデータをモデル化できます。

次のスニペットをコピーするか、ファイル内の対応する行のコメント化を解除します。

# Movie - MovieMetadata is a one-to-one relationship
type MovieMetadata @table {
  # This time, we omit adding a primary key because
  # you can rely on Data Connect to manage it.

  # @unique indicates a 1-1 relationship
  movie: Movie! @unique
  # movieId: UUID <- this is created by the above reference
  rating: Float
  releaseYear: Int
  description: String
}

movie フィールドは Movie 型にマッピングされています。Data Connect は、これが MovieMovieMetadata の関係であることを理解し、この関係を管理します。

Data Connect スキーマの詳細については、ドキュメントをご覧ください

スキーマを本番環境にデプロイする

続行する前にスキーマをデプロイする必要があります。

拡張機能の UI の Firebase Data Connect パネルで、[本番環境にデプロイ] をクリックします。

スキーマを本番環境データベースにデプロイすると、Firebase コンソールでスキーマを表示できるようになります。

テーブルにデータを追加する

IDE エディタパネルでは、/dataconnect/schema/schema.gql の GraphQL 型の上に CodeLens ボタンが表示されます。スキーマを本番環境にデプロイしたので、[データを追加] ボタンと [実行(本番環境)] ボタンを使用して、バックエンドのデータベースにデータを追加できます。

Movie テーブルにレコードを追加するには:

  1. schema.gql で、Movie 型宣言の上にある [データを追加] ボタンをクリックします。
    Firebase Data Connect の Code Lens の [データの追加] ボタン
  2. 生成された Movie_insert.gql ファイルで、4 つのフィールドのデータをハードコードします。
  3. [実行(本番環境)] ボタンをクリックします。
    Firebase Data Connect の Code Lens 実行ボタン
  4. 前の手順を繰り返して MovieMetadata テーブルにレコードを追加し、生成された MovieMetadata_insert ミューテーションのプロンプトが表示されたら、movieId フィールドに Movie の id を指定します。

データが追加されたことをすばやく確認するには:

  1. schema.gql に戻り、Movie 型宣言の上にある [データの読み取り] ボタンをクリックします。
  2. 生成された Movie_read.gql ファイルで、[実行(本番環境)] ボタンをクリックしてクエリを実行します。

Data Connect ミューテーションの詳細については、ドキュメントをご覧ください

クエリを定義する

次はクエリです。デベロッパーは GraphQL クエリではなく SQL クエリの作成に慣れているため、最初は少し違和感があるかもしれません。ただし、GraphQL は、未加工の SQL よりもはるかに簡潔で型安全です。また、VS Code 拡張機能により、開発が容易になります。

/dataconnect/connector/queries.gql ファイルを編集します。すべての映画を取得するには、次のようなクエリを使用します。

# File `/dataconnect/connector/queries.gql`

# @auth() directives control who can call each operation.
# Anyone should be able to list all movies, so the auth level
# is set to PUBLIC
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

近くの CodeLens ボタンを使用してクエリを実行します。

Data Connect クエリの詳細については、ドキュメントをご覧ください

SDK を生成し、アプリで使用する

  1. [Add SDK to app] ボタンをクリックします。
  2. 表示されたダイアログで、アプリのコードを含むディレクトリを選択します。Data Connect SDK コードが生成され、そこに保存されます。

  3. アプリ プラットフォームを選択し、選択したディレクトリに SDK コードがすぐに生成されることを確認します。

生成された SDK を使用して、クライアント アプリ(ウェブAndroidiOSFlutter)からクエリとミューテーションを呼び出す方法を学びます。

スキーマとクエリを本番環境にデプロイする

開発のイテレーションを完了しました。これで、スキーマの場合と同様に、Firebase 拡張機能の UI または Firebase CLI を使用して、スキーマ、データ、クエリをサーバーにデプロイできます。

IDE ウィンドウの VS Code 拡張機能 UI で、[Deploy to production] ボタンをクリックします。

デプロイしたら、Firebase コンソールに移動して、スキーマ、オペレーション、データがクラウドにアップロードされていることを確認します。スキーマを表示し、コンソールでオペレーションを実行できるはずです。Cloud SQL for PostgreSQL インスタンスは、最終的にデプロイされた生成されたスキーマとデータで更新されます。

Data Connect エミュレータの使用方法については、ドキュメントをご覧ください

次のステップ

デプロイされたプロジェクトを確認し、その他のツールを確認する。

  • Firebase コンソールで、データベースにデータを追加したり、スキーマを検査、変更したり、Data Connect サービスをモニタリングしたりします。詳しくは、ドキュメントをご覧ください。たとえば、クイックスタートを完了したので、次のようにします。

  • 詳しくは、スキーマ、クエリ、ミューテーションの開発をご覧ください。

  • ウェブAndroidiOSFlutter のクライアント コードからクライアント SDK を生成して、クエリとミューテーションを呼び出す方法について学びます。