【ai】firebaseでクラウドデータベースの実験

[ Inquiry AiLiveComplete ]

僕が加入している有料会員制 App Inventor2ディストリビューション「AI2LiveComplete」は、5,6ヶ月に一度アップグレードされます。
2014年10月に加入してから17ヶ月で3度のバージョンアップが有りました。

このアップグレード、まるでプログラムオタクの社長が「これ便利そうだから新機能として追加しとくね!」みたいなオタク的サービス精神いっぱいの機能追加がメイン!(+バグフィクス)

この3度目のバージョンアップがつい先日、2016年2月11日にリリースされました。
今回の目玉機能が「実験的Firebase対応」

メンバー向けメールには、「テスト導入。将来どうなるかは分からない」と書かれています!

ところでFirebaseって何?

調べてみると、この会社はgoogleに買収され、今はgoogleの一部としてサービスが提供されているようです!

[ Firebase ]

サービス内容は、リアルタイム同期型クラウドデータベースらしい・・・・・

何だ、それ?

チャットシステム開発とかに使うと便利なサービスみたいですね!
Aさんがチャットへ投稿をすると、リアルタイムでBさんのアプリ画面にその発言が表示されるようなアプリが簡単に作れるそうです。

さてこの技術、形部商事の仕事に活かす方法は無いのかな?

例えば、外回りの営業マンが得意先で受注を1件入力すると、リアルタイムで会社のモニターにその明細内容が表示されるような仕組みが作れないか・・・・

で、取り合えずテストアプリを作ってみました。

元データ側スマートフォンのSQLiteに3レコードを用意。
そのデータをFor nextでループしながらFirebase.StoreValueイベントでクラウドデータベースへアップロード。

それと同時に受信側スマートフォンで、Firebase.DataChangedイベントが発生し、データが降ってくるので、それを受信。

その明細を受信側SQLiteへinsertできれば受注作業リアルタイムモニターアプリ開発も夢では無くなる!

テストアプリの外見がこれ
App Inventor2開発:Firebaseでクラウドデータベースとリアルタイム同期

試行錯誤して作ったプログラムがこれ!
関係ないですが気付きました!?
「バックパック」アイコンがいつの間にか変わっています!
以前のアイコンはとてもダサかったが、新しいのも、どうなんでしょ?
ダサいかも・・・・
App Inventor2開発:Firebaseでクラウドデータベースとリアルタイム同期

スマホでアプリを起動させるとこんな感じ
App Inventor2開発:Firebaseでクラウドデータベースとリアルタイム同期

いよいよ実行!
まずは1台のスマホでクラウドへの書き出しから受信までを行う!

「Firebase追加」ボタンを押すと・・・・・

ローカルSQLiteのデータが無事Firebaseに保存されました。
App Inventor2開発:Firebaseでクラウドデータベースとリアルタイム同期

オリジナルテーブルの3レコードをFirebaseへ書き込む。
と同時にクローンテーブルにその3行が書き込まれ画面中央のリストボックスに表示されました!(大成功)
App Inventor2開発:Firebaseでクラウドデータベースとリアルタイム同期

次に、2台のスマホを並べて実験。
右側スマホからオリジナルテーブルに保存されている3レコードをFirebaseへ書き込む。
と同時に、左側スマホのクローンテーブルにそのデータが保存されました!

App Inventor2開発:Firebaseでクラウドデータベースとリアルタイム同期

これはスゴイ!
ほとんど時差なく2台のスマホ内のSQLiteデータが同期された!

ならば、受信側スマホでアプリを停止させた状態で、元データ側スマホでデータアップロードするとどうなるの?

App Inventor2開発:Firebaseでクラウドデータベースとリアルタイム同期

テスト結果は、最終レコードだけが同期されました!
これは同じTAGで書き込みしてるのが原因だよな・・・・・

1万行のマスタを同期させるには、1万個のTAG付きで書き出す必要があるのかな?
1万個のTAGを作ってしまったら、初期化はどうすればいいのかな?

勉強を初めて3日目!
リアルタイム同期型クラウドデータベースは、まだまだ謎だらけ!
もっともっと勉強しなければ・・・・ 🙄

でも、ネット探しても馬鹿でもわかるような優しい解説してくれてるページが無いんです、Firebaseに関しては!?
素人には難しすぎる領域かも・・・・・ 😮

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA