Posts Tagged ‘Firebase’
Firebase Genkitを試してみた
Firebase Genkit は、本番環境に対応した AI 搭載アプリの構築、デプロイ、モニタリングに役立つオープンソース フレームワークです。
今回、以下を試してみます。
- ブラウザからFirebase Functionを呼び出し実行
- Firebase Local Emulator Suiteを使ってローカルで開発
- Cloud Firestore vector storeを使ってRAG(Retrieval Augmented Generation)のインデックス作成と検索を行う
- モデルにGoogle AIのGemini ProとOpenAIのGPT-4oを使う
Firebase Cloud Functions のNode.js 10更新、わたしの場合
2020年5月某日、
「Node.js 8のFunctionは来年3/15には止まるから10にしてね。あと、10は無料プランじゃ使えないからそこんとこヨロシク」(要約)
というメールがGoogleさんから来ました。
詳しくはその内容を整理してくださってるステキな記事をどうぞ。
【Firebase】Cloud Functionsが従量課金プランでしか使えなくなるらしい
(https://qiita.com/azukiazusa/items/edd6ca9cba2d48c4c3e2)
1年くらい前(2019年3月末)にリリースしたシステムが該当しており放置すると来年の3月には死。
あの時はまだNode.js 8すらベータ版だったやんか。1年でこんなことになるとは…
FirestoreのServerTimestampさん
有能!
サーバー側で採時するので集計対象の抽出などに安心して使用できます。
これのおかげで必要なデータ取得数を大幅に削減できています。
Firestoreだとデータ取得数は速度や効率だけでなく課金に直結しますしね。
管理画面でデータを時系列に並べたりするのにも便利なのでドキュメント登録時には必ず入れておいたほうが良いくらいの有能さです。
Webでは
import firebase from '~/plugins/firebase'
payload.createdAt = firebase.firestore.FieldValue.serverTimestamp()
await db.collection('コレクション名').add(payload)
Firestoreのセキュリティルールのこと
バックエンドをFirebaseでSPAのシステムを作る場合、データを守る砦はデータベース(今回はFirestore)のセキュリティルールです。
Authenticationのログイン情報とFirestore上のユーザー情報を紐付けし権限によりドキュメントへのアクセスを制限するなど、適切な設定しなければなりません。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
これは「ログインしているユーザーはフルアクセス」という最低限設定しておくべきルールです。開発中はお世話になりました。
しかし最終的にはもっとこまかく制限をかける必要がありますから、それを前提にデータ構造を設計しておいたほうが良いです。
例として今回作ったシステムのデータ構造とセキュリティルールの一部について解説します。
Nuxt.js 悩み解決の小ネタ集
ここ1ヶ月程Nuxt.js + FirebaseでSPAのシステムを作っていました。
短期構築がご要望でリアルタイム性が求められる内容。Firebaseに向いていると判断、提案したところ技術構成は自由にやらせていただけることになりました。
別件で一昨年末あたりからずっとバックエンドはLaravel、フロントエンドは素のVue.js + Vuex + Vue Routerで開発やってるんですが、PWA化したほうがよさそうだったこともあってNuxt.js(以降Nuxt)使ってみようかなってことで採用。
Nuxt、便利ですね。特にプラグインとミドルウェアが素敵!
Firebase(今回使用したのはAuthentication、Firestore、Hosting、Functions)との相性もバッチリでした。
ですが初めてということもありいろいろと悩んだりもするわけで…
それらをどう解決したか?の小ネタ集です(というか今回の落とし所、かな)