Firebase
using Firebase Library今回は、Nefry BTライブラリに導入されているFirebaseライブラリの紹介を行います。 一通り機能を紹介しますので、ぜひFirebaseを使った作品を作る際に参考にしてください。
Firebaseとは?
Firebaseは、Googleが運営するBaaSです。
BaaSとはサーバ側のバックエンドを提供してくれるサービスで、データベースや認証部分などのサービスをサーバ側のコードを書かずに実装できる優れものです。
AndroidやiOS、WebやUnityなど様々な言語向けにSDKが出ており、簡単に機能を自分のアプリに組み込むことができます。
2018/8月現在、トップページに表示されている機能だけでも、機械学習や認証機能など17種類の多種多様なサービスが提供されています。
Nefry BTのFirebaseライブラリでできる機能は、「Realtime Database」の読み書きです。
まずはNefry BTから読み書きするために、Firebaseの準備をしていきます。
Firebaseの準備をしよう
公式サイトを開くと「コンソールへ移動」というリンクがあるのでそこをクリックします。
ログインしていない場合、どのGoogleアカウントでログインするか確認されますので、ログインをして次に進みます。
コンソール画面を開くと「プロジェクトを追加」というボタンがあるのでそれをクリックします。
プロジェクトの追加画面が表示されたら、「プロジェクト名」を記入します。 その後下のチェックボックスにチェックを入れると、「プロジェクトを作成」をクリックできるのでクリックして作成します。
プロジェクトが作成できると次のような画面が表示されます。 その中からDatebaseの「使ってみる」というリンクをクリックします。
「Realtime Datebase」を移動したページから探して、「データベースを作成」をクリックします。
Realtime Datebaseのセキュリティルールを確認されますが、「テストモードで開始」を選び、「有効にする」をクリックします。 実際に使う際には適したセキュリティルールで運用してください。
準備が完了すると、次のような画面が表示されます。
ページ中央に表示される https://
を抜いたURLをNefry BTに設定するのでメモしておいてください。
例えば下記のようになります。
- Firebaseに表示されたURL:
https://nefryfirebase-14bb0.firebaseio.com/
- Nefry BTに設定するURL:
nefryfirebase-14bb0.firebaseio.com
Firebaseに書き込み
Firebaseに書き込む方法は「新規追加」「書き込み」「データ更新」の3つあります。違いについてはそれぞれの機能説明で紹介します。
新規追加
Firebaseに保存するタイミングで一意のキーを割り振られ、その配下にデータを保存します。
詳しくはドキュメントと、保存されたデータのスクリーンショットをご覧ください。
#include<NefryFireBase.h>
//Firebaseに新規キーを追加しそこに情報を書き込みます
NefryFireBase firebase;
void setup() {
firebase.begin("APPID.firebaseio.com");//FireBaseに接続するための設定をします。
}
int i = 0;
void loop() {
DataElement elem = DataElement();
elem.setValue("sensor", i++);
elem.setValue("NefryTest", 500 + i++);
firebase.send("Nefry", &elem);//FireBaseに新規キーを追加し、そこにデータを追加します
delay(10000);
}
書き込み
Firebaseにデータを保存します。更新と似ていますが、こちらはデータを上書きします。
PUTによるデータの書き込み | Firebaseドキュメント
#include<NefryFireBase.h>
//Firebaseにデータを書き込みます
NefryFireBase firebase;
void setup() {
firebase.begin("APPID.firebaseio.com");//FireBaseに接続するための設定をします。
}
int i = 0;
void loop() {
DataElement elem = DataElement();
elem.setValue("sensor", i++);
elem.setValue("NefryTest", 500 + i++);
firebase.write("Nefry", &elem);//FireBaseに新規キーを追加し、そこにデータを追加します
delay(10000);
}
データ更新
Firebaseにデータを保存します。書き込みと似ていますが、こちらは元々あるデータを引継ぎつつupdate関数に入れた値のみ更新します。
PATCHによるデータの更新 | Firebaseドキュメント
#include<NefryFireBase.h>
//FireBaseのデータを更新します
NefryFireBase firebase;
void setup() {
firebase.begin("APPID.firebaseio.com");//FireBaseに接続するための設定をします。
}
int i = 0;
void loop() {
DataElement elem = DataElement();
elem.setValue("sensor", i++);
elem.setValue("NefryTest", 500 + i++);
firebase.update("Nefry", &elem);//FireBaseのデータを更新します
delay(10000);
}
Firebaseのデータを削除
Firebaseにあるデータを削除します。
#include<NefryFireBase.h>
//FireBaseのデータを削除します
NefryFireBase firebase;
void setup() {
firebase.begin("APPID.firebaseio.com");//FireBaseに接続するための設定をします。
}
void loop() {
//firebase.remove("Nefry");//FireBaseのデータを削除します
firebase.remove("Nefry/sensor");//一部削除例:FireBaseのデータを削除します
delay(10000);
}
Firebaseのデータを読み込み
Firebaseにあるデータを読み込みします。
#include<NefryFireBase.h>
//FireBaseからデータを読み込みします
NefryFireBase firebase;
void setup() {
firebase.begin("APPID.firebaseio.com");//FireBaseに接続するための設定をします。
}
void loop() {
Serial.println( firebase.read("Nefry"));//FireBaseからデータを読み込みします
//Serial.println( firebase.read("Nefry/NefryTest"));//FireBaseからデータを読み込みします
delay(10000);
}
認証機能を使う場合
begin関数には、シークレットキーで認証ができるように引数を渡すことができます。 その設定について説明します。
Firebaseでの設定
まず設定したいプロジェクトを開き、設定マークから「プロジェクトの設定」をクリックします。
プロジェクトの設定の「サービスアカウント」を選択します。
次に「Database secrets」を押すとシークレットと書かれた部分にマウスを合わせるとシークレットキーを確認することができますので、それをコピーします。このシークレットキーをNefry BTに設定します。
Nefry BTでの設定
Firebaseに書き込むサンプルをベースに認証情報を追加してみます。
変更点はbegin関数の2つ目の引数に先ほど取得したシークレットキーを入れます。以上で完了です。
#include<NefryFireBase.h>
NefryFireBase firebase;
void setup() {
firebase.begin("APPID.firebaseio.com", "SecretKey");//FireBaseに接続するための設定をします
}
int i = 0;
void loop() {
DataElement elem = DataElement();
elem.setValue("sensor", i++);
elem.setValue("NefryTest", 500 + i++);
firebase.send("Nefry", &elem);//FireBaseに新規キーを追加し、そこにデータを追加します
}
まとめ
Firebaseを使うことで、簡単にスマートフォンアプリやWebサービスと連携することができます。
Nefry BTでさらにいろんなことができますのでぜひ試してみてください。