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
Realtime Config with Firestore@Firebase Meetup #8
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
pochi-sato
December 10, 2018
Programming
640
3
Share
Realtime Config with Firestore@Firebase Meetup #8
pochi-sato
December 10, 2018
More Decks by pochi-sato
See All by pochi-sato
JP_Stripes Deep Dive vol. 6 [Stripe Payment Links]
pochisato
0
97
副業しやすい会社/しにくい会社
pochisato
2
660
LINEでプロダクト検討時に知っててほしい5つの武器
pochisato
0
750
ズボラ旅開発のLINE APIとの歩み
pochisato
0
800
Firebase Authenticationでカスタム認証システムをつかう勘所@Firebase Meetup #13
pochisato
6
2.6k
Firestore導入前に検討したかったベスト5@Firebase Meetup #10
pochisato
9
2.4k
Other Decks in Programming
See All in Programming
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
300
野球解説AI Agentを開発してみた - 2026/02/27 LayerX社内LT会資料
shinyorke
PRO
0
390
感情を設計する
ichimichi
3
460
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
200
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.8k
Feature Toggle は捨てやすく使おう
gennei
0
410
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
330
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
320
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
210
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
230
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
300
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
1.4k
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
94
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
500
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
500
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
700
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
170
Faster Mobile Websites
deanohume
310
31k
Deep Space Network (abreviated)
tonyrice
0
100
Information Architects: The Missing Link in Design Systems
soysaucechin
0
860
Transcript
リアルタイムコンフィグを Firestoreで
自己紹介 • さとう たくと(ぽち) • 営業→エンジニア→人事→いま!! @pitown
自己紹介 • さいきんは、この記事にいました。。
None
None
None
自己紹介 今はHotspringでおしごとしてま す。 2人目のエンジニアとしてやって ます。 3人目ぜひ!! しごとは、「ズボラ旅」というもの をつくっています。
自己紹介 ーズボラ旅ー LINEで旅行の相談ができるサー ビスです。 おすすめの提案をもらって、 そのまま予約まで。 ズボラな人程キモチいいです よかったら使ってね!
自己紹介 そんなことより、みんなスマブラがアツいので、ただふつうにあそ びにきてください ぼくのガノンドロフが火を吹きます ここにがのんどろふの絵を描きたい なぁ
では本題
リアルタイムコンフィグを Firestoreで
まじめそうなタイトルですが、 かなり変態的なtipsになります
リアルタイムコンフィグを Firestoreで • リアルタイムに書き換わるコンフィグ • Firestoreの管理画面からも書き換えられちゃう、型のミスもな い • 1分でバリューがでる!!
こんなシーンありませんか • 定数なんだけれど、時期的要因やタイミングで変わってしまう データを扱う • →定数にしたらビルドしないといけないし、DBに入れるにし たらちょっと重い • 本当は管理画面に入れて、Bizに調整して欲しい •
でも管理画面にする余裕もない • →まずはDBオペで繋ぐか、、、の流れ
こんなシーンありませんか わりと、キャンペーンの文言やパラメータなどで よくあるきがします
これをFirestoreをつかって かんたんに解決します
しかも、1分でバリュー!!
1分でバリューをだしている ようす
1分でバリューをだしている ようす
裏では何をやっていたか
Firestore console(スマホ)
バリュー発揮していたときはこんなかん じでした
バリューはっき中!! _人人人人人人_ > バリュー <  ̄Y^Y^Y^Y^Y ̄ _人人人人人人_ > バリュー <  ̄Y^Y^Y^Y^Y ̄ _人人人人人人_ > バリュー <  ̄Y^Y^Y^Y^Y ̄
寝っ転がっててもバリュー
ではちゃんと説明していきます
背景 • 定数なんだけれど、時期的要因やタイミングで変わってしまう データを扱う • →定数にしたらビルドしないといけないし、DBに入れるにし たらちょっと重い • 本当は管理画面に入れて、Bizに調整して欲しい •
でも管理画面にする余裕もない • →まずはDBオペで繋ぐか、、、の流れ
背景 DBオペもしたくない!でもハードコー ディングしたらもっと辛い! 開発工数もない!! でもリアルタイムで書き換わって欲し い! できるだけ安全に更新したい!
しかたないので考えた
おもいついたもの • 案1: スプレッドシート x Google App Script • 案2:
ファイルにデータおいて数秒ごとにキャッシュ取得 • 案3: DBにデータおいて数秒ごとにキャッシュ取得 • 案4: Firestore + Cloud Function + PubSub • 案5: Firestoreだけ
案1: スプレッドシート x Google App Script カジュアルすぎてこわい。
案1: スプレッドシート x Google App Script まだまだカジュアルすぎるなぁ..
案2: ファイルから取得してキャッシュ わりと賢明。このリクエスト回数要らんけれども
案3: DBから取得してキャッシュ これもわりと賢明。アレっコンソールつかえるかも、、?
案4: Firestore + Cloud Function + PubSub まさに求めるものなんだけど、ちょっと設計がデカイ
None
案5: Firestoreだけ あれ??いける、、?いけるのでは、、、???
使用した環境 • Firestore • GAE x Node.js x Firebase Admin
Node.js SDK • →リアルタイムアップデートを取得
データを入れる 1個それ用のコレクションつくって、1つドキュメントをつくればok
実装する ドキュメントを直指定して、onSnapshot、おわり!
かんたんでしょ??
必要なところに全力投球できるように、 略せるものは略していけたらいいですね!
なお、いちおう注意事項 (変態的なので用法はきをつけよう)
気をつけること1 • このコンフィグで1コレクションに複数のドキュメントをつくった ら、BigQueryに一括エクスポートしたときに『スキーマがありま せん』と怒られました • スキーマ無視してたので正論すぎる • 1コレクション1ドキュメントだけだったら大丈夫そう(ためして ない)
• 一括エクスポートではなく、コレクションごとにエクスポートし たらできるけど、一括エクスポートできるようにしておいた方 がいいよ
気をつけること2 • リアルタイムアップデート、いつまでコネクション張りっぱなしで いけるかな?とやっていたけれども、24時間やってると、しくっ たりします。 • なので、本番で使うのであれば、cronなりなんなり、定期的に つなぎ直しにいくようにしたら良いです ←でunsubscribeした後、またonSnapshotでつなぎ直す
最後に、Remote Configとの違い
注:今日はめちゃくちゃトリッキーな 発表しましたが、 普段は実直にやっています
おわり