Firebaseはモバイルアプリの開発に必要な機能を数多く提供しています。そしてGoogle I/O 2024で新しく発表された機能がFirebase Data Connectになります。

この記事ではFirebase Data Connectの概要と、どのような機能が提供されているのかを紹介します。

Firebaseとは?

まず、Firebaseについて簡単に説明しましょう。Firebaseは、Googleが提供するモバイルアプリ開発のためのプラットフォームです。アプリの作成や運用に必要な様々な機能(ユーザー認証、データベース、ホスティングなど)を簡単に使えるようにしてくれます。多くの開発者がこのプラットフォームを利用して、効率的にアプリを開発しています。

Firebase Data Connectとは

Firebase Data Connectは、このFirebaseの新機能です。

公式ドキュメントによると、これは「モバイルおよびウェブアプリ向けの関係データベースサービスで、Cloud SQL for PostgreSQLを使用した完全管理型のPostgreSQLデータベースを利用してアプリケーションの構築とスケーリングを可能にする」ものです。

  • PostgreSQL: 信頼性が高く、多くの機能を持つオープンソースのデータベース管理システムです。多くの企業や開発者に愛用されています。
  • Cloud SQL for PostgreSQL: GoogleのクラウドプラットフォームであるGoogle Cloud Platform(GCP)で提供されているPostgreSQLのマネージドサービスです。つまり、データベースの管理や運用の多くの部分をGoogleが代行してくれるため、開発者は本来のアプリ開発に集中できます。

Firebase Data Connectは、このCloud SQL for PostgreSQLをFirebaseから簡単に使えるようにする橋渡し的な機能と言えます。

Firebase Data Connectを使うと、モバイルアプリから直接PostgreSQLに接続するわけではありません。その代わり、Firebaseが提供するGraphQLインターフェース(これがFirebase Data Connectです)を通して利用します。

GraphQLは、APIのためのクエリ言語で、必要なデータだけを効率的に取得できる優れた仕組みです。これにより、データベースとのやり取りがより簡単で効率的になります。

Firebase Data Connectの特徴

Firebase Data Connectには、以下のような特徴があります:

  1. 完全管理型PostgreSQLデータベース
    多くの開発者に馴染みのある、信頼性の高いデータベースシステムを使用できます。
  2. GraphQLによるセキュアなスキーマ、クエリ、ミューテーション管理
    データの取得や操作が効率的に行えます。必要なデータだけを指定して取得できるため、パフォーマンスの向上にもつながります。
  3. Firebase Authenticationとの統合
    ユーザー認証とデータベースアクセスを簡単に連携できます。これにより、セキュリティの向上とアクセス制御の管理が容易になります。

これらの特徴により、開発者はより簡単に、かつ強力なデータベース機能をアプリに組み込むことができます。特に、バックエンドに使い慣れたRDBMS(関係データベース管理システム)が利用できる点が、これまでのFirebaseとの大きな違いと言えるでしょう。

仕組み

Firebase Data Connectの仕組みは以下のようになっています:

  1. サービス:
    開発者が定義し、エンドユーザーが呼び出せる管理されたGraphQL APIを表します。

  2. スキーマ:
    アプリのデータモデルを表現し、主にGraphQLソースファイルのコレクションとして定義されます。

  3. コネクタ:
    サービスのスキーマに対して操作を行うクエリとミューテーションのコレクションです。

重要なポイントとして、Data Connectスキーマは特定の基礎となるPostgreSQLデータベーススキーマに明示的にマッピングされます。Data Connectには、アプリスキーマの変更に基づいてスキーマの移行に必要なSQL DDLを自動生成するツールが含まれています。

使い方

それでは、Firebase Data Connectの具体的な使い方を見ていきましょう。開発には主に Visual Studio Code(VS Code)または IDX を利用します。ここでは、VS CodeとFirebase拡張機能を使用した方法を解説します。

プロジェクトを作成する

注意: 執筆時点では Firebase Data Connect は早期アクセスプログラムのため、利用には申し込みが必要です。

  1. VS Codeを開き、Firebase拡張機能をインストールします。
  2. 拡張機能にある Run firebase init ボタンを押してプロジェクトを作成します。
  3. 表示されるオプションから [Data Connect] を選択します。
  4. プロジェクト名を決めて、Firebaseプロジェクトを作成します。

これにより、Firebase Data Connectを使用する準備が整います。

スキーマを定義する

次に、データベースのスキーマ(構造)を定義します。以下は、Googleによるチュートリアルからの例です:

