Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Firebase Cloud Messagingで 通知の配信遅延とたたかってみた

pco2699
October 19, 2018

Firebase Cloud Messagingで 通知の配信遅延とたたかってみた

firebase meetup #7 @ mercari
2018/10/19

pco2699

October 19, 2018
Tweet

More Decks by pco2699

Other Decks in Programming

Transcript

  1. Firebase Cloud Messagingで
    通知の配信遅延とたたかってみた
    pco2699
    firebase meetup #7 @ mercari
    2018/10/19

    View Slide

  2. 自己紹介
    高山和幸(たかやま かずゆき)
    @pco2699
    ● ウェルスナビでサーバサイドエンジニア
    ● サブプロジェクトでcall.jpを運営/開発
    ● call.jpでfirebaseにお世話になってます

    View Slide

  3. 会社紹介
    ● ウェルスナビ

    View Slide

  4. 今回お話するのはこちらの方です

    View Slide

  5. 今回お話すること
    ● call.jpのサービス概要
    ● call.jpでfirebaseはどのように使われているか
    ● Firebase Cloud Messagingの配信遅延の課題・たたかい
    今回お話しないこと
    ● Firebase Analyticsなど

    View Slide

  6. What is call.jp
    ● スマホで人を呼び出せるサービスです

    View Slide

  7. 利用シーン1: カフェ

    View Slide

  8. 利用シーン1: カフェ

    View Slide

  9. 利用シーン1: カフェ

    View Slide

  10. 利用シーン1: カフェ
    call

    View Slide

  11. 利用シーン1: カフェ
    call
    高田馬場 10℃ Cafeにて 試験運用中

    View Slide

  12. 利用シーン2: プログラミングスクール/勉強会

    View Slide

  13. 利用シーン2: プログラミングスクール/勉強会

    View Slide

  14. 利用シーン2: プログラミングスクール/勉強会
    call

    View Slide

  15. 利用シーン2: プログラミングスクール/勉強会
    call
    プログラミングスクール ジーズアカデミーにて試験運用中

    View Slide

  16. call.jpはfirebaseで主要な機能を作成しています

    View Slide

  17. call.jpはfirebaseで主要な機能を作成しています
    呼出履歴の管理

    View Slide

  18. call.jpはfirebaseで主要な機能を作成しています
    呼出通知送出

    View Slide

  19. 運用中にこんな声が
    呼び出してから
    アプリに通知にいくまで
    めっちゃ遅いときがある!
    30秒くらい!
    開発の相方
    (チューターもやってる)

    View Slide

  20. せっかくなのでFirebase Cloud Messagingの
    配信遅延をいろんなパラメータで計測してみた

    View Slide

  21. 計測前提
    ● Cloud Functionsからテスト用のエンドポイントを叩いて
    配信がされるまでの時間を測定
    ● iOS 1台
    ● WiFi
    ● Background
    ※Apple Push Notification Server
    APNs(※)
    時間を計測(5回計測)

    View Slide

  22. FCMのメッセージ配信方法について
    配信方法 内容
    端末トークン 端末に紐づくトークンを指定して配信する方式
    端末グループ 端末のグループをAPIにて作成して配信する方式
    最大20台まで端末グループに登録できる
    topic topicと呼ばれるグループを各端末が Subscribeし
    Subscribeした端末すべてに配信を行う

    View Slide

  23. 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
    ● 配信方法による遅延の有意差はほぼなし

    View Slide

  24. メッセージタイプ 内容 メッセージ例
    通知メッセージ 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のメッセージタイプについて

    View Slide

  25. 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
    ● データメッセージの方が少々早い?

    View Slide

  26. Cloud Functionsのリージョン
    ● Cloud Functionsのリージョンはデフォルトだとus-central
    ● 実は東京リージョンが使える
    exports.testPushNotification =
    functions.https.onRequest((req, res) => {
    exports.testPushNotification =
    functions.region(”asia-northeast1”)
    .https.onRequest((req, res) => {

    View Slide

  27. リージョンでの比較
    リージョン 最遅値 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
    ● リージョン間でもほぼ遅延は変わらず。むしろ東京遅い。

    View Slide

  28. その他の観測事項
    ● しばらく間を空けてテストを行うと
    7秒, 8秒程度の遅延がある
    -> Cloud Functionsの立ち上げに時間がかかってる?

    View Slide

  29. 結論
    ● 1対1などの少ない端末の状況下では
    FCMの配信方法・メッセージタイプ・firebaseのリージョンは
    配信遅延にほぼ影響しない
    所感
    ● FCMのパラメータよりも
    端末の状態、ネットワークの状態が大きい?
    ● むしろ日本 -> アメリカ -> 日本で1秒で
    通知が来るのですごいと思うことにした

    View Slide

  30. 今後 試そうと思っているパラメータ
    ● 端末の違い
    ○ flutter vs Native
    ○ iOS vs Android
    ● Firebase Realtime Database周り
    ○ リージョン
    ○ Cloud Firestore
    ● その他パラメータ
    ○ APNsのtime-to-live パラメータ
    ○ Android独自のヘッダパラメータ

    View Slide

  31. 提携先・試験導入先を絶賛募集中です!
    FCM・通知に詳しい方もアドバイスいただけると幸せです。

    View Slide