SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
メディアアプリの計測Tips
Masahiro Higuchi / 樋口雅拓
● グリーグループのリミア株式会社で、LIMIA という住まい領域のメディアを
作っています。ゲーム会社ですが、最近はメディアに力を入れています。
● 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何でも屋
です。4歳の娘のパパ。twitter: @mahiguch1
● https://limia.jp/
● https://arine.jp/
● https://aumo.jp/
● https://www.mine-3m.com/mine/
LIMIAとは?
● メディアサービス
● 記事一覧を表示し、タップすると記事
詳細を閲覧できる。
● Android(Kotlin), iOS(Swift),
Web(TypeScript)
● AWS:90%、GCP:10%。
● PHP/EC2 → Go/ECS移行中
背景と目的
● 計測は超重要。
● レポートを作成することで、運営による改善が可能。
● 計測した指標で運営できるようになったら、機械に置き換えて効率化。
—> ハマりやすい「CTR」、「読了率」、「WebView」、「A/Bテスト」の計測
Tipsを共有します。
良い記事とは何か? (1) CTR
良い記事をユーザに提供することで、良い体験を届けた
い。でも、良い記事って何だろう?
起動すると記事一覧画面が表示される。そこから選ば
れないと読んでもらえない。
そこで、「一覧からタップされやすいもの」をユーザが一
覧表示することを望んでいるものと仮説を立て、それを
検証した。
「一覧からタップされやすいもの」 = CTR と定義した。
CTRとは?
CTR(Click Through Rate) = タップ数/ 表示回数
【表示回数の定義】
・広告が視聴可能なスクリーンに表示されていること
・広告の一定面積以上が見える状態にあること
・広告が一定の時間以上見える状態であること
・広告が人間によって視聴されていること
つまり、一覧表示のChild/Cellが画面上に表示したうち、タップされた割合。
タップ数は簡単に取れるが、スクリーンに表示された回数はどう取れば良いのか?
スクリーンに表示されたログ送信
AndroidではRecyclerView.layoutManagerのpositionを取得する
ことで実現した。
(obtainRecyclerView()?.layoutManager as? LinearLayoutManager)?.let {
val first = it.findFirstVisibleItemPosition()
val last = it.findLastVisibleItemPosition()
if (first >= 0 && last >= 0) {
for (position in first..last) {
ログ送信
https://developer.android.com/reference/android/support/v7/widget/LinearLayoutManager.html#findFirstVisibleItemPositio
n()
スクリーンに表示されたログ送信(ファーストビュー)
いきなり走らせると更新される度にログが再送されてしまうので、 viewTreeObserver の
Listnerに仕込むことで描画してからログ送信されるようにした。
obtainRecyclerView()?.viewTreeObserver?.addOnGlobalLayoutListener(object :
ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
logImpressionForCurrentVisibleItems {
obtainRecyclerView()?.viewTreeObserver?.removeOnGlobalLayoutListener(this)
https://developer.android.com/reference/android/view/ViewTreeObserver
良い記事とは何か? (2) 読了率
リストをタップして表示した記事が期待
通りだった場合、記事を最後まで閲覧
する可能性が高い。そこで、記事を最
後まで読み切った比率(読了率)が高い
ものを記事を表示するユーザが望ん
でいると仮説を立て、それを検証した。
読了率: 読了イベントを発火
読了したらイベントを発火し、「読了率 = 読了イベント数 / 記事閲覧数」とした。
記事直下に執筆者名などが表示されるitemがあり、それが表示されたら、読了
イベントを飛ばした。
その後、半分まで読んだら「0.5」のような読了割合を取得し、「読了率 =
SUM(読了割合) / 記事閲覧数」とした。
その他のTips: WebViewのイベント計測
ネイティブ Android コードを JavaScript から呼び出せるようにするには、@JavaScriptInterface を付けたメソッドを
定義してクラスを実装します。作成したネイティブ インターフェースを WebView に登録すると、WebView で実行される
JavaScript コードからアクセスできるようになります。
https://firebase.google.com/docs/analyt
ics/android/webview?hl=ja
WebViewイベント計測(Javascript側実装)
JavascriptからWebViewの中に用意したメソッドを叩くことができるようになります。
その他のTips2: A/Bテストのどちらに振り分けられたか
Firebase A/B Testingを使うと楽。
実装しなくてもA/Bテストでどちらのセ
グメントに振り分けられたか、
UserPropertyに自動設定される。key
は次のようになる。
firebase_exp_<ABテスト番号>
まとめ
● 計測は機能開発が終わった後に実装する事が多いので、面倒に感じる。
● Tipsをみんなで共有して、機能開発に集中したい!
● 計測結果を使って機械学習での最適化を行なっているので、どこかで話し
たい。
ご静聴、ありがとうございました!

Contenu connexe

Plus de gree_tech

海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験gree_tech
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組みgree_tech
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違いgree_tech
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介gree_tech
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてgree_tech
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーgree_tech
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-gree_tech
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話gree_tech
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)gree_tech
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行gree_tech
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜gree_tech
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)gree_tech
 
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-gree_tech
 
REALITY iOSアプリを支える開発効率化
REALITY iOSアプリを支える開発効率化REALITY iOSアプリを支える開発効率化
REALITY iOSアプリを支える開発効率化gree_tech
 
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜gree_tech
 
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜gree_tech
 
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容についてバーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容についてgree_tech
 
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインREALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインgree_tech
 
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」についてさまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」についてgree_tech
 
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2DVTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2Dgree_tech
 

Plus de gree_tech (20)

海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
 
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
 
REALITY iOSアプリを支える開発効率化
REALITY iOSアプリを支える開発効率化REALITY iOSアプリを支える開発効率化
REALITY iOSアプリを支える開発効率化
 
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
WFSエンジニア組織のデザイン〜コンテンツ開発に集中するために〜
 
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
Lua文化の伝承!? WFSにおけるイベントスクリプト活用術〜すべてはより良いコンテンツ制作のために〜
 
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容についてバーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
バーチャルライブ配信アプリREALITYの3Dアバターシステムの全容について
 
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインREALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
 
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」についてさまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
さまざまなキャプチャーデータを合成して再分配するシステム「REALITY Studio Motion Engine」について
 
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2DVTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
VTuber・XRライブエンタメ駆動の研究開発 - GREE VR Studio Laboratory のR2D
 

メディアアプリの計測Tips