Diary

@ssig33

Firebase 使ってみた 2018

最近は技術についてはレイトマジョリティでいいなと思ってる。 Firebase はもう完全にやっていけるかんじっぽいのというのを各方面から聞いたので試してみた。

だいぶ前に Firebase を使ってみたとき、 Realtime Database のクセが強すぎてこれはあかんなという感じだった。今では Cloud Firestore があるので話が違うだろうと思いあらためて実用アプリを一個作ってみた。

前にクライアントサイドだけで実行して保存先は Google Drive という野蛮なメモツールを作ったことがあった。これのバックエンドを Google Drive から Firebase にしてみた。

元々のツールが Google Drive との接続部分を一つのファイルに切り出していたので、これをいじって Firebase に対応するだけでスッと作れた。

出来たメモツール、 Markdown メモツールとして結構素性いい感じになったので別途公開したりしたい。

さらに React Native を使って iPhone クライアントも作ってみた。

Firebase の感想 2018 年版

Cloud Firestore はすごい

Realtime Database は本当にリアルタイムなアプリケーション専用の設計になっていて、リアルタイム性別にいらないんだけど、、、みたいな時はすごく使いづらかった。

Cloud Firestore は集計関連以外だいたい RDBMS みたいな感覚で使える。大抵のアプリにおいて Realtime Database よりも遥かに簡単に使えると思う。普通の Web 系プログラマーにとってはかなり直感的。

ただし、書き込み速度についてはかなり遅くて、たとえば特定のドキュメントのカウンターとかを頻繁に更新する場合は、そのドキュメントの配下にカウンター専用シャーディングドキュメントみたいのを作って更新時にランダムに選択したカウンターをインクリメントし表示時に合算せよみたいな地獄のノウハウが公式から提供されている。正直こんなのまともな人間がやることではない。

こういう無理なことをするくらいなら Cloud Functions 経由で BigQuery にデータをコピーし、 Cloud Functions に適切に API を実装することが楽である場合が多いだろうと思う。

「殆どの」ワークロードは Cloud Functions 抜きで実装でき、結果として自分で一からサーバーサイドをなんとかするより遥かに低コストになると思う。

全文検索も Cloud Functions で解決することが推奨されているタスクだ。このドキュメントで紹介されている algolia という全文検索ソリューションはかなり強力で、 Firebase に興味がないという人もこれだけは使ってみる価値があると思った。

また Firebase の特筆事項として「 Google/Twitter/Facebook およびメールアドレスとパスワード」でログインできるみたいなサイトを本当に一瞬で作れる点がある。認証まわりの気軽さは本当にすごい。

React Native と Firebase

react-native-firebase というライブラリがあって、結構楽にやっていける。ただし、 react-native-firebase で認証まわりを作るには現状かなりのエアリーディング力がもとめられる。各種ライブラリの README やドキュメントを読むだけでは動くものにはならないのが現状。

まとめ

これまで何度か Firebase で遊んでみて、その度に「これはダメだな、まだまだ Rails でサーバーを書く時代だ」などと思ったものだけど、そろそろ山が動いたと思った。

あと一言

Firebase という名前を mBaaS とアクセス解析という相互にそんなに関係ない二つの分野にひろがるブランド名に使っている結果検索性が非常に悪い。マーケティング担当者は切腹したほうがいい。

06 Mar 2018 Tue 05:50 (UTC)