昨日は Firebase.yebisu #1 に参加してきた.最近まで担当していたプロジェクトで FCM (Firebase Cloud Messaging) と Firebase Remote Config を実戦投入して良さを感じていたので,Firestore など,他の機能の話も聞きたいなと思っていた.また,チームメンバーに FCM 導入事例の LT を任せたため,その応援も兼ねていた.僕が普段参加する勉強会は AWS / Ruby / Go 関連が多いため,ネイティブエンジニアが多く集まる会にはあまり参加したことがなく,全然知ってる人がいなくて驚いた(こんなにもクラスタが違うのかぁぁぁ).
Firebase Dev Summit 2017 のはなし / @fumik0i
- Firebase Dev Summit で新サービスがたくさん発表された
- A/B Testing
- Predictions
- Crashlytics
- 新サービスの発表だけじゃなく,ベストプラクティスの解説もあった
- Vue.js + Firebase Hosting を試してみて,簡単にサンプルコードをデプロイすることができた
(資料公開待ち)
Try new Firebase A/B testing / @sgr_ksmt_dev
- 条件に指定した複数の Remote Config を一気に変更することができる
- 目標を設定して,コントロールグループごとに効果を見ることができる
- ターゲットに従来のユーザー属性だけでなく,Predictions の機能を使うこともできる
- 検証端末などを使う場合は,固定の Instance ID を条件に含めておくと便利
- FCM と連携をすることもできる
今までも Remote Config を使って A/B のようなことは実現できていたけど,これをコントロールグループとして,統括的に管理できるようになったメリットは大きいと思う.A/B Testing 気になるなぁ!
Way of truly serverless application / miup
- 完全に BaaS / SaaS に依存した状態を Truly Serverless と定義した
- Realtime Database のクエリは使いにくく,Firestore でも,まだ複雑なクエリは難しい
- 結局,クライアントサイドジョインが必要になってしまう
- 検索を実現するために Realm or Algolia を検討した
- Cloud Functions を活用して,Algolia にデータを書き込む
- モバイルエンジニアだけでサービスを作れると素早く動ける
最近個人的に試している Algolia が紹介されていたし,デモアプリも非常によくできていて,良い発表だった.「サーバレス」という言葉は解釈が曖昧で論争が起きることがあり,今回も質疑応答で定義の確認みたいな話が出ていた.
Firebase Realtime Database Design / @1amageek
- エンジニアリングにデザイン(設計)は重要
- Firebase Realtime Database のためのデザインとは?
- Model
- Relationship
- Rule
- モデル化のライブラリも公開している
最後に Realtime Database のデモがあったり,質疑応答で出た「データスキーマのマイグレーションをどうしたら良いか?」という質問に対して「破壊的な変更があるかどうかを考えて,ある場合は,データ構造に v1 / v2 などをバージョンを付与しておく」という回答があるなど,非常に実践的な発表で勉強になった.
LT : Firestore で負荷試験
- Firestore の Write は,特定の条件だと 500 per second に制限される?
- Rocro Loadroid を使って負荷テストをしてみた
- 実測値ではもっともっと Write はできる
- ただ,スケールが必要なため,徐々にリクエスト数を上げないと,取りこぼしてしまう場合もあった
(資料公開待ち)
LT : 開発用途で Realtime Databaseを 導入した話
- Realtime Database を使わないのはもったいない
- Realtime Database にエラーログを送信し,Cloud Functions を呼び出す
- 無料プランだと外部サービスにリクエストを飛ばすことができないため,FCM を経由して Slack にリクエストを飛ばしている
LT : Node/SPA エンジニアにとっての富豪的 Firebase Hosting
- 静的サイトホスティング,認証,列指向 DB があり,簡単にプロトタイピングをしたかった
- 最近の Firebase では揃ってきた
- AWS だとツライ
- Node を Cloud Functions で運用するのはどうか?
LT : Firebase Android SDK Tasks API の直列処理について
- Tasks API を直列に処理したかった
- Continuation Interface を使うとできる
- より簡単に書けるようにライブラリを作った
LT : Firebaseを利用したプッシュ通知送信基盤の実装
- Firebase でプッシュ通知を送る場合,Firebase Notification と Firebase Cloud Messaging がある
- API で操作でき,自由度のある Firebase Cloud Messaging を使っている
- ただし,トピックを4個以上 & 演算できないなどの制約がある
チームメンバーに FCM 導入事例の LT を任せた.非常にうまく発表をしてて安心したけど,自分が発表するのとは桁違いに緊張した(笑)LT で話せなかった内容は以下の記事にまとめてもらっているので,是非!
LT : サーバサイド Swift と FCM
- サーバサイド Swift で仮想通貨取引所のデータを取得して,変化があったら FCM でプッシュ通知を送る
- GitHub - vapor/vapor: 💧 A server-side Swift web framework.
(資料公開待ち)
まとめ
- Firebase 大好きなエンジニアが多く集まっていて,実践的な事例を聞けて良かった
- Firebase と言っても機能がたくさんあるので,ちゃんと名称を言わないと「Firebase のどれ?」ってなりそう
- Realtime Database / Firestore はデータ設計も考えつつ導入してみたい
- A/B Testing はデモを見た感じだと,すごく良さそうだった