Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ
Search
hecateball
December 03, 2019
Technology
3
4.3k
CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ
小技です。
hecateball
December 03, 2019
Tweet
Share
More Decks by hecateball
See All by hecateball
Vue 3の導入を急ピッチでやってみた
hecateball
3
660
決済システムを設計するときに忘れてはならないたった1つの大切なこと
hecateball
1
15k
Firebase Summit 2019 ~Webのはなし~
hecateball
0
140
Other Decks in Technology
See All in Technology
デザインもAIに任せる!iPhoneで行うiOS開発
zozotech
PRO
0
280
プレビュー版のDevOpsエージェントを現段階で触ってみた
ad_motsu
1
170
「データの価値を、みんなの武器に。」Data Enablementの価値とツラみ
ryoskdara_
1
120
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
710
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
350
LiDARが変えたARの"距離感"
zozotech
PRO
0
260
ブログの作成に音声AIツールを使って音声入力しようとした話
smt7174
1
120
新規事業開発でのAWS活用
amixedcolor
1
180
ファイルシステムの不整合
sat
PRO
2
110
React 19時代のコンポーネント設計ベストプラクティス
uhyo
15
5.3k
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
150
生成AIで始める業務改革 - 製造業編 in 福島 -
daikikanemitsu
2
590
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Producing Creativity
orderedlist
PRO
348
40k
Unsuck your backbone
ammeep
671
58k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
77
The Pragmatic Product Professional
lauravandoore
37
7.2k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
78
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
620
エンジニアに許された特別な時間の終わり
watany
106
230k
How to Talk to Developers About Accessibility
jct
2
140
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Technical Leadership for Architectural Decision Making
baasie
2
260
Transcript
CQRSを学ぶついでに Cloud Functionsと Firestoreを連動させる時の 小技も学ぶ Firebase Meetup #15
自己紹介 Yuuki Fukuda 株式会社ディー・エヌ・エー オープンプラットフォーム事業部 -- Twitter: @hecateball
Disclaimer • このスライドに記載されている内容は発表者個人の知見に基づくものであり、所属 する組織の公式の見解ではありません • また、情報の正確性を保証するものではありません。このスライドの内容を利用し たいかなる結果に関しても責任を負いかねます • 資料は後ほど公開するので、記憶・記録する必要はありません
今日話す内容 • CQRSって何? • FirebaseでCQRSするモチベーション • Functionsを使ったCQRSの実装 • FirestoreとFunctionsを併用する際のポイント
Command Query Responsibility Segregation (コマンドクエリ責務分離)
一般的なデータ読み書き
Read/Writeの関心事 Read Write • データ検索の効率化・高速化 • 結合・集計処理 • データの整合性の維持 •
アトミックオペレーション • 排他制御
CQRS(コマンドクエリ責務分離)とは
なぜFirebaseでCQRS? • Read用/Write用でモデルを分離できることの恩恵が非常に大 きい • Writeモデルを書き込み操作ログとして利用できる
Functions+Firestoreで実装する際のポイント
None
{ “user”: …, “createdAt”: ... } (ツイート) favorite_countを 1増やす
イベント:ビジネスロジック = 1 : n
よい イマイチ
Functionsのディレクトリ構成と Firestoreのコレクション構成を 一致させる小技
その他の小技 • Callable Functionsは使わない • updateトリガーを注意深く避ける • 「似て非なるイベント」はコレクションを分ける
ご清聴ありがとうございました • 主役はバックグラウンド関数 • リアクティブシステムを搭載したフロントエンド技術と相性が良 い • CQRSを適用すべきでないケースももちろんある ◦ ユーザ体験をよく考えて!