Google I/O 2024 のFirebase速報まとめ

こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[@mogmet](https://twitter.com/mogmet)です。
![mogmet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/ec1597ca-7ce9-8f31-2c83-5b2e2e4ed68f.jpeg)

最近ラグナロクがエフ・コード社傘下になったことにより、動き方も色々変わったり、やることも増えてきて多忙感を感じております。

https://www.youtube.com/watch?v=VqDEhyirXPc

それにより絶賛エンジニアやデザイナーを募集中なのでご興味ある方は是非気軽にお話しましょう😇


話は戻り、本日はGoogle I/O 2024で発表されたFirebaseの新機能について紹介致します！

※ベースの記事としては [What's new in Firebase at I/O 2024](https://firebase.blog/posts/2024/05/whats-new-at-google-io)を参照としております。

今回のアップデートとしてはAI、リリース周りのアップデートが主に発表されました。

## Firebaseロゴが刷新

Firebaseのアイコンが丸みを帯びた優しい感じのアイコンに刷新されました。

![image.png](https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/gifs%2Fnew-logo.gif?alt=media&token=10d5192b-e302-40a6-92f2-6bb8cba9c98c)

進化を反映したロゴになりました。

## AI関連のアップデート

### Firebase Data Connect を使用して PostgreSQLをFirebaseに導入する

[Firebase Data Connect](https://firebase.google.com/products/data-connect)という、Firebase を使用して、 Cloud SQLでホストされている Postgres データベースにアプリを直接接続できるようになりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/b5ca7c7d-38d4-2828-f4f5-676ac9d59379.png)

データモデル及び、許可するクエリ、許可する変更をGraphQLに基づく簡潔な言語で定義すると、Data ConnectがDBを移行、APIサーバのアップグレード、新しいSDK生成を自動で実施してくれます。

https://twitter.com/Firebase/status/1790493280985075844

また、データベース内の値と構成したモデルに基づいてベクトル埋め込みを自動生成し、それに対してKNN（k近傍法）クエリを実行することもできるため、別のベクトルを必要とせずにアプリに生成AI機能を組み込むことができます。

もぐめっとの一言： firestoreだとベンダーロックになっていましたが、他の選択肢として既存のDBもつなぎ込めることができるようになるのはベンダーロックを回避することもできたり、逆に既存のDBをつなぎこみやすくなるのでどちらにとっても嬉しい機能ですね。

### Firestoreのベクトル値対応

[ベクトル値をFirestoreドキュメントに保存](https://firebase.google.com/docs/firestore/vector-search)し、クエリを実行して特定のベクトル値のKNNを取得することもできるようになりました。

```js
import {
  Firestore,
  FieldValue,
  VectorQuery,
  VectorQuerySnapshot,
} from "@google-cloud/firestore";

// Requires single-field vector index
const vectorQuery: VectorQuery = coll.findNearest('embedding_field', FieldValue.vector([3.0, 1.0, 2.0]), {
  limit: 5,
  distanceMeasure: 'EUCLIDEAN'
});

const vectorQuerySnapshot: VectorQuerySnapshot = await vectorQuery.get();
```

### 生成AIのベストプラクティスとパターンをFirebase Genkitに統合

[Firebase Genkit](https://firebase.google.com/products/genkit)は、プラグイン、テンプレート、シンプルな抽象化を提供することでAIコンポーネントの統合の複雑さを軽減し、独自のカスタムロジックとデータを備えたAIモデルを使用して、ビジネスに最適化されたAI機能を構築できます。

https://x.com/Firebase/status/1790497366644003217

また、開発者Toolを使うことでローカルでの実行も可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/9a95bcd8-89d3-bb43-a1d2-5056ec937ce2.png)

CloudFunctionsと連携する場合は [Firebase Cloud Functions の Genkit](https://firebase.google.com/docs/genkit/firebase?hl=ja)を参照ください。
CLIを通してフローをデプロイできます。

### Vertex AI for Firebase SDKを使用してGemini APIにアクセス

[Vertex AI for Firebase SDK](https://firebase.google.com/docs/vertex-ai?hl=ja)を使うとアプリクライアントから直接AIモデルを呼び出す事ができます。

```js
import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai-preview";

// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Vertex AI service
const vertexAI = getVertexAI(firebaseApp);

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
const model = getGenerativeModel(vertexAI, { model: "gemini-1.5-pro-preview-0409" });

// Wrap in an async function so you can use await
async function run() {
  // Provide a prompt that contains text
  const prompt = "Write a story about a magic backpack."

  // To generate text output, call generateContent with the text input
  const result = await model.generateContent(prompt);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

run();
```

SDKはApp Checkと統合されているので安全に呼び出すことができます。

もぐめっとの一言： AIプラットフォームであるVertexAIが使えるようになることで、画像とテキストを組み合わせたベクトル検索や要約など、AIが表現できる幅を広げることができるため、より便利なアプリが気軽に作れそうです。

## Firebase App Hostingによるデプロイ

[Firebase App Hosting](https://firebase.google.com/products/app-hosting?hl=ja) は、webアプリのデプロイに関して、ソースコード内で検出された内容に基づいて、フルスタックWebアプリの構築と実行に必要なインフラストラクチャを自動的にセットアップします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/86b4f433-e01e-0b01-6b5f-ac2e746ed21b.png)

Firebaseコンソールから管理もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/28ddcf05-ff30-a440-eaf9-8943b22f1612.png)

もぐめっとの一言： CD環境を自分で作らなくて済むので、その分の初期構築コストを下げることができてより便利になります。


## アプリのリリース監視

### Remote Config機能のロールアウトでアプリの変更を安全にロールアウトする

Firebase Remote Configの新機能ロールアウト ワークフローを使用すると、対象を絞ったロールアウトまたは増分ロールアウトを簡単に実行できるようになり、続行するかロールバックするかについて十分な情報に基づいた決定を下すことができます。

例えば、以下の画像では、特定のケースではエンゲージメント時間が増加しているのが分かるので、そのデータをもとにさらに展開するかどうかの判断をすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/7965c6ab-a33b-3811-876c-508cbb82766b.png)

もぐめっとの一言： GoogleやAppleに段階的リリース機能がありますが、それと似たようなことがRemote Configでもできるようになったのでよりスイッチリリースがしやすくなりました。

### リリースを1か所で監視する

Crashlyticsを利用した[新しいリリース監視ダッシュボード](https://firebase.google.com/docs/release/release-monitoring#release-monitoring-dashboard)を使用すると最新のアプリのリリースに関する最も重要なデータをすべて1か所でリアルタイムに確認できます。
例えば、下記の画像では、新しいダッシュボードを利用することで、バージョンの導入やアクティブユーザーから、クラッシュのないユーザーやセッションをひとまとめに確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/69eb8fb4-f4e9-112d-4443-a64d6c3d30c8.png)

### Crashlyticsでのデータ分析とAI支援のためにFirebaseでGeminiを使用する

先月、FirebaseでGeminiの支援が使えるようになりましたが、その支援の一つとして、新しくCrashlyticsのAI支援を含めるように拡張しました。
Crashlyticsで特定の問題をクリックすると、新しい [Generate AI insights] ボタンが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/3234d7d6-61ea-8ce1-d5bb-dda51dc4b0cb.png)

これを使うことによってクラッシュやエラーを分析し、バグをできるだけ早く修正するのに役立つ情報を得ることができます。


もぐめっとの一言： いつも、エラーが発生したときはファイルや行、エラー内容から何が起こってるかを把握していましたが、それがある程度自動化されるのは開発者にとっても時間短縮につながる素晴らしい機能ですね。

## まとめ

まとめると下記になります。

- Firebase Data Connectを使うとPostgreSQLをFirebaseに導入できる
- Firestoreでもベクトル値の保存と検索ができる
- GenKitを使って生成AIをより身近にできる
- Vertex AI for Firebase SDKを使ってクライアントから生成AIにアクセスしやすくなる
- Firebase App Hostingでデプロイがよりお手軽になる
- RemoteConfigとCrashlyticsとGeminiを組み合わせてより安全に高品質なリリースが可能になる

今回は生成AIにフォーカスした発表が多い年でした。
より本質的な開発を取り組めるようになるので、引き続きアップデートには期待しております。

最後に、viraptureでは、サービスのコンセプト作りの帆走や、チームビルディング、技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますのでご感心ある方は気軽に弊社までお問い合わせください。

https://virapture.com/

https://menta.work/user/20565

ラグナロクではエンジニアやデザイナーのメンバーを募集しています！！楽しくぶち上げたい人はぜひお話ししましょう！！

https://ragna-rock.com