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
4.4k
3
Share
CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ
小技です。
hecateball
December 03, 2019
More Decks by hecateball
See All by hecateball
Vue 3の導入を急ピッチでやってみた
hecateball
3
670
決済システムを設計するときに忘れてはならないたった1つの大切なこと
hecateball
1
15k
Firebase Summit 2019 ~Webのはなし~
hecateball
0
140
Other Decks in Technology
See All in Technology
脳が溶けた話 / Melted Brain
keisuke69
1
1.2k
Data Enabling Team立ち上げました
sansantech
PRO
0
180
Babylon.js Japan Activities (2026/4)
limes2018
0
140
OpenClawでPM業務を自動化
knishioka
2
370
ブラックボックス化したMLシステムのVertex AI移行 / mlops_community_62
visional_engineering_and_design
1
260
JSTQB Expert Levelシラバス「テストマネジメント」日本語版のご紹介
ymty
0
110
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
130
【AWS】CloudTrail LakeとCloudWatch Logs Insightsの使い分け方針
tsurunosd
0
130
OCI技術資料 : ロード・バランサ 概要 - FLB・NLB共通
ocise
4
27k
VSCode中心だった自分がターミナル沼に入門した話
sanogemaru
0
890
出版記念イベントin大阪「書籍紹介&私がよく使うMCPサーバー3選と社内で安全に活用する方法」
kintotechdev
0
130
I ran an automated simulation of fake news spread using OpenClaw.
zzzzico
0
120
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
560
Claude Code のすすめ
schroneko
67
220k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
940
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
320
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
110
Git: the NoSQL Database
bkeepers
PRO
432
67k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
160
How to make the Groovebox
asonas
2
2.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
30 Presentation Tips
portentint
PRO
1
270
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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を適用すべきでないケースももちろんある ◦ ユーザ体験をよく考えて!