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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
pco2699
October 19, 2018
Programming
12k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Firebase Cloud Messagingで 通知の配信遅延とたたかってみた
firebase meetup #7 @ mercari
2018/10/19
pco2699
October 19, 2018
More Decks by pco2699
See All by pco2699
enebular x Hugging Faceで 自然言語処理の全能の神になる
pco2699
0
420
enebular x AutoML Visionで 爆速で画像判定アプリをつくる
pco2699
0
470
enebularで 爆速で機械学習APIをつくる
pco2699
0
230
tsconfig.jsonを完全に理解する
pco2699
1
2.2k
JavaScriptアルゴリズム本を 技術書典7で頒布しました
pco2699
1
1.1k
MIDI × MQTT × Twitterで ハッシュタグ自動作曲シンセを作ろう
pco2699
1
1.4k
enebular × MIDI × MQTT ハンズオンの反省をする
pco2699
1
730
MIDIキーボードとenebularをつなげてみよう
pco2699
0
680
Other Decks in Programming
See All in Programming
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.1k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
34
15k
FreeBSDでZabbixを動かす
kenkino
0
360
速習iPhone Duo対応
yuukiw00w
2
960
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
190
Java 27新機能 / Java 27 new features
kishida
2
200
最近”作らせてる” ローカルAIアプリの話
akit37
0
110
AIに “答え“を書かせるのを やめてみた
___akari11
0
110
AWSに止められる覚悟してますか?
morizo_1984
2
510
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
190
Kubernetes祭り #2 OP/ED
bells17
0
100
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.9k
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
GitHub's CSS Performance
jonrohan
1033
470k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
4k
How to make the Groovebox
asonas
2
2.5k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
320
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
570
Google's AI Overviews - The New Search
badams
0
1.6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Producing Creativity
orderedlist
PRO
348
41k
Transcript
Firebase Cloud Messagingで 通知の配信遅延とたたかってみた pco2699 firebase meetup #7 @ mercari
2018/10/19
自己紹介 高山和幸(たかやま かずゆき) @pco2699 • ウェルスナビでサーバサイドエンジニア • サブプロジェクトでcall.jpを運営/開発 • call.jpでfirebaseにお世話になってます
会社紹介 • ウェルスナビ
今回お話するのはこちらの方です
今回お話すること • call.jpのサービス概要 • call.jpでfirebaseはどのように使われているか • Firebase Cloud Messagingの配信遅延の課題・たたかい 今回お話しないこと
• Firebase Analyticsなど
What is call.jp • スマホで人を呼び出せるサービスです
利用シーン1: カフェ
利用シーン1: カフェ
利用シーン1: カフェ
利用シーン1: カフェ call
利用シーン1: カフェ call 高田馬場 10℃ Cafeにて 試験運用中
利用シーン2: プログラミングスクール/勉強会
利用シーン2: プログラミングスクール/勉強会
利用シーン2: プログラミングスクール/勉強会 call
利用シーン2: プログラミングスクール/勉強会 call プログラミングスクール ジーズアカデミーにて試験運用中
call.jpはfirebaseで主要な機能を作成しています
call.jpはfirebaseで主要な機能を作成しています 呼出履歴の管理
call.jpはfirebaseで主要な機能を作成しています 呼出通知送出
運用中にこんな声が 呼び出してから アプリに通知にいくまで めっちゃ遅いときがある! 30秒くらい! 開発の相方 (チューターもやってる)
せっかくなのでFirebase Cloud Messagingの 配信遅延をいろんなパラメータで計測してみた
計測前提 • Cloud Functionsからテスト用のエンドポイントを叩いて 配信がされるまでの時間を測定 • iOS 1台 • WiFi
• Background ※Apple Push Notification Server APNs(※) 時間を計測(5回計測)
FCMのメッセージ配信方法について 配信方法 内容 端末トークン 端末に紐づくトークンを指定して配信する方式 端末グループ 端末のグループをAPIにて作成して配信する方式 最大20台まで端末グループに登録できる topic topicと呼ばれるグループを各端末が
Subscribeし Subscribeした端末すべてに配信を行う
FCMのメッセージ配信方法について 配信方法 最遅値 1回目 2回目 3回目 4回目 5回目 端末トークン 1.56
1.56 1.38 1.30 1.24 1.42 端末グループ topic 1.60 1.50 1.43 1.53 1.56 1.60 • 配信方法による遅延の有意差はほぼなし
メッセージタイプ 内容 メッセージ例 通知メッセージ Android/iPhone関係なく FCMによって通知が表示される { "message":{ "token":"bk3RNwTe3H0:CI2k...", "notification":{
"title":"Portugal vs. Denmark", "body":"great match!" } } } データメッセージ アプリでデータ処理して表示する OS固有のメッセージも送出できる 前述のtopicによる配信では 利用できない -> 今回はiOS独自ヘッダで検証 { "message":{ "apns": { "payload": { "aps": { "alert": { "title": "Portugal vs. Denmark", }, // 一部省略 } FCMのメッセージタイプについて
FCMのメッセージ配信方法について メッセージタイプ 最遅値 1回目 2回目 3回目 4回目 5回目 通知メッセージ 1.56
1.56 1.38 1.30 1.24 1.42 データメッセージ 1.33 1.22 1.33 1.18 1.14 1.06 • データメッセージの方が少々早い?
Cloud Functionsのリージョン • Cloud Functionsのリージョンはデフォルトだとus-central • 実は東京リージョンが使える exports.testPushNotification = functions.https.onRequest((req,
res) => { exports.testPushNotification = functions.region(”asia-northeast1”) .https.onRequest((req, res) => {
リージョンでの比較 リージョン 最遅値 1回目 2回目 3回目 4回目 5回目 us 2.06
2.02 2.06 1.25 1.73 1.92 asia 2.28 2.28 2.00 1.32 1.96 1.29 • リージョン間でもほぼ遅延は変わらず。むしろ東京遅い。
その他の観測事項 • しばらく間を空けてテストを行うと 7秒, 8秒程度の遅延がある -> Cloud Functionsの立ち上げに時間がかかってる?
結論 • 1対1などの少ない端末の状況下では FCMの配信方法・メッセージタイプ・firebaseのリージョンは 配信遅延にほぼ影響しない 所感 • FCMのパラメータよりも 端末の状態、ネットワークの状態が大きい? •
むしろ日本 -> アメリカ -> 日本で1秒で 通知が来るのですごいと思うことにした
今後 試そうと思っているパラメータ • 端末の違い ◦ flutter vs Native ◦ iOS
vs Android • Firebase Realtime Database周り ◦ リージョン ◦ Cloud Firestore • その他パラメータ ◦ APNsのtime-to-live パラメータ ◦ Android独自のヘッダパラメータ
提携先・試験導入先を絶賛募集中です! FCM・通知に詳しい方もアドバイスいただけると幸せです。