Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
Search
gree_tech
PRO
September 18, 2020
Technology
0
690
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
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
2.4k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
27
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.4k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
160
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
150
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
1.5k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
270
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
290
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
210
Other Decks in Technology
See All in Technology
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
150
1人1サービス開発しているチームでのClaudeCodeの使い方
noayaoshiro
2
550
子育てで想像してなかった「見えないダメージ」 / Unforeseen "hidden burdens" of raising children.
pauli
2
310
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
1.9k
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
1.4k
「図面」から「法則」へ 〜メタ視点で読み解く現代のソフトウェアアーキテクチャ〜
scova0731
0
460
さくらのクラウド開発ふりかえり2025
kazeburo
2
200
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
日本の AI 開発と世界の潮流 / GenAI Development in Japan
hariby
1
130
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
0
130
Entity Framework Core におけるIN句クエリ最適化について
htkym
0
110
AWSインフルエンサーへの道 / load of AWS Influencer
whisaiyo
0
190
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
A designer walks into a library…
pauljervisheath
210
24k
Ruling the World: When Life Gets Gamed
codingconduct
0
93
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
47
33k
How to Ace a Technical Interview
jacobian
281
24k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
110
Thoughts on Productivity
jonyablonski
73
5k
How GitHub (no longer) Works
holman
316
140k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
250
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
23
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を計測 • 計測用ライブラリについて • ユーザーごとに最適なコンテンツを配信 •
ユーザーの興味にあった記事の配信システム • 配信システムを運用する上で気をつけていること まとめ アプリ内の イベントを収集 ユーザーごとに最適な コンテンツを配信