とりあえずやってみればいいじゃん

とりあえずやってみればいいじゃん

エンジニア関連のことについてつらつら書くブログ

Firebase Meetup #6 参加レポート #fjug

Firebase Meetupの6回目に参加してきたのでレポートします(遅くなってすいません)。トークどちらもスライドが上がっているので、要点やスライドには書かれていなかった部分の補足を書いていきます。

firebase-community.connpass.com

f:id:akatsuki174:20180923104001j:plain:w300

Firestoreについて @コキチーズさん

docs.google.com

内容

  • Cloud Firestoreの概要
    • リアルタイムでのデータ取得
    • アクセスが増えても予算の限りスケールさせられる
    • 同時接続数は100万、まだβ版なので落としちゃいけないサービスに使うのはまだ早い
  • SDK
    • アプリ用、サーバ用の両方がある
    • 直接SDKから書き込むときもセキュリティがしっかりしている
  • ロケーション
    • 最近us-east1, europe-west3がマルチリージョンに追加された
    • readレプリカが各地にあって、readするときはここに読みに行く
    • 書き込むときはus-central
  • Firestoreという選択
    • GCPでやるのであれば1つ目の選択肢としてFirestoreがあってもいいのでは、という印象
    • サーバサイドのロジックが欲しい場合はCloud functionを使えばよい
    • 使わなかった場合、MySQLやインフラのお世話を自分でどうにかしなければいけない
  • データ構造
    • ドキュメント指向
    • 時間とともに増えるものを管理するのにはサブコレクションが有効
    • 親を消しても紐付いているサブコレクションは生きているので注意
  • Array
    • 今まではArrayで表現したかったものも、複数クライアントで使うにはMapを使う必要があった
    • 今はarray-containsを使うことによって解消できる
    • もっと知りたかったらThe Firebase Blog: Better Arrays in Cloud Firestore!を読むと良い
  • セキュリティルール
    • クライアントからの読み書きを制御するルール
    • 試したいときはシミュレータを使ってみると良い
    • たまに挙動がおかしい時があるのでE2Eテストも合わせて確認した方が良い
  • データのインポート/エクスポート
    • gcloudコマンドを使ってBackupとRestoreができるようになった

Q&A

  • リージョンにJapanができるとか…?
    • North-asiaも予定されていたはず。が、まだなんとも言えない。パフォーマンス上、東京じゃないと困るとかはそんなにないはず。
  • バックアップとリストアを利用した?
    • まだ大きなデータで試してない。定期実行とかもRestAPIを叩くかんじになるのでは?
  • セキュリティルールのテストを丁寧に書いていくと大変な気がするが、サポートするライブラリとか出たりする…?
    • 人類には早いかも。protobufで型を定義してセキュリティルールに書き出すツールはある。パーミッションに関しては良いツールはない。自分でちゃんと書くことになる。大変そうだったらfunctionとか使ってサーバ側からどうにかするとか。

機材管理ツールをFirebaseで構築しようとした話 @みゆっきさん

内容

  • 機材管理の課題
    • 誰のものか/中身が何か/いつ使ったか/誰が持っているのか がわからなくなる
  • Firebaseを選択した理由
    • お金かけたくなかった💰
    • 手軽さがほしかった
    • Cloud Firestoreを使ってみたかった
  • 機材にQRコードを付けて、読み取るとwebページを表示する形式に
    • 中身、使用履歴、場所等がわかる
  • Androidアプリとwebサイトを作成
    • Android:管理者用
    • web:利用者用
  • データ構造
    • 最初からかっちり決めていたわけではない
    • 複数グループで利用できるような構造にした。ショートカットは全グループで共通にした。
  • マスターデータをスマホやブラウザで全て入力するのは苦痛。
  • 躓いたところ
    • Firestoreのrule simulatorがreferenceをうまく扱えないかも。実際はちゃんと動くけどシミュレータだけ動かない。
    • FirestoreGoogleAppsScriptで特定のキーのみ更新することができない。オブジェクトを1回取得してから更新する必要がある。
    • タグによる検索をしたかったが、Cloud Firestoreでは配列の中身に対してクエリを実行することができない。ベストプラクティス的には、Mapにする。
  • まとめ
    • Firebaseを使うと素早く作れる。便利。楽。
    • スプレッドシートからデータ入れられるのも便利。
    • Referenceはノリで使うと痛い目を見る。

Q&A

  • 直接JavaScriptSDKを使わなかった理由
    • ぱっと出てこないが、確か1回でまとめられるリクエストは1つでまとめたいという要望や、APIとしてはSDKを使っても取れない情報を取りたかった。
  • 一気にインポートするときにreferenceをどうやって解決するのか
    • 最終的な関数に渡すときはstringで特定文字列から入力すると解決してくれる。

その他

次回

firebase-community.connpass.com