Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cloud Firestore を使って、Polling をやめたい話

384 views

Published on

Cloud Firestore を使って、Polling をやめたい話

2019/10/29
Firebase Meetup in Osaka #6
https://fjug-osaka.connpass.com/event/143545/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Cloud Firestore を使って、Polling をやめたい話

  1. 1. Cloud Firestore を使って、 Polling をやめた話 2019/10/29 Firebase Meetup in Osaka #6 Kenichi Tatsuhama
  2. 2. Cloud Firestore を使って、 Polling をやめた話 2019/10/29 Firebase Meetup in Osaka #6 Kenichi Tatsuhama
  3. 3. About me 辰濱健一(Kenichi Tatsuhama) • @tatsuhama50 • Sansan, Inc. Android developer • GDG Shikoku Organizer • 徳島県神山町在住
  4. 4. Sansan神山ラボ
  5. 5. Firebase Summit 2019 に参加しました
  6. 6. その前にバルセロナ観光
  7. 7. Lost baggage… • Madrid -> Barcelona
  8. 8. 日本人参加者とナイトモード対決
  9. 9. 本題へ
  10. 10. Cloud Firestore を使って、 Polling をやめた話
  11. 11. Cloud Firestore を使って、 Polling をやめた話
  12. 12. なかなかの浪費っぷり…
  13. 13. 背景 • 複数端末や Web でも利用可能なサービス • クライアントで極力最新の状態を取得したい • 新着バッヂ • ユーザの状態(課金の有無等) • 上記状態取得の API 通信を何度も呼んでいる • 起動時、メイン画面再表示時、… • 状態が変わったときにだけ、通信をしたい 新着バッヂ (赤丸)
  14. 14. 背景 • 複数端末や Web でも利用可能なサービス • クライアントで極力最新の状態を取得したい • 新着バッヂ • ユーザの状態(課金の有無等) • 上記状態取得の API 通信を何度も呼んでいる • 起動時、メイン画面再表示時、… • 状態が変わったときにだけ、通信をしたい 新着バッヂ (赤丸)
  15. 15. やりたいのは、こういうこと 都度問い合わせ 変更があったら通知 Before After
  16. 16. リアルタイム通信の種類をざっと紹介 • Polling • Long Polling • Server Sent Events • WebSocket
  17. 17. Polling • PULL 型通信 • クライアントが定期的にリクエストを発行 • サーバはすぐにレスポンスを返す • データの更新がなくてもアクセスが発生する • 短い間隔で Polling が行われると、サーバ負荷が高まる • この方法で最新状態の取得を行っていた!
  18. 18. Long Polling • PULL 型通信 • クライアントからのリクエストを、サーバ側がデータの更新が あるまでレスポンスを遅延させる • Polling よりリアルタイム性は増す • 繋ぎっぱなしになるので、メモリ消費量が多い
  19. 19. Server Sent Event • PUSH 型通信 • HTTP の上で動作する • リアルタイム性が高い • クライアント側からはデータを送れない • Push Notification はこれに該当
  20. 20. WebSocket • 双方向通信 • 軽量 • HTTP とは別の規格 • サーバ、クライアントともに WebSocket に対応している必要 がある
  21. 21. Server Sent Event や WebSocket を導入しなくても、 リアルタイムの更新が実現できる!
  22. 22. システム構成 • Polling で取得していた API の値を Cloud Firestore へ切り出す Polling 低頻度な通信
  23. 23. システム構成 • Polling で取得していた API の値を Cloud Firestore へ切り出す データに更新があったら反映 監視登録& リアルタイム反映 Cloud Firestore 低頻度な通信
  24. 24. 補足:その他の方法 • Firebase Cloud Messaging • GraphQL Subscription の実装(AWS AppSync 等)
  25. 25. まとめ • Polling は負荷が高いデータ取得方法 • サーバからの変更通知を受ける方法で、通信負荷の削減を! • それ、Cloud Firestore でできますよ。
  26. 26. 告知

×