昨日、Firebase プロジェクトを作成しました。
本日は、Realtime Database の初期セットアップのやり方をまとめておきます。
Realtime Database とは
クラウド上にホストされたNoSQLデータベースで、リアルタイムでデータの読み書きが可能です。データの変更が即座に反映されるため、リアルタイムチャットやライブフィードなどのアプリに適しています。
料金体系
あれ!?Spark プラン (無料プラン)の項目にRealtime Databaseが無くなっている!?
それどころかFirebase AuthenticationやStorage, Firestoreなど諸々無くなっている!?
それどころかFirebase AuthenticationやStorage, Firestoreなど諸々無くなっている!?
すごく焦りました。
どうやら、日本語ページでの記載が遅れているだけのようです。
英語ページにはちゃんと記載がありました。
Realtime Database | Spark プラン | Blaze プラン |
---|---|---|
同時接続 | 100 | 200k/DB |
保存 | 1GB | $5/GB |
通信 | 10 GB/month | $1/GB |
複数DB | ❌ | ✅ |
1GB あたり $5 と非常に高い!
Cloud Firestore は、たぶん $0.156/GiB ですかね?
初回セットアップ
DB を新規に作成する
Realtime Database トップへ遷移する
左メニューの「構築」内にある「Realtime Database」をクリックします。
データベースを作成する
「データベースを作成」のボタンがありますのでクリックします。
ロケーションを選ぶ
東京リージョンも無いですし、適当で良いです。
セキュリティルールを選択する
◆ロックモード
「読み取り / 書き込み」共に false
なので外からは読み書きできません。
◆テストモード
now < ${timestamp}
の間「読み取り / 書き込み」共に true となります。
つまり、API-Key 等を知っていれば、30日間は誰でもアクセス可能になります。
これは後から設定できるのでどちらでも良いです
セキュリティルールの設定
さて「ロックモード」or「テストモード」でルールを設定しましたが、
ロックモードでは、読み書き共に false なのでウェブアプリからアクセス出来ませんし、テストモードでは、一定期間しかアクセス出来ません。
テストモードで、30日間経ってしまって、ある時、急に動かなくなって焦りました
細かい設定は上記を参照
例えば、
「ログインした人にだけ◯◯一覧を表示する」だったり、
「 users.$uid
配下は本人しか編集できないようにする」など細かい設定ができます。
セキュリティルールをとりあえず設定
{ "rules": { ".read": true, ".write": true, } }
このような設定だとルート要素から全てのデータの閲覧権限が付いてしまうので ❌
{ "rules": { ".read": false, ".write": false, "hello-world": { ".read": true, ".write": true, } } }
このように設定すると
/
や /path/to
へのアクセス権は無く、/hello-world
配下のみアクセス権がある状態になるので、安全?です。
ルールのプレイグラウンドで確認してみましょう
SDK の設定サンプルを確認
昨日の記事
まとめ
これで Realtime Database が使えるところまで来ました。
次回は実際に Web アプリから使ってみます。
次回は実際に Web アプリから使ってみます。