Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Firebase Cloud Messaging のベストプラクティス を、探している
Search
gyarasu
February 01, 2020
Technology
5.9k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Firebase Cloud Messaging のベストプラクティス を、探している
2020.02.01 PWA Night Conference
https://conf2020.pwanight.jp
gyarasu
February 01, 2020
More Decks by gyarasu
See All by gyarasu
QAエンジニア組織立ち上げはじめの一歩
gyarasu
0
130
RESTful Firebase with Vue.js
gyarasu
1
500
Next.jsではじめるPWA
gyarasu
2
1.8k
doda AIジョブサーチ PWAとパフォーマンスの話
gyarasu
0
1.9k
副業時代のプロジェクトマネジメント
gyarasu
3
3.2k
PWA基礎_1
gyarasu
0
330
PWA基礎_2
gyarasu
0
220
PWA基礎_3
gyarasu
0
200
フロントエンドエンジニア (実稼働まで) ひとりでできるもん
gyarasu
0
2.8k
Other Decks in Technology
See All in Technology
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
600
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
170
Microsoft のサポート ライフサイクルを理解する
murachiakira
PRO
0
230
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
380
ひとりで始めた AI駆動開発、チームに広げて何が変わったのか
kenichiodo
1
160
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
150
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
430
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
2
200
re:Inventで、人生は変わったのか? / growth-builders-hub-1-reinvent-2026
mhrtech
2
110
Oracle Database Security 詳細解説
oracle4engineer
PRO
1
140
DevelopersIO 2026 Tokyo 現時点の衛星通信サービスの現状を整理してみる
maroon1st
0
350
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
570
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Marketing to machines
jonoalderson
1
5.9k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
370
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
Testing 201, or: Great Expectations
jmmastey
46
8.4k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
460
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
410
My Coaching Mixtape
mlcsv
0
370
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Transcript
Firebase Cloud Messaging のベストプラクティス を、探している 2020/02/01 PWA Night Conference 吉次
洋毅
誰? • 吉次洋毅(ヨシツグヒロキ) • 経歴 ◦ 某レストラン検索サイトでバックエンドエンジニアなど ◦ 某HR会社でエンジニアをしつつ ◦
フリーランスで受託開発&他社さんの開発やプロジェクトマネジメントのお手伝い • 趣味 ◦ 一人旅 & 写真 & スーパー銭湯 ◦ スマブラ(VIPボーダー周辺をウロウロ・ゼロサムユーザ) ◦ ポケモン(約20年ぶりにはじめました) @gyarasu
使ってる??
FCMによるWeb Pushが届くまで ① FCMからトークンを取得 ④ プッシュ送信を受信 ②トークンをサーバに送信 ③ FCMに処理を投げる
FCMによるWeb Pushが届くまで ① FCMからトークンを取得 ④ プッシュ送信を受信 ②トークンをサーバに送信 ③ FCMに処理を投げる 送信方法がいくつかある
複数のデバイスに送信する方法は2つ https://firebase.google.com/docs/cloud-messaging/js/send-multiple
よくみたら色々あった Node.js Admin SDKリファレンス: https://firebase.google.com/docs/reference/admin/node/admin.messaging
FCMでのPush送信方法いろいろ • CURL / send(Admin SDK) ◦ 単一のトークンを指定して送信 • マルチキャスト(Admin
SDK) ◦ 複数のトークンを指定し送信 • トピックメッセージング ◦ 特定のトピックにオプトインした複数のデバイスにメッセージを送信 • デバイスグループメッセージング ◦ 定義したグループに属する複数のデバイスにメッセージを送信
FCMによる送信方法Decision Tree(暫定)
FCMによる送信方法Decision Tree(暫定) やってみたけど、 ちょっと苦労した
トピックメッセージングのハマりポイント • トピック購読管理の難しさ • ユーザ単位での送信状態の管理の難しさ デバイスグループメッセージングのグ ループ管理も同様の課題あり
トピックメッセージングのハマりポイント • トピック購読管理の難しさ • ユーザ単位での送信状態の管理の難しさ デバイスグループメッセージングのグ ループ管理も同様の課題あり
トピック管理の難しさ
トピックの購読状態の管理 ① FCMからトークンを取得 ④ プッシュ送信を受信 ②トークンをサーバに送信 ③ FCMに処理を投げる
トピックの購読・購読解除の流れ topic, tokenの 組み合わせを保存 ・購読(subscribe) ・購読解除(unsubscribe) ・送信リクエスト メッセージ配信(publish) FCM FaaSなど
データベース
FCMとDBの状態の整合性 topic, tokenの 組み合わせを保存 ・購読リクエスト ・購読解除リクエスト ・送信リクエスト ・購読(subscribe) ・購読解除(unsubscribe) ・メッセージ配信(publish)
FCM FaaSなど データベース 何らかの原因で データが消失 FCMから購読状態を取得す ることはできない
DB上のデータとFCM上での実際の 購読状態の整合性が合わなくなる
DB上のデータとFCM上での実際の 購読状態の整合性が合わなくなる ・DB上では購読してないのに Pushが届く ・DBの上では購読状態なの にPushが届かない
DBのデータ更新とFCMの購読・非購読は Atomicな処理にする
ユーザ単位での 送信状態の管理
通知設定の単位と細分化されたトピック 営業 事務 技術 設定 : 購読トピック = 1 :
n
細分化トピックが引き起こす通知の嵐 営業 事務 技術 トピックメッセージングは、あく までも「トピック」に対して通知 を送る
設定とトピックが1 : 1になっていない場合 ユーザにとって過多な通知になり得る
細かいセグメントで 送信先を制御したい場合は マルチキャストでの送信が良さそう
Decision Tree途中経過 ここはわかった!
トピックメッセージングの選択基準 • 受信設定の単位とトピックが1:1になっている場合 • トピックの単位が単純である場合 ◦ 基本的にはコンテンツの単位が良い ◦ 年齢や性別のようなユーザ属性や、行動ログ等の要素を掛け算してトピック分 割すると、条件が変動するたびに頻繁にトピックの購読・解除を行う必要があ
るのであまり向かない
まとめ • まずはサービスとしてのPush通知の要件・仕様をしっかり検 討してからどの方法で送るか考える(最重要) • トピックメッセージングが向いているパターン ◦ 設定と購読トピックが1:1である場合 ◦ 細分化されたトピックで送信しても問題ない場合
• 細かい条件で送信対象を抽出したり、条件が頻繁に更新され る場合はマルチキャストが良さそう ◦ トピックやデバイスグループ管理をしないで済む ◦ 1回の送信で500トークンという制限あり
※スキップしたスライドも含めてSpeaker Deckで公開します @gyarasu ありがとうございました!