Journal
Tech

Firebase Meetup#4 に参加してきたので備忘録

はじめに

Firebase Meetup #4の個人的レポートです。
公式のblog枠ではありませんが、今後blog枠にも申し込んでいきたいので、そういった観点と単純に個人の勉強記録となります。
そして中身はメモベースです。

会場はGoogle Japanさんの提供でした。
とてもおしゃれで、キッチンやよさげなコーヒーマシンが置いてありめちゃくちゃ羨ましい環境でした。ライトの感じが個人的にツボでした。
広さ的には120以上募集/実参加不明ですが、それでもまだ空席が結構あるほどの余裕があったように思います。

Firebase Meetup / Firebase Japan User Group とは

Firestoreのセキュリティルールについて (Web)

登壇者: @k2wankoさん

  • 最近Firebaseの脆弱性によって個人情報が漏洩 (編注: Gigazineの記事)
    • 利用企業の62%がDBのセキュリティルールに問題があった
    • Firebaseというよりはデベロッパーの設定が甘かった問題という見解
    • trueauth != null だったりしたのではないだろうか

以下Firebaseのセキュリティ設定が可能なサービス

Realtime Database (RealtimeDB)

  • ルールはjsonで設定する
  • 条件式を使った条件設定
  • 上位層でtrueとなっていると下の階層でfalseにしても意味がない
  • $other 書き込み権限はあるけど 制限したい その他 .validate 等 (編注: この辺に解説記事がある)
  • queryの制限もできる
  • ただJSONはつらい
  • そのためにBoltというツールが存在する
  • Realtime Databaseのセキュリティルールを生成するための独自の言語
  • Realtime DatabaseならBolt使っちゃおう
  • ただし万能ではなく、コンパイルしたJSONのルールを人力でチェックする必要がある。

Cloud Storage

  • 大きいデータを保存するためのストレージ
  • SDKを通してクライアントから直接アップロード
  • これはセキュリティはJSONではなく独自言語
  • セキュリティルールでファイルサイズの制限が可能
  • 注意点としてGCSのアクセス制御と同期はしない

Cloud Firestore

  • 基本的には Realtime Database と同じことができる
  • Realtime Databaseとの違いとしてはクエリ等が強化されている
  • とはいえMySQL等と比較するものではない
  • まだベータ
  • 本番はまだ早いかも?
  • バックエンドがSpannerで作られている
  • セキュリティとindexが分離
  • IAMの設定できる
  • storageと同じ独自設定言語
  • queryの制限も可能
  • getやexistsは呼び出し回数に制限や費用がかかる
  • protobuf-rules-gen

まとめ

  • セキュリティルールは必ず設定すべし
  • 本番化する時に書くのは結構大変なので開発中から書いておくと良い
  • Realtime Database / Firestoreはシミュレータがあるのでそれを使ったり、E2E Testを活用して十分にテストしよう

Firebaseを使ってプッシュ通知基盤を作ったときにハマったところ、よかったところ

登壇者: @ydannoさん

Firebase Notifications

  • 今一番力を入れている動画配信サービスの話

  • Parseがサービス終了してしまったので代替としてPUSH通知をFirebase Notificationsを使った

  • 元々FirebaseのAnalayticsを使っていてSDKを増やしたくなかった

  • topic/FCMの2パターンある

  • topicが推されているが、遅延 送信可否の問題がある

  • 送信APIが気付いたらLegacyになっている

  • AnalyticsのUserPropertyにはFCMトークンを保存できない(長さ)

Firestore

  • 複合indexは自分で作らないといけない
  • FCMの制約として-(ハイフン)は使えないなど問題があった

導入した結果

  • お気に入り登録数が順調に推移
  • 開封率向上
  • 運用コストダウン

今後

  • Webプッシュ
  • レコメンドと連携したPUSH通知
  • スポーツ速報のスコア(これもFirestoreでいいと思う)
  • コメント機能

Growth Product

登壇者: @1amageekさん

  • OSS結構出しているgithub

  • Firebase初心者の方向けの内容

  • 最近話題のツイート

  • 真面目にこれを説明していく

  • インターネット普及率のグラフ

    • AWSは2006
    • GAEは2008
  • 今まではスケールするサービスを支えていた、そこに頭を使っていた

  • 開廃業率

    • 5.2%/3.8%
    • 開業増加/廃業低下傾向
  • これからは新しいサービスを作る時代

  • 新しいサービスってなんぞや

  • サービスはただのコンテンツだと思っている

  • コンテンツのIN/OUT制御

  • 成長するサービスとは?

  • IN/OUTの最適化

  • マーケティング+エンジニアリング=PDCAの高速化

  • スピードは今までも重要だった

  • とはいえ今は本当に早いのでDemo

  • インスタグラム風のアプリを作る 画像を選択してあげて表示する

  • ポストする部分を作る

  • (約4分で完成)

  • githubにサンプル有り

  • 作ったOSSを使っている

  • 爆速

  • 早く作れるということはすぐ壊せる、作って壊してが繰り返しやすくなるので良い

Quickstart-android/mlkitについて

登壇者: @yamacraft さん

  • 顔認証部分の公式サンプル紹介/解説
  • firebase/quickstart-android
  • MLKit部分のみ動かすには?
  • 公式サンプルがやっていることの解説
  • プレビュー画面のBufferをVisionFaceDetectorに流し込み
  • コードの大半はカメラ制御だった(1000行以上)
  • 実際にはMLKit部分は100行くらいしかなかった
  • カメラの制御が実際に大変で、デモが間に合わなかった

Firebase Authenticationで色々使ってみた

登壇資料: アップされ次第更新します。
登壇者: @teyosh さん

  • ユーザー管理が簡単
  • メールアドレスの実装コード
  • 電話番号の実装コード
  • facebook facebookのSDKもいれる
  • ユーザーの紐付けが1行でできる
  • パスワードのアップデートにはログインが必要

Firestoreをもっと手軽に使えるfirestore-simpleを作った

登壇者: @Kesin11さん

github/Firestore-simple

  • Typescript最高すぎて普通のjsが嫌になってきている

  • 言語が変わってもAPIが大体同じ=言語特有の機能に対応していない

  • この問題に対応したライブラリを作った

  • 1インスタンス1コレクション

  • 普通のObjectを返すようにした

    • doc.id と doc.data()
  • 普通のArrayを返すようにした

    • QuerySnapshotが帰ってくるのでforEachが使えなかった
    • mapやfilterも使えず不便
  • その他色々

その他のレポート

おわりに

どうでも良い所ですが、後半に連れてメモの持久力が落ちていくのを感じました…

内容としては実案件でも使っていこうかと思っていた所で一番セキュリティの話がありがたかったです。
その他ナレッジを通して知らなかったことや事例を学べたのでとてもおもしろかったです。

また、Firebase自体は実案件にも投入されていますし、やはりスピード向上の部分のメリットが大きく、今後(Firebaseに限りませんが)こういったサービスを使った開発も増えるだろうなと思いました。

お疲れ様でした!

share