それほど今はFirebaseを使い込んでいたり、これから使うような予定はないのですが、情報収集目的で以下のイベントに参加しました。
firebase-community.connpass.com
以下聞いたセッションのメモと所感です。
firebaseでWebアプリを作る際のTips
途中参加のため、聞けず。
FirebaseNotification,RemoteConfigでユーザセグメントごとにプッシュ通知を実装する
FirebaseNotificationつかってプッシュ通知を送る方法の紹介。 使用したサービスは以下の通り。 - Notification(FCM) - RemoteConfig - User Property
元々の実装では、ユーザ全員にPush通知を送ってしまう作りになっていたので、負荷が高い。 負荷の軽減のために、ユーザセグメント毎にPush通知を送る。
アプリ起動時に、RemoteConfigに自身のグループNoを登録する仕組みを実現したとのこと。
所感
自分はアプリでPush通知を実装したことがないので詳細はわからないですが、それほど高い難度でなく実装可能な印象を受けました。
Firebase Test Labの紹介
Firebase Test Labとは?会場内で使っている人は少ない.. 私も知らなかった..
- UIテスト実行基盤
- Googleが管理しているAndroid実機を利用してテストできるサービス
apkファイルをアップロードして、テストしたい機種とOSバージョンを指定したら、テスト実行してくれるとのこと。
Roboテスト - テストがなくても、ボタンなどを自動で認識して、ガチャガチャテストしてくれる。
所感
Firebase Test Lab知りませんでした。これがあればわざわざ端末借りてテストみたいなことを省けるので便利。登壇者はDeNA所属の方でしたので、そのくらい大規模なサービスでは必須なんだろうなと感じました。 直近ではアプリ開発要件はないのですが、Web画面もRoboテストしてもらえたら良いのになぁと感じます。
Outside of Stack Trace
- Firebase Crashlityicsのテーマ
アプリがクラッシュした時にそのクラッシュレポートを収集して見やすくしてくれる機能。
- Analyticsと統合したクラッシュレポートが取れるのが良い。
- アプリの画面遷移経路、時刻などの情報を元にレポートが取れる。
- クラッシュ時に収集したい情報をカスタムキーとして収集できる。
所感
これも知りませんでした。アプリでなくNuxtなどWebベースでも似たようなログ収集が適用できるか知りたいところです。
2プロジェクトでAuthentication UserをSyncさせる 〜LINEログインを使ったカスタムログインでやる編〜
FIrebase認証がテーマ(Firebase Auth)
- LINEには標準で対応していない。のでカスタム認証を使用する必要がある。
- GoogleIDとかだとフェデレーションプロパイだなので、SDKが上手いことやってくれる。
- カスタム認証だと、認証部分の仕組みを一部自分で実装する必要がある。
所感
カスタム認証はちょっと面倒な印象を受けました。なのでLINE認証は辛そう.. 認証はAuth0を採用したことありますが、認証単体で見るとAuth0の方が多機能そうな印象を受けました。その他の機能も統合されているのがFirebaseの良いところなので 単純に認証だけでもちろん良し悪しは決めれないですが。
Firestore における CQRS の可能性
CQRS ... コマンドクエリ分離 FIresotreでチャットルームのデータモデリングを実装したケースのテーマ
- コマンドとクエリを分離することで、書き込みの構造と読み込みの構造を分離することで、複雑性を下げる。
- コマンドはWrite Onlyスキーマは RDBライクな構成となる。
- クエリはRead Only. データに冗長性があってもよく、非正規でも良い。
- データの繊維は コマンド -> クエリ の一方向のみで、逆は許可しない。
- 上記のようにすることで、一見データ構造は複雑になったように見えるが、Writeする側、Readする側それぞれからはアクセスしやすい。
所感
コマンドとクエリの分離をスキーマをどう定義するかの事例が見れて勉強になりました。CQRSの考え方は普段あまり意識したことなかったので、データモデルを設計する際に選択肢の1つとして覚えておきたいと思いました。
全体の感想
FirebaseについてはCloud FunctionとかDynamic Linkとか, Realtime Databaseぐらいしか知りませんでしたが、思っていたより "すげー便利そう"な機能を多く知ることができました。 普段の開発ではバックエンドはRuby on RailsとかNodeJS + MySQL を選びがちなんですが、Cloud Functionでサーバサイド側をどこまでさくっと実装できるかが気になるところです。 アプリ開発はそれほどメインではないのですが、Nuxtなどのウェブベースでどこまで使えるか調査してみたいと思います。