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
メディアアプリLIMIAにおけるプッシュ通知配信システム
Search
gree_tech
PRO
September 18, 2020
Technology
0
180
メディアアプリLIMIAにおけるプッシュ通知配信システム
GREE Tech Conference 2020 で発表された資料です。
https://techcon.gree.jp/2020/session/ShortSession-1
gree_tech
PRO
September 18, 2020
Tweet
Share
More Decks by gree_tech
See All by gree_tech
kustomizeをいい感じに使う方法
gree_tech
PRO
3
1.2k
スケーラビリティとコスト管理 Google Cloud Spanner 費用最適化の取り組み
gree_tech
PRO
0
540
「アナザーエデン 時空を超える猫」の5年前のログを引っ越してデータドリブンで事業運用プロセスを改善した話
gree_tech
PRO
0
380
Unity,PHP+Jenkins+GAS 多言語対応を意識させない開発を目指したシステム構築
gree_tech
PRO
0
830
全社総会における「REALITY Spaces」の活用と、Addressableを用いたコンテンツ配信技術について
gree_tech
PRO
0
500
AWSのEKS環境でログ機能を構築/リリースしたお話
gree_tech
PRO
0
380
「ヘブンバーンズレッド」の大規模アップデートにおける国内及び翻訳QAの取り組み
gree_tech
PRO
0
460
アプリ「REALITY」の12言語対応プロセスの仕組みと品質向上の取り組み
gree_tech
PRO
0
700
REALITYアプリのメンテナンスなしでの機能リリースを実現する、Istio導入とB/Gデプロイ実現の取り組み
gree_tech
PRO
0
570
Other Decks in Technology
See All in Technology
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
36k
TiDBにおけるテーブル設計と最適化の事例
cygames
0
810
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
37k
動画配信サービスのフロントエンド実装に学ぶ設計原則
yud0uhu
1
140
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
170
Google Cloud Next '24 Recap in ZOZO AIにより変わる開発 運用/Development and operation changed by AI
gachimuchiengineer
0
210
大規模言語モデル (LLM)における低精度数値表現
pfn
PRO
3
850
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
320
アプリ・TVで"旅なか体験"をもっとスマートにしてみた_team 4@NOT A HOTEL
xx23xy
0
160
QA Engineer Life @ LINE
line_developers_tw
PRO
0
150
SWC Transformerから見るTypeScript関数記述ベストプラクティス
fujiyamaorange
1
180
[PyconUS 2024] Having fun with Pydantic and pattern matching
enforcerpl
0
190
Featured
See All Featured
Embracing the Ebb and Flow
colly
80
4.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
21
2k
Building a Modern Day E-commerce SEO Strategy
aleyda
22
6.5k
YesSQL, Process and Tooling at Scale
rocio
165
13k
Atom: Resistance is Futile
akmur
260
25k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
Optimising Largest Contentful Paint
csswizardry
13
2.4k
Facilitating Awesome Meetings
lara
43
5.6k
Clear Off the Table
cherdarchuk
86
310k
RailsConf 2023
tenderlove
9
590
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
84
45k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.7k
Transcript
グリーライフスタイル株式会社 ソフトウェアエンジニア 樋口雅拓 メディアアプリLIMIAにおける プッシュ通知配信システム
• グリーグループのグリーライフスタイル株式会社で、LIMIA という住ま い領域のメディアを作っています。ゲーム会社ですが、最近はメディア に力を入れています。 • LIMIAではインフラ、サーバ、Web、RecSysを経てAndroidを担当してい ます。6歳の娘のパパ。twitter: @mahiguch1 •
技術書典7からサークル参加しています。 • https://limia.jp/ • https://arine.jp/ • https://aumo.jp/ • https://www.mine-3m.com/mine/ 2 Masahiro Higuchi/樋口雅拓
新宿拠点に勤務し ています。最大190 名収容可能な勉強 会スペースがあり ます。オフライン で集まれるように なったら、社内外 の勉強会を開催し たいと思っていま す。
松屋自販機もあり ます! 最高すぎる勉強会スペースと松屋自販機 3
グリーグループ公式部活動と して技術書典部を立ち上げ、 合同誌を作って頒布しました。 17:20から技術書典部の活動 紹介を行います。 企業部活動として技術書典7/8/9にサークル参加
5 背景と目的 何故システム内製化したのか 5
LIMIAとは? • メディアサービス • Android, iOS, Web • 記事一覧を表示し、タップす ると記事詳細を閲覧できる。
• 記事一覧はパーソナライズ。 • 記事詳細読了後に関連記事を 出している。 • 分析基盤はBigQuery
• 起動経路で最も多かったのは、プッシュ通知か らの起動。 • 以前は人手で良さそうな記事を送信していた。 分析して特徴を見つけ、自動で最適な記事を送信 することで起動数増加を目指す! LIMIAサービスの特徴
8 どうやって最適なプッシュ通知を見つけるか 以下のPDCAを高速回転させる。 • 仮説立案 • オフライン検証 • オンライン検証 •
自動入稿対応 ここからは各項目について説明していきます。 8
9 仮説立案 9
目標はLTV - CPI > 0の状態を保つこと。 ブレストを行い、LTVに繋がりそうな仮説を立てた。 • ユーザの興味に合わせた記事を配信すると起動率が上がる • 読了率が高い記事を配信すると起動率が上がる
• ユーザが普段使っている時刻に配信すると起動率が上がる • 配信回数を減らすとアンインストールが減る • 配信回数を増やすと起動数が増える 仮説一覧
11 11 ⓘ Start presenting to display the poll results
on this slide. 仮説の中で最も効果が高かったものは、どれでしょう?
12 オフライン検証 12
これまでの配信実績がBigQueryに蓄積されている。 これを使って、もし仮説の配信を行ったらどうなるかをシミュレ ーションする。 効果がありそうなら、オンライン検証へ進める。 なさそうなら、ここで終了。 効果が高そうな仮説を絞り込む! 13 オフライン検証方法
• ユーザが直近見た30記事のカテゴリを調べ、 最も多かったものをユーザの興味セグメン トとした。 • 興味セグメント毎に起動率(=起動数/ユーザ 数)を集計。 • 配信した記事のカテゴリと興味関心が一致/ 不一致で起動率を比較
• 一致していたケースでは不一致に比べて、 20%起動率が高かった。採択。 オフライン検証(採択事例) ユーザの興味に合わせた記事を配信すると起動率が上がる
• 15日前から2日前のログからアプリ起動時刻を調べ、時刻毎のユーザ セグメントを作成。 • 1日前のログから「その時刻のみに送信」と「全時刻に送信」を比較。 • 対象時刻のみだと、起動数が40%減少。アンインストールが減って もカバーしきれない減少幅だったため、棄却。 オフライン検証(棄却事例) ユーザが普段使っている時刻に配信すると起動率が上がりアンインストール減少
16 オンライン検証 16
オフライン検証で効果が見込めるものをABテストした。 2週間を1ラウンドとし、ラウンド毎に異なる仮説を検証した。 30ラウンドあたりで収束したので、検証を終了した。 その結果、以下のパターンが最もLTVが高かった。 • 一斉送信は1日5回 • そのうち4回は興味関心と一致した記事 • 記事は直近2週間の読了率が高かったもの
この結果は当時のLIMIAユーザに対する最適値なので注意! そのまま使っても上手くいかない可能性が高い。 参考にするなら結果ではなくプロセスを。 オンライン検証 ABテスト
18 自動入稿対応 18
興味関心に合わせた記事を配信しようとすると、興味セグメント毎に配 信記事を選ぶ必要がある。興味セグメントを10個にした場合、10倍の記 事を選ばなければならない。人手では10倍のコストがかかってしまうた め、抽出作業を自動化した。 • 配信枠に自動で3件づつ入稿 • それを人が確認し、最適なものを選ぶ。 完全自動化すると、季節外れの記事(イベント終了後にイベント記事な ど)を送ってしまう可能性があるため、人手でのチェックを残した。
運用改善: 配信記事抽出自動化 ここからは少しシステムの話です
20 システム構成 20
バッチが毎分起動して、送信時刻になる と原稿と対象ユーザをSQSに送る。送信 バッチはSQSにqueueがあると、それ をFCMに対して送信する。 システム構成(配信)
入稿ツールでは、次の4つの画面を 作った。 • 通知: 配信時刻 • 条件: どの原稿を誰に送るか • 原稿:
通知送信内容 • コンテンツ: 遷移先コンテンツ 条件を設定すれば、ABテストや特 定のユーザへの配信が可能。原稿 を工夫することで複雑な通知を送 信可能。 入稿ツール
条件を満たした記事をBigQueryで集計。バッチで結果 を読んで、MySQLに書き込む。当時の基準は、以下の もの。 • CTRが高い • 読了率が高い • 記事の長さが一定以上 システム構成(自動入稿)
• ユーザの興味に一致したコンテンツを配信することで、起動数が 10%から20%増加した。 • 入稿作業の属人性排除と工数削減ができた 改善結果
• 自由に仮説を立て検証するためにプッシュ通知配信システムを内製 化した • その結果、運用コストを下げるとともにCTRを改善する事ができた。 • 機械学習的手法を取り入れて改善継続中 Ask The Speakerは、D会場です。
まとめ 25
26