101
93

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Firebase Cloud Firestoreを使ってみる

Posted at

はじめに

仕事仲間とサーバレスな話をしててFirebaseいろいろ無料ですげーみたいな話になった。AWS lambdaやAzure Functionsなんかでビジネスロジックをピタゴラスイッチしてユーザーに向けた出力を考えると、FirebaseはホスティングデータストアNotificationとアプリに必要なものがタダ同然である。

最近Firebaseのことをみてなかったので久々に調べてたらCloud Firestoreという知らないやつがあったので使ってみることにした。

Firebase Cloud Firestore

FirestoreRealtime Databaseと同様のデータベースサービス。Realtime DatabaseがJSONで構造化されたデータをストアするのに対し、Firestoreはドキュメント指向DBライクな階層型の構造化データをストアでき、クエリ処理が利用できる。MongoDBみたいな感じのDB。Realtime Databaseに比べてデータの抽出がカンタンにできそうな感じのもの。

2018.3.14 時点ではベータ版として提供されている。たぶん将来的にはRealtime Databaseを置き換えるものになるんだろう。

つかってみる

Quickstartに沿ってnode.jsベースでやってみる。
まずはFirebaseコンソールで新規プロジェクトを作成する。

スクリーンショット 2018-03-14 22.51.32.png

適当に名前をつけて プロジェクトを作成 をクリックする。

スクリーンショット 2018-03-14 22.52.20.png

次へ

スクリーンショット 2018-03-14 22.53.25.png

Databaseをクリック

スクリーンショット 2018-03-14 22.53.50.png

Firesotoreの 使ってみる をクリック

スクリーンショット 2018-03-14 22.55.14.png

今回はテストモードを選択して 有効にする をクリックする

スクリーンショット 2018-03-14 22.56.16.png

プロビジョニングが終了するとデータビューアーが表示される。

スクリーンショット 2018-03-14 22.57.17.png

ローカルPCの適当な場所にサンプルプログラム用のディレクトリを作ってFirebase SDKをインストールする。

mkdir firestore-test && cd $_
npm init -f
npm install --save firebase-admin@^5.7.0

プロジェクトのダッシュボードから 歯車アイコン -> ユーザーと権限 をクリックする

スクリーンショット 2018-03-14 23.32.42.png

左端のカギアイコンをマウスオーバーしてサービスアカウントをクリックする

スクリーンショット 2018-03-14 23.34.06.png

サービスアカウントの画面でデフォルトで設定されているサービスアカウントの右端オプションアイコンから キーを作成 をクリックする

スクリーンショット 2018-03-14 23.36.58.png

キーのタイプ JSON を選択し、作成をクリック

スクリーンショット 2018-03-14 23.39.40.png

サービスアカウントの秘密鍵が入ったJSONファイルがダウンロードされる。
このJSONファイルを先ほど作ったディレクトリに配置しておく。

下記のテストコードをディレクトリ下に作成する。[SERVICE ACCOUNT JSON FILE] の部分を先ほどダウンロードしたサービスアカウントのJSONファイル名に書き換える。

index.js
const admin = require('firebase-admin');

var serviceAccount = require("./[SERVICE ACCOUNT JSON FILE]");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

var db = admin.firestore();

var docRef = db.collection('users').doc('alovelace');

var setAda = docRef.set({
    first: 'Ada',
    last: 'Lovelace',
    born: 1815
});

実行してみる

node index.js

正常に実行できたら、Firestoreのデータビューアーを見てみる。usersコレクションが追加されていて、コレクションにドキュメントが追加されている。

スクリーンショット 2018-03-14 23.45.31.png

index.js を以下のように更新する。

index.js
const admin = require('firebase-admin');

var serviceAccount = require("./[SERVICE ACCOUNT JSON FILE]");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

var db = admin.firestore();

db.collection('users').get()
    .then((snapshot) => {
        snapshot.forEach((doc) => {
            console.log(doc.id, '=>', doc.data());
        });
    })
    .catch((err) => {
        console.log('Error getting documents', err);
    });

実行してみる

node index.js
alovelace => { last: 'Lovelace', first: 'Ada', born: 1815 }

usersコレクションのドキュメントが取得できた。

まとめ

FirestoreはいまのところMongoDBのダイエット版といった感じか。単純なアプリで利用するデータストアとしては十分使えると思う。これでスケール気にせずに1GBまで無料か。やべえな。。上手く使ってなんか超節約Webサービス作ってみたい。

101
93
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
101
93

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?