type User @table(key: "uid") {
   uid: String!
   name: String!
   address: String!
}
type Email @table {
   subject: String!
   sent: Date!
   text: String!
   from: User!
}

このスキーマは /dataconnect/schema/schema.gql ファイルに記述します。

補足説明:

  • type Usertype Email は、それぞれユーザーとメールの情報を格納するテーブルを定義しています。
  • @table はこれがデータベースのテーブルであることを示しています。
  • (key: "uid") は、このテーブルの主キー(一意の識別子)が "uid" フィールドであることを指定しています。
  • ! は、そのフィールドが必須であることを示しています。
  • from: User! は、Emailテーブルが Userテーブルと関連付けられていることを示しています。これにより、各メールがどのユーザーから送信されたかを追跡できます。

スキーマをデプロイする

定義したスキーマを実際のデータベースに反映させるには、VS Code拡張機能から すべてデプロイ を選択します。これにより、定義した構造がFirebase Data Connectのサーバーに適用されます。

データを追加する

データを追加するには、以下の手順を踏みます:

  1. /dataconnect/schema/schema.gql ファイルの User の部分にマウスカーソルを当てます。
  2. 表示される Add data をクリックします。
  3. 生成された User_insert.gql ファイルにデータを追加します。
  4. mutation のところに表示される [Run (Production)] ボタンをクリックしてデータを追加します。

例えば:

mutation {
    user_insert(data: {
        uid: "user123",
        name: "山田太郎",
        address: "東京都渋谷区"
    })
}

この操作により、新しいユーザーデータがデータベースに追加されます。

データを取得する

データの取得は、GraphQLクエリを記述して行います。/dataconnect/default-connector/queries.gql ファイルにクエリを記述します。

例:

query ListEmails @auth(level: NO_ACCESS) {
  emails {
    id, subject, text, sent
    from {
      name
    }
  }
}

このクエリは、すべてのメールの情報(ID、件名、本文、送信日時)と、送信者の名前を取得します。

CodeLens ボタンをクリックしてクエリを実行し、データが正しく取得できることを確認します。

実際のアプリ開発時も、同様にGraphQLクエリを実行してデータの取得・更新を行います。

クエリとミューテーション

Firebase Data Connectのクエリとミューテーションは、従来のクライアントサイドでの実行とは異なり、サーバーサイドで定義・実行されます。これにより:

  • コード管理が簡素化されます
  • クライアントコードの開発が容易になります
  • Cloud Functionsのように、デプロイ時にサーバーに保存されます

管理者向けの操作では、Firebase consoleやFirebase VS Code拡張機能を使用して、適切なGoogle IAM認証情報で臨時の操作を実行することができます。

AIとの連携

Firebase Data Connectは、AIとの連携も視野に入れた機能を提供しています:

  1. ベクトル検索: デフォルトで提供されており、類似性に基づいた高度な検索が可能になります。

  2. LLM 対応 API: 大規模言語モデル(LLM)と連携するためのAPIが提供される予定です(記事執筆時点では未確認)。

  3. エンベディング生成: テキストデータを数値ベクトルに変換する機能も提供される予定です。これは、テキストデータをAIで処理する際に非常に有用です。

これらの機能を活用することで、例えばGeminiやOpenAIのAPIと組み合わせて、AIを活用した高度なアプリケーション開発が可能になります。例えば、ユーザーの質問に自動で回答するチャットボットや、文書の自動要約機能などが実現できるでしょう。

特に、Vertex AIとの使用に関する課金情報が記載されているため、何らかの形でAI機能との連携が可能であることが示唆されています。具体的には、埋め込み生成のためのVertex AIの使用には、Vertex AIの標準使用料金が発生します。

まとめ

Firebase Data Connectは、FirebaseアプリケーションからPostgreSQLにアクセスするための機能です。これまでのFirebaseのデータベース機能とは異なり、業界標準のPostgreSQLを利用できる点が大きなメリットです。

この機能により、以下のようなメリットが期待できます:

  • 使い慣れたPostgreSQLの機能を活用できる
  • GraphQLによる効率的なデータアクセス
  • Firebase認証との統合による高いセキュリティ
  • タイプセーフなSDKによる開発効率の向上
  • AIとの連携による高度な機能の実現

現在はKotlin AndroidとWebアプリケーションがサポートされており、将来的にはiOSもサポート予定です。3ヶ月間の無料トライアル期間もあるため、興味のある開発者の方々はぜひ試してみてください。

詳細な情報や最新のアップデートについては、Firebase Data Connectの公式ページを参照