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には、以下のような特徴があります:
- 完全管理型PostgreSQLデータベース:
多くの開発者に馴染みのある、信頼性の高いデータベースシステムを使用できます。 - GraphQLによるセキュアなスキーマ、クエリ、ミューテーション管理:
データの取得や操作が効率的に行えます。必要なデータだけを指定して取得できるため、パフォーマンスの向上にもつながります。 - Firebase Authenticationとの統合:
ユーザー認証とデータベースアクセスを簡単に連携できます。これにより、セキュリティの向上とアクセス制御の管理が容易になります。
これらの特徴により、開発者はより簡単に、かつ強力なデータベース機能をアプリに組み込むことができます。特に、バックエンドに使い慣れたRDBMS(関係データベース管理システム)が利用できる点が、これまでのFirebaseとの大きな違いと言えるでしょう。
仕組み
Firebase Data Connectの仕組みは以下のようになっています:
- サービス:
開発者が定義し、エンドユーザーが呼び出せる管理されたGraphQL APIを表します。 -
スキーマ:
アプリのデータモデルを表現し、主にGraphQLソースファイルのコレクションとして定義されます。 -
コネクタ:
サービスのスキーマに対して操作を行うクエリとミューテーションのコレクションです。
重要なポイントとして、Data Connectスキーマは特定の基礎となるPostgreSQLデータベーススキーマに明示的にマッピングされます。Data Connectには、アプリスキーマの変更に基づいてスキーマの移行に必要なSQL DDLを自動生成するツールが含まれています。
使い方
それでは、Firebase Data Connectの具体的な使い方を見ていきましょう。開発には主に Visual Studio Code(VS Code)または IDX を利用します。ここでは、VS CodeとFirebase拡張機能を使用した方法を解説します。
プロジェクトを作成する
注意: 執筆時点では Firebase Data Connect は早期アクセスプログラムのため、利用には申し込みが必要です。
- VS Codeを開き、Firebase拡張機能をインストールします。
- 拡張機能にある
Run firebase init
ボタンを押してプロジェクトを作成します。 - 表示されるオプションから
[Data Connect]
を選択します。 - プロジェクト名を決めて、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 User
とtype Email
は、それぞれユーザーとメールの情報を格納するテーブルを定義しています。@table
はこれがデータベースのテーブルであることを示しています。(key: "uid")
は、このテーブルの主キー(一意の識別子)が "uid" フィールドであることを指定しています。!
は、そのフィールドが必須であることを示しています。from: User!
は、Emailテーブルが Userテーブルと関連付けられていることを示しています。これにより、各メールがどのユーザーから送信されたかを追跡できます。
スキーマをデプロイする
定義したスキーマを実際のデータベースに反映させるには、VS Code拡張機能から すべてデプロイ
を選択します。これにより、定義した構造がFirebase Data Connectのサーバーに適用されます。
データを追加する
データを追加するには、以下の手順を踏みます:
/dataconnect/schema/schema.gql
ファイルのUser
の部分にマウスカーソルを当てます。- 表示される
Add data
をクリックします。 - 生成された
User_insert.gql
ファイルにデータを追加します。 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との連携も視野に入れた機能を提供しています:
- ベクトル検索: デフォルトで提供されており、類似性に基づいた高度な検索が可能になります。
-
LLM 対応 API: 大規模言語モデル(LLM)と連携するためのAPIが提供される予定です(記事執筆時点では未確認)。
-
エンベディング生成: テキストデータを数値ベクトルに変換する機能も提供される予定です。これは、テキストデータを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の公式ページを参照