https://gyazo.com/f54ca59ae46d04c5c74e3f744ee40640
コミュニティの紹介
勉強会の開催
What's new in Cloud Firestore and MLKit
ポッドキャストやってる
東京リージョン誕生
Uptime SLA Table
SLA ≒ Uptime = (t - Downtime ) / t
SLAは稼働時間
Multi-region
いろんなデータをコピーする
データセンターが破壊されても他にもあるよ!
ニーズに合わせて変更する
料金
まだComming Soon
3/3くらいに確定?
Stack Driver
Vision API
画像からどのランドマークかを検索できる
画像に入っている以下のを検知
文字
顔
顔の輪郭点がとれる
バーコード
観光名所
なにが写ってるかをラベリング
オンデバイスの学習モデル
無料
テキスト認識はLatin文字のみ
API通信が挟まるモデル
$1.50 /K(Blazeのみ)
より詳細な画像ラベリングができる
ランドマーク検出
Custom Model
自然言語処理できるように
iOS
FirebaseMLNatualLanguage
FirebaseMLNLLanguageID
セキュリティエンジニア
FJUGのオーガナイザー
GCPUG TokyoのStaff
helps mobile app teams success
モバイルアプリ作成のプラットフォーム
クライアントアプリだけでの開発が可能
サーバーのメンテが不要
対応プラットフォーム
Web
サーバーも動かしたいとき
Admin SDK
対応言語
クライアントコードやSDKがOSSで提供されている
プロダクト
18個(2019/02現在)
はじめるならここから
Analytics
モバイル向けのアナリティクスサービス
イベントをベースに分析ができる
予め用意されているイベント以外にも独自にイベント定義
特定のグループに通知できる
What's New
Audience Exlusions
Membership Duration
Google アナリティクス SDK終了
2019/10にモバイル版のSDKが終了
移行先はFirebase
有料版は影響なし
Cloud Functions
イベント駆動で独自の関数実行
PubSubやHTTPやFirebaseサービスのほとんどのイベントを取れる
GCPからgcloud functions event-types listでイベントを確認できる
What's New
Firebase Management API
実践的なサンプルがいっぱいあってオススメ
Authentication
パスワード認証からプロバイダ認証にSMS認証をサポート
対応していない認証もカスタム認証で対応できる
What's New
Hosting
静的ファイルの配信するホスティングサービス
独自証明書は対応していない
Cloud Functionsとの接続で動的コンテンツ配信もできる
What's New
複数サイトを1つのプロジェクトで管理できる
Cloud Messaging
Push通知を送れるサービス
モバイルだけじゃなくWebも対応
トピック昨日
subscribeしているユーザーだけに配信
What's New
スケジューリングをpush通知が設定できるようになった
2019/4にGCMが終了するので古いものはFCMに移行が必要 Cloud FireStore
リアルタイムにデータを同期
クエリの全ては強い整合性
クライアントから直接書き込める
オフラインでも書き込みができる
書き込み、読み込みの制限はセキュリティルールで担保
基本概念
Collection(モデル)
Document(ユーザー)
Data(フィールド)
What's New
GA SLA 99.999%
東京リージョンが安い
Stackdriverでメトリックを見えるようになった
ローカルエミュレータ
セキュリティルール
データの保護はセキュリティルールでおこなう
テストモードとか使わず最初から書きながらつくるべき
テストのままだと変なデータ混入やtoken取られるかもしれないため
read
get
list
write
create
update
delete
検証順
Authorization → Scheme Validation → Business Logic
Realtime DBとの使い分け
殆どの場合はFirestoreでOK
少ないデータを頻繁にアプデするならRealtime DBのが安いこともある
前まではRealtime DBはGAで安定しているとあったがFirestoreもGAになって優位性もなくなった
Firestoreにできないこと
ユーザがオフラインになったことを検知したい場合
より深く利用するためには
公式ドキュメントを一通り見ておく
わからないことはサポートに問い合わせしてみる
より具体的な場合は有料のサポートもある
FJUGコミュニティに入ってキャッチアップしてみる
Firebaseでつくるグループチェックリスト管理サービス
checka!
イベントに応じて処理を実行
rulesで表現しきれない部分を補う使い方
rulesで権限を管理する
データ構造の工夫が必要
Authentication
Analytics
Crashlytics
Firebase Cloud Messaging
データ構造
https://gyazo.com/113d83f2e5a4a5bd437620859688c268
Group
Board
Task
Comment
User
グループに所属しているユーザ
User(全ユーザ)
Group
どこに所属しているかのグループ一覧
設計するときに考えた大事なこと
create権限は重要な箇所には与えない
Board, Task, Commentであればグループメンバーは作れる
どのようなグループに参加しているか?を判定する
グループに参加しているかどうかで権限を管理したい
exists(path)
指定したパスにデータが存在しているか
exists(/../gruops/$(groupID)/users/$(requestUserID))
リクエストユーザがグループに属しているか
グループ参加用のCFsで作成
アプリからCallableで呼び出し
Gruopも同時作成
工夫したこと
グループの名前を変えたい
User - Role
adminとか
Update権限は渡したくない
Nameはここで読みたい
Group
UserNameを更新させる
CFsで動作
名前を反映
SnapshotListenerの活用
データ更新通知が来るのでリアルタイムにUIを更新できる
Userデータはアプリ内で別途キャッシュ機構を作っている
無限スクロールの解説
使用ライブラリ
queryをつくる
ほしいデータ形式がとれる
順不指定
new itemは一番上に来る
UpdateAtで降順
更新されたのも一番上にくる
フロントで {id: data}形式で流れたデータをもってgetterでそれらを降順に並び替え
営業→エンジニア→人事
2人目のエンジニア
年始で副業6人増えた
注意
FirestoreをメインDBとして使っている話
第5位
お金どれぐらいかかってるのよ?
1万円くらい
第4位
うちに合うか?
第3位
アーキテクチャを晒してほしい
https://gyazo.com/f91d0c4407d48b8cf2f7497a6a767ab2
https://gyazo.com/83dc61008471e6382c460df28a81634c
2箇所にデータをおくとスキーマを変えるのが大変
ジョインすると1万件くらいになるとパフォーマンスがつらくなる
CQRS (読み込みと書き込み用のテーブルを用意)の考えを導入 書き込みは正規化
チャット画面(スタッフ側)
フロント側
めちゃくちゃシンプルにしたかった
第2位
バグ
UTF-8とUTF-16の実装がミスると管理画面が開けないバグに遭遇
第1位
メインDBとして本番運用するとどうなるかわからない
とりあえずオススメだからやっとけ