もやぶろ

moyashidaisukeのブログだからもやぶろ。フリーランスのエンジニアのダイスケです。QOLあげて色々楽しくチャレンジして良く生きたい。プログラム関連とかギター関連とか旅行関連とか色々。

【書評】「実践Firestore 」でFirestoreを完全に理解する

🤓はじめに

Firebaseのデータベースである(GCPでも使えるけど)Firestoreをがっつりやった経験は無く(かるーく触る機会はある)、これから身につけたいな〜と思っているので、Amazonで評判が良かったこちらを読んでみました。

結論、とても良かったです。Firestorを完全に理解できます。

🐼読んだきっかけ・理由は?

最近個人開発で何か作ろうとしていて、個人開発ならフルマネージドのデータベースのFirestoreが良さそうなので。

Firestoreは少し触ってみたものの、NoSQLなのとクライアントから直で触れるので、考え方がRDBと全然違っていてよくわからんな〜と思っていました。

👆この本の概要

近年、Firebaseは個人でのアプリケーション開発を中心に利用が広がっています。 その中心的な機能のひとつであるFirestoreは、2019年1月にGAを迎えたばかりの新しいNoSQLマネージドデータベースであり、 これまでのデータベースにはない特徴を数多く備えている一方で、まだまだ解説も少なく使いこなすのは難しいとお悩みの方も多いのではないでしょうか。本書には筆者が業務でFirestoreに向き合い続けて獲得した、Firestoreを有効かつ安全に利用するためのエッセンスが詰め込まれています。

Amazonの紹介文より

はい、実践的な内容が多くてとてもわかりやすかったです。

🤓作者さん

Firebaseを完全に理解したWebアプリケーションエンジニア。レガシーコードを片っぱしから爆破したり、技術スタックのモダン化に取り組んだり、マネージド・サービスに最適化したWebアプリケーションアーキテクチャをひらめいたりする仕事をしている。最近のテーマは「大規模アプリケーションの開発・運用にかかるリソースの最小化」。Firebaseをはじめとする新しい技術を積極的に取り入れながら、テクノロジーの変化に伴うフロントエンドとバックエンドの境界の再定義に思いを馳せている。

Amazonの紹介文より

いや、このレベルで完全に理解はちょっと謙遜しすぎかと思いますw

⏳所要時間

3hくらい。

🙆‍♂️どんな悩みを持つ人にオススメ?

  • RDBはわかるけど、Firestoreわからん

RDBが知っている前提なので、完全初心者はちょっと厳しそうです。

🤔読むと得られること

  • Firestoreの思想、全体像
  • RDBとの違い
  • 設計のパターンそれぞれのメリット・デメリット
  • よくありそうなパターンの実際の設計、サンプルコード

📖同じジャンルの本との比較

Firebase関連の本を紹介してみました。

KindleUnlimitedで読めるものもちょいちょいありますね。Amazonすごい。

😺本から学んだこと・ココロに残った言葉

RDBとの違い色々

  • Firestoreはクライアントから直アクセスが基本
    • なので、どこまで参照できるようにするか、という機構としてセキュリティルールの設定がある。これが唯一のバリデーション機構。超大事。
    • スキーマレスなドキュメントデータベースのNoSQLという特性もあるが、セキュリティルールを書きやすいように設計するのも超大事。
      • なので、同じユーザー情報でも公開範囲によってコレクション(テーブルみたいなもの)を分けたりする
    • データ構造によってセキュリティルールが適用できる/できないがあるので、これも注意
    • セキュリティルールが適用できない部分は、サーバサイド(具体的にはfunctions)で処理してあげたりする
  • とにかくセキュリティルール大事
  • サブコレクション/リファレンスで関連を表現
  • where条件には制限がある

所感

  • データ構造は少し慣れればなんとかなりそうで、動かすだけなら割と簡単そう
  • 適度にLimitかけたりしないと課金が爆発してしまうので注意が必要
    • だが、爆発している状態はある意味たくさん使われているという事なので、個人開発ならそこまでシビアに考えなくても良さそう
  • ただし、セキュリティルールはミスるとデータが用意に抜き取られてしまうので怖い。ここはしっかりテストしないと。
    • 世の中のFirebaseで作ったアプリ達は大丈夫なんだろうか、、、😎😎😎😎

まとめ

RDBは経験あるけど、Firebase/Firestoreはわから〜ん、という私にぴったりの本でした。

最後の方のコードサンプルは自分でも書いてみないとわからないので、参考になんか作ってみようと思います。