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
580
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
GREE Tech Conference 2020 で発表された資料です。
https://techcon.gree.jp/2020/session/Session-1
gree_tech
PRO
September 18, 2020
Tweet
Share
More Decks by gree_tech
See All by gree_tech
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
130
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
1.7k
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
580
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
590
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
560
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
640
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
1k
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
670
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
790
Other Decks in Technology
See All in Technology
LIXIL基幹システム刷新に立ち向かう技術的アプローチについて
tsukuha
1
380
ソフトウェアQAがハードウェアの人になったの
mineo_matsuya
3
200
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
6.9k
クラウド開発の舞台裏とSRE文化の醸成 / SRE NEXT 2025 Lunch Session
kazeburo
1
580
Four Keysから始める信頼性の改善 - SRE NEXT 2025
ozakikota
0
410
モニタリング統一への道のり - 分散モニタリングツール統合のためのオブザーバビリティプロジェクト
niftycorp
PRO
1
520
CDKコード品質UP!ナイスな自作コンストラクタを作るための便利インターフェース
harukasakihara
2
230
SRE不在の開発チームが障害対応と 向き合った100日間 / 100 days dealing with issues without SREs
shin1988
2
2k
公開初日に Gemini CLI を試した話や FFmpeg と組み合わせてみた話など / Gemini CLI 初学者勉強会(#AI道場)
you
PRO
0
1.3k
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
2
940
ClaudeCode_vs_GeminiCLI_Terraformで比較してみた
tkikuchi
1
1k
QuickSight SPICE の効果的な運用戦略~S3 + Athena 構成での実践ノウハウ~/quicksight-spice-s3-athena-best-practices
emiki
0
290
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Building an army of robots
kneath
306
45k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
RailsConf 2023
tenderlove
30
1.1k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Scaling GitHub
holman
460
140k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Building Applications with DynamoDB
mza
95
6.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Transcript
グリーライフスタイル株式会社 サーバーサイドエンジニア 田畠 知弥 iOSエンジニア 矢崎 雄人 LIMIAアプリにおける 行動履歴を用いた コンテンツ配信の最適化
2 自己紹介 田畠 知弥 • 2013年グリー株式会社に入社 • サーバーサイドエンジニア 矢﨑 雄人
• 2017年グリー株式会社に入社 • iOSエンジニア
3 ⓘ Start presenting to display the poll results on
this slide. LIMIAを知っていますか?
お手軽で、すぐ真似できるのに、ちゃんと暮らしやすい。 LIMIAは家事の工夫が大集合するライフスタイルメディアです。 お手軽工夫で家事上手 LIMIAの紹介
• ライフスタイルに関する多種多様なコンテンツを掲載 ◦ 記事 ▪ DIYのやり方 ▪ 100均グッズ紹介 ▪ 効率的な掃除方法
▪ etc. ◦ 写真投稿 ◦ SNS機能 LIMIAアプリの紹介
• アプリ上の行動から、ユーザーの興味を推測し、その人の興 味にあったコンテンツを表示するシステム ユーザーに興味に合ったコンテンツを届けたい アプリ内の イベントを収集 ユーザーごとに最適な コンテンツを配信
7 ⓘ Start presenting to display the poll results on
this slide. アプリのイベント計測やっていますか?
• アプリ内で起きたイベントをFirebase Analyticsへ送信 • イベント名、画面名、記事IDなど各種パラメータを付与 • データはBigQueryにエクスポート Firebase Analyticsでアプリ内のイベントを計測する Firebase向け
Google Analytics BigQuery 記事のタップなど
• アプリには記事リストがたくさん並ぶ • リストをスクロールして興味のある記事をタップ • 画面に表示されてもタイトルを読んだとは限らない • 興味がなくてタップしなかったのか • スクロールして読み飛ばしたのか
ユーザーがどんなコンテンツに 興味を持っているのか計測したい
• vCTRを指標に • 「Viewable Click-Through Rate」の略 • ユーザーが目視した記事リストの中から何を選択したか • ユーザーが目視した記事リスト
= Viewable Impression • ユーザーがタップした記事 = Click • Click ÷ Viewable Impression = vCTR ユーザーがどんなコンテンツに 興味を持っているのか計測したい
• vCTRを指標に • 「Viewable Click-Through Rate」の略 • ユーザーが目視した記事リストの中から何を選択したか • ユーザーが目視した記事リスト
= Viewable Impression • ユーザーがタップした記事 = Click • Click ÷ Viewable Impression = vCTR ユーザーがどんなコンテンツに 興味を持っているのか計測したい
• ネット広告業界で使われる指標 • ユーザーが目視可能である状態を定義 • サーバー側のアクセスログでは計測できない 「領域の50%以上が1秒以上連続して画面に表示されること」 Viewable Impressionとは 記事C
記事B 記事A 記事C 記事B 記事A 記事A~Cはどれも領域 50%を満たしていない 記事Cだけ領域が50%を 満たしていない 縦方向スクロール 横方向スクロール
デモ動画 Viewable Impressionが発生する様子
Viewable Impressionのフローチャート • 記事リスト1つ1つでひたすら このループを実行 • Viewable Impressionを Firebase Analyticsに送信
• ライブラリに記事リストのビューを渡して、 Viewable Impressionを通知するシンプルな構成 グリーメディアの他アプリにも導入するため、計測用ライブラリを開発 Viewable Impression計測用ライブラリの開発 アプリ ライブラリ Viewable判定
記事リストの ビュー生成 イベント送信
• 大量のイベントループが発生 • 各タブの記事リストを合計すると200以上になることも • ループ処理の一時停止、再開を適切に管理 • 画面単位でトラッカーを作成 • アクティブな画面だけトラッカーを有効に
• 「1秒以上連続表示」を測るため領域の計算が高頻度で発生 • 領域計算のオーバーヘッドをなるべく抑える • 計算頻度を調整 • CADisplayLink/TimeAnimatorを使用 • 画面描画の数フレームに1回のように調整 記事リストすべてを計測するには負荷がかかる Viewable Impression計測の難しさ
• Firebase Analyticsを利用 • アプリ内で起きたイベントをデータとして貯める • 記事のタップとViewable Impressionを計測 • vCTRが計測できるようになった
アプリのイベント計測まとめ
18 LIMIAでコンテンツを配信するまでの流れ アプリ内の イベントを収集 ユーザーごとに最適な コンテンツを配信
19 ユーザーの興味がある記事を届けたい • ユーザー一人一人の興味にあった記事を届ける • ログから、興味を推測して、適したコンテンツを配信
20 コンテンツを配信するまでのデータの流れ 記事情報 記事のImpression 記事のClick 記事の人気度 ユーザーの興味 記事の種別、特徴 ユーザーに見せる 記事を決定
21 システムのアーキテクチャ 記事情報 記事閲覧 記事閲覧履歴 記事特徴 ユーザーの特徴 ユーザーのimpression, click 人気の記事
ユーザーの興味に あったコンテンツを配信
22 人気の記事 • ユーザーに好まれている記事を知りたい ◦ Viewable Impressionを使うことで、ユーザーがアプリの記事リ ストで実際に目に止めて、Clickした記事がわかる • アプリからのログはFirebaseを使ってBigQuery保存
• 定期的にvCTRを計算してDynamoDBに保存 ユーザーのimpression, click 人気の記事
23 • 記事の特徴 ◦ 記事を作成する際に特徴を計算しDynamoDBに記事の特徴を保存 • 閲覧情報 ◦ ユーザーの記事を閲覧情報に履歴としてDynamoDBに保存 •
ユーザー特徴 ◦ 記事の特徴とユーザーの記事閲覧情報を使ってユーザー特徴を計 算 記事の特徴とユーザーの特徴 記事情報 記事閲覧 閲覧情報 記事特徴 ユーザーの特 徴
24 • ユーザーの特徴や人気の記事などを元に、ユーザーの興味に あった記事を計算 • 新しいロジックを導入する際はA/Bテストで評価 ユーザーにオススメのコンテンツを配信する 記事閲覧 記事特徴 ユーザーの特徴
人気の記事 ユーザーに コンテンツを配信
25 ユーザーに興味のあるコンテンツをだす難しさ • 検証の難しさ ◦ オフラインの評価が必ずしもオンラインで評価した時と一致しな い • システムの難しさ ◦
一個一個は小さいが、たくさんの処理がピタゴラスイッチのよう に動く • 自チームだけでは完結しない難しさ ◦ 必要なデータ収集を集めるのに、自チームだけで完結しない
26 どうやってるか • 検証の難しさ ◦ 実際にユーザーに提供して、A/Bテストで効果を測る ◦ 考えて、実装して、検証するサイクルを速く回すのが大事 • システムの難しさ
◦ 検証のサイクルを素早く回すには、データのパイプラインを簡単 に作れるような環境にしておく ▪ 適切なコンポーネントに分割して、コードで管理する • 自チームだけでは完結しない難しさ ◦ しっかりスケジュールを立てて、気軽に相談できる環境を作る
• アプリ内のイベントを収集 • 記事のタップイベント、Viewable Impressionを計測 • 計測用ライブラリについて • ユーザーごとに最適なコンテンツを配信 •
ユーザーの興味にあった記事の配信システム • 配信システムを運用する上で気をつけていること まとめ アプリ内の イベントを収集 ユーザーごとに最適な コンテンツを配信