以前、 imakaraでやりたかったことなど - YusukeIwakiのブログ で作っていたものをベースに、
ということをやってみたく、作ってみた。
Firebase Realtime DatabaseとFirebase Functions/Hostingがあれば趣味のアプリは大抵作れてしまう
imakaraでは練習目的でRailsでサーバーサイドを実装していた。サーバーサイドがRailsだと当然、Androidアプリ側も、
- APIクライアントを実装したり
- 非同期処理をいい感じにやったり
などなど、わりとお決まりの骨が折れるコードをいっぱい書かないといけなかった。
しかし、今回、Firebase Realtime DB + Firebase Functions/Hosting でやってみて衝撃。APIクライアント(というかHTTPクライアント)を一切使うことなくWebアプリが作れてしまった。 ざっくりどんな構成になってるか説明してみようと思う。
Androidアプリ側でGCMトークンが取得できたタイミングで、FirebaseUserIDに紐づけてDBに保存
アプリで「FirebaseUserIDに紐づけてDBに保存」されたのをFirebase Functionsでリモート監視して、そのレコードに共有用URL値を付け加える
Androidアプリ側で、共有URLをリアルタイムに表示する
共有用URLにアクセスが来たら(中略)測位要求を送る
Firebase HostingでGoogleMap1枚ぺらのページを返す。ついでに、Realtime DBの位置情報をリアルタイムにsetCenter。さらについでに、マップのロード時に裏でこっそりFCMプッシュを送ってて、測位して下さいねー!ってAndroidアプリ側に要求がいくようになっている。
Androidアプリ側でプッシュを受けたら、ワンショット測位して結果をDBに書く
・・・というかんじで、リアルタイムDBに必要な情報は全部載せてしまって、あとはFunctionsでボットスクリプトみたいなのを書いてHostingで入り口を作れば趣味のアプリはできてしまう。
もう趣味でRails書く気は全く無くなってしまった。困った。