FirebaseのFirestoreにWebサイトからデータを追加してみるまでの手順

公開日:2018/08/04 更新日:2018/08/04
FirebaseのFirestoreにWebサイトからデータを追加してみるまでの手順のサムネイル

はじめに

リアルタイムに同期するデータベースを使ったWebアプリやモバイルアプリを開発する上で大変強力なFirebaseの設定と実際にWebサイトからデータを追加してみるまでの手順をメモします。

Firebaseにログイン

まずGoogleアカウントを使ってFirebaseにログインします。 Firebase ログイン

ログインすると、以下のようなようこそ画面が出ます。ここで「プロジェクトを追加」をクリックします。

1-welcome-firebase-1024x480.png

以下のようにプロジェクト名の入力と、アナリティクスと課金の地域を選択します。また、チェックポイントは2つともいれて、「プロジェクトを作成」をクリックします。

2-myfirebase.png

「プロジェクトを作成」をクリックすると、プロジェクトを作成していますと表示されます。

3-making-project-1024x776.png

作成完了すると、以下のように表示されます。

4-made-project-1024x797.png

次へをクリックすると、色々なメニューが表示されます。ここで「Database」をクリックします。

5-lets-start-1024x833.png

すると、以下のように「Cloud Firestore」の画面に移ります。

6-cloud-firestore-1024x822.png

ここで、「データベースの作成」をクリックすると、以下のように「Cloud Firestoreセキュリティルール」というポップアップ画面がでるので、「テストモード開始」を選択して、「有効にする」をクリックします。

7-chose-testmode.png

準備が完了すると、以下のようにダッシュボードに移ります。まず認証関係の設定を行うために、以下のように左側のメニューの中の「Authentication」をクリックします。

8-2-database-dashboard-1024x636.png

続いて「ログイン方法」をクリックします。

9-authentication-1024x583.png

すると、ログイン種類を選択できるので、ここではテストのため「匿名」を選択します。「匿名」にカーソルを合わせると鉛筆マークが表示されるので、これをクリックします。 なお、見てわかるとおりログイン方法には「メール / パスワード」、「Google」、「Facebook」など色々な方法が用意されています。

10-authentication-guest-1024x549.png

鉛筆マークをクリックすると、以下のように説明と有効化のためのスイッチが表示されるのでクリックして有効化し、保存をクリックします。

11-guestallow-1024x707.png

以下のように匿名が有効化されました。

12-guest-enabled-1024x649.png

続いて左側メニュー一番上にある「Project Overview」をクリックし、以下の画面に戻ります。ここで「ウェブアプリにFirebaseを追加」をクリックします。

13-b-chosewebapp-1024x467.png

以下のように、自分のWebサイトに貼り付ける用のコードと説明が表示されます。表示されたコードをコピーしておきます。

13-webapp-1024x716.png

以上で準備は完了です。続いて自分のWebサイトにコピーしたコードを貼り付けて実際にFirestoreにデータを書き込んでみます。

WebサイトからFirestoreにデータを書き込んでみる

自分のWebサイトの適当な箇所に以下のコードを貼り付けてそのWebサイトにアクセスしてみると、コードの中で指定したデータがFirestoreに追加されます。 ここではあくまでテストのためにの直前に以下のコードを貼り付けました。このままだと、単純にそのWebサイトのアクセスするだけでデータが毎回追加されていきますの実用性は全くありません。

<script src="https://www.gstatic.com/firebasejs/5.3.1/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: "xxxxxxxxxxYOUR API KEYxxxxxxxx",
    authDomain: "xxxxxxxxxxYOUR AUTH DOMAINxxxxxxxx",
    databaseURL: "https://yourdatabase.firebaseio.com",
    projectId: "yourdatabase-id",
    storageBucket: "yourdatabase.appspot.com",
    messagingSenderId: "xxxxxxxxxxx"
  };
  firebase.initializeApp(config);

  // Initialize Cloud Firestore through Firebase
 var db = firebase.firestore();
db.settings({
  timestampsInSnapshots: true
});

 db.collection("users").add({
    first: "Adasas",
    last: "Lovelace",
    born: 1815
})
.then(function(docRef) {
    console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
    console.error("Error adding document: ", error);
});
</script>

上記では、usersというコレクション(MySQLでいうテーブルのようなもの)に以下のデータを書き込むコードになります。

first: "Adasas",
    last: "Lovelace",
    born: 1815

実際にアクセスしてみると、以下のようにFirestoreのデータベースにデータが追加されていることを確認できます。

14-added-data-1024x410.png

YOUR APP MAY BREAKというエラーが出る場合

最初公式サイト通りのコードを使って実行してみたところ、以下のような内容の警告がブラウザのコンソールに表示されました。

The behavior for Date objects stored in Firestore is going to change
AND YOUR APP MAY BREAK.
To hide this warning and ensure your app does not break, you need to add the
following code to your app before calling any other Cloud Firestore methods

この原因は、以下のようにdb.settingsがなかっためです。なのでこのdb.settingsvar db = firebase.firestore();の後に追記するとなおると思います。

db.settings({
  timestampsInSnapshots: true
});

2018/11/27 追記

timestampsInSnapshots: trueについては、こちらの記事が参考になりました。Firestore の Timestamp の仕様変更による警告と、その対処 - Qiita

まとめ

本来ならばデータベース用のサーバを用意したり、ログイン認証の実装をしたりと何かと面倒な部分がFirebaseのFirestoreを使うことで非常に楽に実現できてしまいます。なお、Firestoreは万能ではなく、色々な制限もあるのでそれぞれの用途に合わせて利用する必要がありそうです。以下にFirestoreを把握する上で大変勉強になったサイト様を載せます。

<a a="" cloud="" firebase<="" firestoreを使ってみる="" href="https://firebase.google.com/docs/firestore/quickstart?hl=ja" target="_blank"> Firebase Cloud Firestoreの使い方 Qiita React Native入門: FirebaseのCloud Firestoreでレコーディングダイエットアプリを作ってみる(前編) Ducklings inc. Tech Blog FirebaseのRealtime Databaseのざっくり概要 Qiita

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。