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
Firebaseを活用したPUSH通知基盤構築
Search
y-danno
July 02, 2018
Technology
4
5.8k
Firebaseを活用したPUSH通知基盤構築
テレビ東京の見逃し動画配信サービス「ネットもテレ東」事業にて、Firebaseの各種機能を利用してPUSH通知基盤システムを構築した知見を紹介。
y-danno
July 02, 2018
Tweet
Share
More Decks by y-danno
See All by y-danno
AWS re:Invent 2019 視察レポート / aws-reinvent-2019-recap-aws-seminar
danno
0
320
DeepComposer ~ Hello GAN World ~ / DeepComposer, Hello GAN World
danno
1
550
Load to Cloud by Default
danno
0
44
BigQuery を利用した視聴データのリアルタイム ダッシュボード構築〜Google Cloud Next'19 in Tokyo〜 / TV Logs Realtime Dashboard with BigQuery and DataPortal
danno
0
520
(再掲)Media ServicesとAIを利用した字幕付きライブ配信 / Live Streaming with AWS MediaServices and AI
danno
0
110
AWS re:Invent 2018 の視察レポート 海外メディア業界における クラウド最新動向を学ぶ / AWS reInvent 2019 recap trend in media industry
danno
0
34
Video QoEへの取り組み
danno
1
820
Other Decks in Technology
See All in Technology
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
2.1k
レガシーをぶっ壊せ。AEONで始めるDevRelの話 / Qiita Night 2024-2-22
aeonpeople
3
1.3k
MapLibreとAmazon Location Service
dayjournal
1
150
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
1
440
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
270
オーナーシップを持つ領域を明確にする
konifar
13
3.1k
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
240
Azureの基本的な権限管理の勉強会
yhana
0
240
VS CodeでAWSを操作しよう
smt7174
7
1.6k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
180
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.3k
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
2
1k
Featured
See All Featured
Atom: Resistance is Futile
akmur
259
25k
GraphQLとの向き合い方2022年版
quramy
32
12k
Building Adaptive Systems
keathley
31
1.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
78
42k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
Designing for humans not robots
tammielis
248
25k
Product Roadmaps are Hard
iamctodd
44
9.7k
Docker and Python
trallard
34
2.7k
What's new in Ruby 2.0
geeforr
337
31k
Infographics Made Easy
chrislema
238
18k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Optimizing for Happiness
mojombo
370
69k
Transcript
Firebaseを活用したPUSH通知基盤構築のよもやま話 TV Tokyo Communications Yuichiro Danno Firebase Meetup #4 事業視点での実装例
Special thanks
PROFILE -2007年 テレビ東京入社 情報システム局システム部 SE -2012年 技術局制作技術部 カメラマン -2015年 テレビ東京コミュニケーションズ
動画配信サービスの技術・システム担当 ・WEB、アプリ ・CMS ・分析基盤(DHW、DMP) ・PUSH通知基盤 ・ライブ配信 ・R&D 株式会社テレビ東京コミュニケーションズ 動画ビジネス部 テックリード 段野 祐一郎 [興味関心ワード] フロント : TypeScript, vue.js サーバー : Java, PHP(Laravel) DB : MySQL, Redshift, Treasure Data, BigQuery クラウド : AWS, GCP その他 : Firebase, Docker, redash, Talend, Tableau, 機械学習
放送と配信を融合させた展開 テレビ番組の同時配信、ライブ配信など様々なトライアルを他局に先行して実施。 Brightcove社のビデオアワードを 過去に2度受賞(2015年、2017年) 本編と広告をシームレスにつなぐSSAI技術を先行 導入した事例、地上波視聴率も13.0%を記録。 3 青春高校3年C組 マルチプラットフォームライブ展開 テレビ東京コミュニケーションズの事業
広告付き動画配信サービス ・テレビ東京のテレビ番組を放送終了後に インターネットで無料で視聴できる見逃し配信サービス ・若年層を中心としたテレビ離れや テレビ番組の違法アップロード視聴への対策 ・2015年4月にサービス開始 PCブラウザとスマホアプリを提供 ・民放5社で協働し、2015年10月にはTVerも立ち上げた
・ 背景 ・ 要件 ・ 制約 ・ 結果 ・ 今後 アジェンダ Firebaseを活用したPUSH通知基盤構築のよもやま話
・ 「ネットもテレ東」アプリのリニューアル検討開始 ・ PUSH通知に使っていたモバイルBaaSのParseが2017/01/28にサービス終了 ・ アニメ見放題サービス「あにてれ」が2017/04/01にサービスイン予定 背景 - 2017 1Q - テレビ東京の他サービスのモバイルアプリにおける BaaS及び指標共通化を目的に、Firebase(Aalytics)を導入
アプリのリニューアルの結果は好調 PUSH通知としてFirebase Notificationsを利用 ただし、Firebase Notificationsでは、以下の問題が発生。 ・ Firebase Notificationsの運用負荷が大きい ・ Firebase Notificationsでは満たせない要件が増えてきた 背景
- 2017 3Q -
【Firebase Notificationsの運用負荷が大きい】 例)先週の放送回の動画を見たが、今週まだ見ていないユーザーへの通知 背景 放送開始時にユーザーリストを作成する運用は負荷が高く、ミスも発生しがち (設定が技術寄りすぎて、マーケチームが作成できない) ユーザーリスト Firebase Notificationでのターゲティング
背景 別のPUSH通知の仕組みを使うことを本格検討 - 2017 3Q - 【Firebase Notificationsでは満たせない要件】 柔軟な通知要件 例1)ドラマの新番組の告知通知を、ドラマ関心層に送りたい など
→セグメントが多数必要だが、ユーザーリストの上限は50個... 例2)プッシュ通知を使った休眠ユーザーの掘り起こし施策 →休眠ユーザーの定義を、ユーザープロパティ・ユーザーリストでできない
・柔軟なターゲティング設定 ・お気に入り登録した番組の新着通知(CMS連携) ・A/Bテスト ・通知結果の取得 ・開封ログと分析ツールとの連携 ・100万件に通知 ・低コスト(無料) ・他サービスへの展開の容易さ ・サポート(継続的な機能追加) 要件
Firebase Cloud Messaging+α で実現できそう! (あまりSDKを増やしたくない)
Firebase が 頑張る イメージ アプリ App Engine ①お気に入り番組登録 ③送信 ②抽出
④開封 ③送信 柔軟なセグメント作成は Analyticsとかのデータを分析し セグメント作って手動登録 ④開封
お気に入り機能実装時につまづきそうな制約一覧 Firebase Notification ・topic配信 or FCM配信 (「レイテンシ」「送信結果」問題) ・送信APIいつの間にかLegacy(推奨APIで1件ずつ送信 or Legacy APIで一括送信)
Firebase Analytics ・User Property(FCMトークンを保存できない) ・開封イベント (既存イベント名は使えない) Firestore ・インデックス (複合インデックスの運用問題) ・フィールドパス(key名に注意)
お気に入り機能実装時につまづきそうな制約一覧 Firebase Notification ・topic配信 or FCM配信 (「レイテンシ」「送信結果」問題) topic配信は一件ごとの送信可否の内訳が取得できない。 遅延が大きい[レイテンシではなくスループットに対して最適化] → 送信対象はtopicではなく、FCMトークン宛てに送信するようにする
・送信APIいつの間にかLegacy(推奨APIで1件ずつ送信 or Legacy APIで一括送信) プロジェクト途中でAPIが、いつの間にかLegacyに(新API移行推奨)。 新APIは、複数宛先一括送信(registration_ids)がない! → いつまで使えるかわからないが、パフォーマンスを重視し、Legacyを使用
お気に入り機能実装時につまづきそうな制約一覧 Firebase Analytics ・User Property(FCMトークンを保存できない) Firebase AnalyticsでUser PropertyとしてFCMトークンを出力できない (ユーザープロパティの上限は100文字まで[FCMトークンは150文字]) FCMトークンをどうやって保存するか
→ Firestoreに送信対象のFCMトークンを保存して、そこから取得する ・開封イベント (既存イベント名は使えない) 自動的に収集されるイベント notification_* は独自FCM実装では計測に使用できない → push_open などのカスタムイベントを作成
お気に入り機能実装時につまづきそうな制約一覧 Firestore ・インデックス (複合インデックスの運用問題) お気に入り登録内容(どの番組)と通知許諾(登録状況)を管理したい →お気に入り番組名とその登録状況を別フィールドに分けると、新規番組追加時に 毎回複合インデックスを貼る必要が出てくる。煩雑でミス防止のため避けたい。 →番組フィールドに、以下(右図)のように持たす 登録 : タイムスタンプ(milli
sec) 解除 : 0 ・フィールドパス(key名に注意) Firestoreには、お気に入り番組のID(godやchogokin-a)を登録していたが、 keyにハイフン(-)が入っている場合、プッシュ送信が失敗する →Firestoreの制約。バッククォートで回避 特定の1つのフィールドには 自動的にインデックスが張られる
実装内容
実装内容 左図:アプリの動画視聴画面に、「お気に入り」ボタン追加 下図:Firestoreの構造 devices -> app_instance_id -> device_typeやfcm_token
結果 日次 累計 お気に入り番組登録数推移 お気に入り 登録数 日 ・PUSH通知開封率 ↗ ・PUSH通知運用負荷 ↘ ・Firebase
Analyticsから抽出した特定のセグメントへのPUSH通知が可能 ・現在、自分の担当外の他VOD事業に実装中 PUSH基盤管理画面
結果 GAE 約100万件を20万件ずつ30分に一回送信するように修正(ちょっと怖かったので) →最大8個まで自動スケールを確認できた
今後 FCMでやりたいこと ・WEBプッシュ ・レコメンドと連携したPUSH通知 ・放送緊急速報や地震速報 通知 テレビ東京のサービス(HPやアプリなど)の利用者(大規模)に対して、 遅延なく、放送緊急速報や地震速報連携を行う。 報道機関として、正しい重要な情報を遅延なく広く届けることが 非常に重要
(Firestore?)
今後 Firestoreでやりたいこと① スポーツの速報スコアとして活用 (ページリロードなしで更新可能) 管理画面
今後 Firestoreでやりたいこと② コメント機能 (再生数だけではなく、ユーザーのコメントを番組制作にフィードバックできる) 張本がんばれ 張本、あと一本だ!!! マッチポイント!!! がんばれーーー!! ぜったいいける! サービスエースだっ!
W anted !! 色々やりたいことあるものの・・・ エンジニアが全然足りていません! ・無類のテレ東好き ・テレビ局はもっとITを頑張るべきだと思う方 ・テレ東をハックしたいテックギーク ・Firebaseを使ったサービスをドンドン作りたい方 ぜひ、一緒に働きましょう!
応 募
Special thanks & & PUSH基盤開発 アジャイルコーチング アプリ開発