LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
by
gree_tech
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
グリーライフスタイル株式会社 サーバーサイドエンジニア 田畠 知弥 iOSエンジニア 矢崎 雄人 LIMIAアプリにおける 行動履歴を用いた コンテンツ配信の最適化
Slide 2
Slide 2 text
2 自己紹介 田畠 知弥 • 2013年グリー株式会社に入社 • サーバーサイドエンジニア 矢﨑 雄人 • 2017年グリー株式会社に入社 • iOSエンジニア
Slide 3
Slide 3 text
3 ⓘ Start presenting to display the poll results on this slide. LIMIAを知っていますか?
Slide 4
Slide 4 text
お手軽で、すぐ真似できるのに、ちゃんと暮らしやすい。 LIMIAは家事の工夫が大集合するライフスタイルメディアです。 お手軽工夫で家事上手 LIMIAの紹介
Slide 5
Slide 5 text
● ライフスタイルに関する多種多様なコンテンツを掲載 ○ 記事 ■ DIYのやり方 ■ 100均グッズ紹介 ■ 効率的な掃除方法 ■ etc. ○ 写真投稿 ○ SNS機能 LIMIAアプリの紹介
Slide 6
Slide 6 text
• アプリ上の行動から、ユーザーの興味を推測し、その人の興 味にあったコンテンツを表示するシステム ユーザーに興味に合ったコンテンツを届けたい アプリ内の イベントを収集 ユーザーごとに最適な コンテンツを配信
Slide 7
Slide 7 text
7 ⓘ Start presenting to display the poll results on this slide. アプリのイベント計測やっていますか?
Slide 8
Slide 8 text
• アプリ内で起きたイベントをFirebase Analyticsへ送信 • イベント名、画面名、記事IDなど各種パラメータを付与 • データはBigQueryにエクスポート Firebase Analyticsでアプリ内のイベントを計測する Firebase向け Google Analytics BigQuery 記事のタップなど
Slide 9
Slide 9 text
• アプリには記事リストがたくさん並ぶ • リストをスクロールして興味のある記事をタップ • 画面に表示されてもタイトルを読んだとは限らない • 興味がなくてタップしなかったのか • スクロールして読み飛ばしたのか ユーザーがどんなコンテンツに 興味を持っているのか計測したい
Slide 10
Slide 10 text
• vCTRを指標に • 「Viewable Click-Through Rate」の略 • ユーザーが目視した記事リストの中から何を選択したか • ユーザーが目視した記事リスト = Viewable Impression • ユーザーがタップした記事 = Click • Click ÷ Viewable Impression = vCTR ユーザーがどんなコンテンツに 興味を持っているのか計測したい
Slide 11
Slide 11 text
• vCTRを指標に • 「Viewable Click-Through Rate」の略 • ユーザーが目視した記事リストの中から何を選択したか • ユーザーが目視した記事リスト = Viewable Impression • ユーザーがタップした記事 = Click • Click ÷ Viewable Impression = vCTR ユーザーがどんなコンテンツに 興味を持っているのか計測したい
Slide 12
Slide 12 text
• ネット広告業界で使われる指標 • ユーザーが目視可能である状態を定義 • サーバー側のアクセスログでは計測できない 「領域の50%以上が1秒以上連続して画面に表示されること」 Viewable Impressionとは 記事C 記事B 記事A 記事C 記事B 記事A 記事A~Cはどれも領域 50%を満たしていない 記事Cだけ領域が50%を 満たしていない 縦方向スクロール 横方向スクロール
Slide 13
Slide 13 text
デモ動画 Viewable Impressionが発生する様子
Slide 14
Slide 14 text
Viewable Impressionのフローチャート • 記事リスト1つ1つでひたすら このループを実行 • Viewable Impressionを Firebase Analyticsに送信
Slide 15
Slide 15 text
• ライブラリに記事リストのビューを渡して、 Viewable Impressionを通知するシンプルな構成 グリーメディアの他アプリにも導入するため、計測用ライブラリを開発 Viewable Impression計測用ライブラリの開発 アプリ ライブラリ Viewable判定 記事リストの ビュー生成 イベント送信
Slide 16
Slide 16 text
• 大量のイベントループが発生 • 各タブの記事リストを合計すると200以上になることも • ループ処理の一時停止、再開を適切に管理 • 画面単位でトラッカーを作成 • アクティブな画面だけトラッカーを有効に • 「1秒以上連続表示」を測るため領域の計算が高頻度で発生 • 領域計算のオーバーヘッドをなるべく抑える • 計算頻度を調整 • CADisplayLink/TimeAnimatorを使用 • 画面描画の数フレームに1回のように調整 記事リストすべてを計測するには負荷がかかる Viewable Impression計測の難しさ
Slide 17
Slide 17 text
• Firebase Analyticsを利用 • アプリ内で起きたイベントをデータとして貯める • 記事のタップとViewable Impressionを計測 • vCTRが計測できるようになった アプリのイベント計測まとめ
Slide 18
Slide 18 text
18 LIMIAでコンテンツを配信するまでの流れ アプリ内の イベントを収集 ユーザーごとに最適な コンテンツを配信
Slide 19
Slide 19 text
19 ユーザーの興味がある記事を届けたい ● ユーザー一人一人の興味にあった記事を届ける ● ログから、興味を推測して、適したコンテンツを配信
Slide 20
Slide 20 text
20 コンテンツを配信するまでのデータの流れ 記事情報 記事のImpression 記事のClick 記事の人気度 ユーザーの興味 記事の種別、特徴 ユーザーに見せる 記事を決定
Slide 21
Slide 21 text
21 システムのアーキテクチャ 記事情報 記事閲覧 記事閲覧履歴 記事特徴 ユーザーの特徴 ユーザーのimpression, click 人気の記事 ユーザーの興味に あったコンテンツを配信
Slide 22
Slide 22 text
22 人気の記事 ● ユーザーに好まれている記事を知りたい ○ Viewable Impressionを使うことで、ユーザーがアプリの記事リ ストで実際に目に止めて、Clickした記事がわかる ● アプリからのログはFirebaseを使ってBigQuery保存 ● 定期的にvCTRを計算してDynamoDBに保存 ユーザーのimpression, click 人気の記事
Slide 23
Slide 23 text
23 ● 記事の特徴 ○ 記事を作成する際に特徴を計算しDynamoDBに記事の特徴を保存 ● 閲覧情報 ○ ユーザーの記事を閲覧情報に履歴としてDynamoDBに保存 ● ユーザー特徴 ○ 記事の特徴とユーザーの記事閲覧情報を使ってユーザー特徴を計 算 記事の特徴とユーザーの特徴 記事情報 記事閲覧 閲覧情報 記事特徴 ユーザーの特 徴
Slide 24
Slide 24 text
24 ● ユーザーの特徴や人気の記事などを元に、ユーザーの興味に あった記事を計算 ● 新しいロジックを導入する際はA/Bテストで評価 ユーザーにオススメのコンテンツを配信する 記事閲覧 記事特徴 ユーザーの特徴 人気の記事 ユーザーに コンテンツを配信
Slide 25
Slide 25 text
25 ユーザーに興味のあるコンテンツをだす難しさ ● 検証の難しさ ○ オフラインの評価が必ずしもオンラインで評価した時と一致しな い ● システムの難しさ ○ 一個一個は小さいが、たくさんの処理がピタゴラスイッチのよう に動く ● 自チームだけでは完結しない難しさ ○ 必要なデータ収集を集めるのに、自チームだけで完結しない
Slide 26
Slide 26 text
26 どうやってるか ● 検証の難しさ ○ 実際にユーザーに提供して、A/Bテストで効果を測る ○ 考えて、実装して、検証するサイクルを速く回すのが大事 ● システムの難しさ ○ 検証のサイクルを素早く回すには、データのパイプラインを簡単 に作れるような環境にしておく ■ 適切なコンポーネントに分割して、コードで管理する ● 自チームだけでは完結しない難しさ ○ しっかりスケジュールを立てて、気軽に相談できる環境を作る
Slide 27
Slide 27 text
• アプリ内のイベントを収集 • 記事のタップイベント、Viewable Impressionを計測 • 計測用ライブラリについて • ユーザーごとに最適なコンテンツを配信 • ユーザーの興味にあった記事の配信システム • 配信システムを運用する上で気をつけていること まとめ アプリ内の イベントを収集 ユーザーごとに最適な コンテンツを配信