Firestore データベースの作成
Google Cloud Console
へアクセス
「Firestore の開始」または「データベースの作成」ボタンをクリック
Firestore モード」を選択
この時
ネイティブ モード
Datastore モード
の2つがある
APIを使うということで
ネイティブモードを選択
このデータベースには無料枠の割り当てがあります。
各プロジェクトには「(default)」という名前の単一のデータベースがあり、
無料枠割り当ての対象になります。
この割り当てを使い切ると、オペレーション、ストレージ、ネットワークの使用量に基づいて課金されます¹。
ロケーションは料金に影響します
とのこと
(default)
がデータベースIDになっている
次にロケーション
ロケーション タイプには
リージョン
99.99% の可用性 SLA、単一リージョン内で比較的低いレイテンシマルチリージョン
99.999% の可用性 SLA、最大の領域にわたり最も高い可用性
コストの違いをGPTで調べたらマルチにすると倍になるらしいので
リージョンを選択する
次にリージョンの設定をする
Firebase のセットアップ画面でリージョンを選ぶ際に、
「asia-northeast1(東京)」を選択すると、日本国内向けに最適なパフォーマンスが得られるらしい
選択したリージョンがユーザーに近いほど、レイテンシが低くなります
とあるので調べた
レイテンシ(Latency) は、ユーザーがデータのリクエストを送ってから、
そのデータが返ってくるまでの遅延時間のことを指します。具体的には、アプリケーションやサービスに対してユーザーが操作した際に、
その応答が表示されるまでの時間差です。レイテンシは「応答時間」とも呼ばれることがあり、通常ミリ秒(ms)単位で測定されます。
レイテンシの例
たとえば、LINEbot が Firestore に保存されたメッセージを取得してユーザーに表示する場合、
レイテンシが低いと、メッセージの取得がスムーズで、
ユーザーは素早く応答を受け取ることができます。
しかし、レイテンシが高いと、データの取得や表示が遅れてしまい、ユーザーにとって待ち時間が長く感じられます。レイテンシが重要な理由
* ユーザー体験の向上: レイテンシが低いほど、アプリの操作がスムーズで、ユーザーは快適に利用できます。
* リアルタイムアプリに重要: リアルタイムでの更新が必要なアプリ
(例: チャットアプリやオンラインゲーム)では、レイテンシが低いことが特に重要です。どのようにレイテンシを低くするか?
* 近くのリージョンを選択することで、データのリクエストが物理的に近い場所で処理されるため、
レイテンシが低くなります。
* ネットワーク最適化やキャッシュの活用などもレイテンシの低減に役立ちます。
例えば、日本のユーザーが多い場合は、データベースのリージョンを asia-northeast1(東京)にすると、
データの取得時間が短くなり、レイテンシが低くなります。
次に暗号化
「Google が管理する暗号鍵」を選ぶ理由
1. 管理がシンプル: 鍵の生成・ローテーション・バックアップなどがすべて
Google によって自動的に管理されるため、暗号鍵の管理負担が軽減されます。2. 追加コストなし: Google 管理の暗号鍵はデフォルトで提供されており、追加料金がかかりません。
3. 標準的なセキュリティ: 多くのプロジェクトでは、Google が管理する暗号化で十分なセキュリティが提供されます。
なので
デフォルトのままでOK
次に
セキュリティ ルール
セキュリティ ルールはアクセス制御とデータ検証を提供します。
2 つのプリセット ルールのいずれかから始めて、後でカスタマイズしてください。
本番環境ルール
データはデフォルトで限定公開になります。
モバイルおよびウェブ クライアント ライブラリ アクセスは、
セキュリティ ルールで指定された内容に従ってのみ許可されます。
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } } rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } }
サードパーティによる読み取りと書き取りはすべて拒否されます
テストルール
データはデフォルトでオープン状態になります。
ただし、長期にわたりモバイルおよびウェブ クライアント ライブラリ アクセスを有効にするには、
30 日以内にセキュリティ ルールを更新する必要があります。
これについては本番環境を選択
なお
firebase第1世代だけど rules_version = ‘2’; でOKか気になったので調べる
chatGPTの回答は
**Firebase 第1世代でも `rules_version = ‘2’;` を使用して問題ありません**。
`rules_version = ‘2’` は、最新のセキュリティルール構文で、
Firestore の第1世代と第2世代の両方で利用可能です。
このバージョンでは、より細かいアクセス制御やデータ検証の機能が提供されており、セキュリティルールの記述がシンプルかつ強力になります。
そのため、第1世代の Firebase プロジェクトでも `rules_version = ‘2’;` を指定してルールを作成することを推奨します。
って答えだけどGPTなのでとりあえず試すことにする
全面的な信頼はせず自分で検証も重要
たまに存在しないバージョン指定とかもするので
とりあえずこのルールでDBを作成する