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
3.8k
CQRSを学ぶついでにCloud FunctionsとFirestoreを連動させる時の小技も学ぶ
小技です。
hecateball
December 03, 2019
Tweet
Share
More Decks by hecateball
See All by hecateball
Vue 3の導入を急ピッチでやってみた
hecateball
3
560
決済システムを設計するときに忘れてはならないたった1つの大切なこと
hecateball
1
15k
Firebase Summit 2019 ~Webのはなし~
hecateball
0
110
Other Decks in Technology
See All in Technology
今さら聞けないDocker入門 〜 Dockerfileのベストプラクティス編
devops_vtj
22
6.6k
Cypress or Playwright?
rainerhahnekamp
0
180
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.4k
uvを使ってストレスフリーな Python開発をしよう!
r74tech
0
260
Babylon.jsと色々なものを組み合わせる:ブラウザのAPIやガジェットや2D描画ライブラリなど / Babylon.js 勉強会 vol.3
you
PRO
0
190
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
380
生成AIの変革の時代に、直近1年で直面した課題とその解決策
ktc_wada
1
790
.NET Profiler in 2024.
kkamegawa
2
2.6k
サービス開発におけるVue3とTypeScriptの親和性について
tsukuha
0
130
Handling focus in 2024
tahia910
0
620
個人のAWSアカウントをマルチ運用してみた
miura55
2
260
自らを知り外と繋がる、日経のエンジニア採用とDevRel活動/devreljp92
nishiuma
2
190
Featured
See All Featured
A Tale of Four Properties
chriscoyier
153
22k
Raft: Consensus for Rubyists
vanstee
133
6.3k
BBQ
matthewcrist
80
8.8k
[RailsConf 2023] Rails as a piece of cake
palkan
28
4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
22
1.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
9
1.3k
Designing with Data
zakiwarfel
96
4.8k
The Invisible Customer
myddelton
114
12k
Become a Pro
speakerdeck
PRO
13
4.6k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Building Your Own Lightsaber
phodgson
100
5.7k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
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を適用すべきでないケースももちろんある ◦ ユーザ体験をよく考えて!