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.2k
CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ
小技です。
hecateball
December 03, 2019
Tweet
Share
More Decks by hecateball
See All by hecateball
Vue 3の導入を急ピッチでやってみた
hecateball
3
630
決済システムを設計するときに忘れてはならないたった1つの大切なこと
hecateball
1
15k
Firebase Summit 2019 ~Webのはなし~
hecateball
0
120
Other Decks in Technology
See All in Technology
Model Mondays S2E02: Model Context Protocol
nitya
0
150
CI/CDとタスク共有で加速するVibe Coding
tnbe21
0
220
Amazon Q Developer for GitHubとAmplify Hosting でサクッとデジタル名刺を作ってみた
kmiya84377
0
3.5k
In Praise of "Normal" Engineers (LDX3)
charity
2
1.1k
米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
1
430
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
4
620
ObsidianをMCP連携させてみる
ttnyt8701
2
130
OTFSG勉強会 / Introduction to the History of Delta Lake + Iceberg
databricksjapan
0
110
Agentic DevOps時代の生存戦略
kkamegawa
0
680
QAはソフトウェアエンジニアリングを学んで実践するのが大事なの
ymty
1
490
vLLM meetup Tokyo
jpishikawa
1
250
「どこにある?」の解決。生成AI(RAG)で効率化するガバメントクラウド運用
toru_kubota
2
460
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
337
57k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Become a Pro
speakerdeck
PRO
28
5.4k
It's Worth the Effort
3n
184
28k
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を適用すべきでないケースももちろんある ◦ ユーザ体験をよく考えて!