オンラインゲームソリューション@トレジャーデータ
DESCRIPTION
TRANSCRIPT
1
オンラインゲームソリューション
2014/06
Takahiro Inoue (Chief Data Scien:st) taka@treasure-‐data.com
2
自己紹介
• 井上 敬浩 (TwiCer: @doryokujin )
• チーフデータサイエンティスト @ トレジャーデータ
• 慶應大学院数学科統計専攻
• トレジャーデータ公式ブログオーサー
• MongoDBマスター
hCp://treasure-‐data.hateblo.jp
3
トレジャーデータサービス概要
4
Treasure Data Service とは
ビッグデータの収集・保存・分析をワンストップで提供する、 クラウド型のデータマネジメントサービス(DMS)
“データ解析の世界をシンプルにしたい”
収集 保存 分析
KPI
データ可視化・共有
分析ツール連携
他製品連携
RDBMS, Google Docs, AWS S3, FTP Server, etc.
Mo:on Board, Metric Insights, etc.
Tableau, Dr.Sum, Power BI, Excel, etc.
5
Treasure Data Service
Result Output クエリ結果自動書込
データ収集 データ分析 データ保管
収集・保存・分析をワンストップに、柔軟なインターフェイスで提供。
データ集計 SQL, Pig
ストレージ Flexible, Scalable, Columnar
Storage
バッチ型 分析
アドホック型 分析
分析エンジン Hadoop, Treasure Query Accelerator
データ抽出 REST API
ODBC/JDBC (SQL, Pig)
Webログ
Appログ
センサー
CRM
ERP
RDBMS
TD Toolbelt
並列バルク インポーター
Treasure Agent
ストリーミング ログコレクター
POS
6
分析レイヤー
4. Data Processing
5. Data Visualiza5on
3. Data Storage
2. Data Collec5on
1. Data Source
• ストリーミング収集ツール • バルクインポートツール
• トレジャークラウドストレージ • マネジメントコンソール
• バッチクエリ(Hive) • アドホッククエリ(TQA)
• ダッシュボード • Business Intelligence
あらゆる分析レイヤーをトレジャーデータサービスが一貫して担うことができる。
7
オンラインゲームソリューション
8
ソリューションテンプレート
Treasure Data Service
データ解析テンプレート
データ収集テンプレート
ソリューション コンポーネント: - Treasure Data Service - 構造化ログのテンプレート
- データ収集エージェント設
定ファイルテンプレート
- 設定済みBIレポーティン
グ・ダッシュボード
初期セットアップ期間内で、業界毎に事前に定義した解析ダッシュボードも提供
9
ログインログ
Treasure Data Service
データ統合
オンラインゲームソリューションとは
課金ログ
招待ログ
KPI: PV
KPI: ARPU
KPI: リテンション
提供するログテンプレートを活用する事で,容易に多種多様なKPI群のモニタリングが可能に。
10
ログインログ
ネイティブアプリ / ブラウザアプリ両方に対応
課金ログ
招待ログ
• iOS, Android のSDK,または Unity 向けのライブラリ
を通じてログを収集。
• ブラウザゲームはサーバーサイドに Fluentd ベー
スの TD-‐Agent を仕込んでストリーミング収集。
11
iOS, Android SDK によるログ収集
イベント発生後,すぐに送信
イベント発生後,すぐに送信
バッファリング
バッファリング
スケーラブルなトレジャー SDK受信サーバー トレジャークラウド
端末アプリから直接トレジャークラウドに蓄積され,かつストリーミングによってログを直ちに確認できる。
12
オンラインゲーミング:基本ログテンプレート
アクション名 (テーブル名)
主体ユーザーID タイムスタンプ 対象ユーザーID 値 数 大カテゴリ,カテゴリ, アイテム名
login uid :me -‐ -‐ -‐ -‐
pay uid :me -‐ price count category, sub_category, name
invite uid :me target_uid -‐ -‐ -‐
use_point / get_point
uid :me -‐ -‐ -‐ -‐
level_status uid :me -‐ value -‐ -‐
tutorial uid :me -‐ step -‐ -‐
13
オンラインゲーミング:基本ログテンプレート
アクション名 (テーブル名)
主体ユーザーID タイムスタンプ 対象ユーザーID 値 数 大カテゴリ,カテゴリ, アイテム名
login uid :me -‐ -‐ -‐ -‐
pay uid :me -‐ price count category, sub_category, name
invite uid :me target_uid -‐ -‐ -‐
use_point / get_point
uid :me -‐ -‐ -‐ -‐
level_status uid :me -‐ value -‐ -‐
tutorial uid :me -‐ step -‐ -‐
これらのログを出すように設定すれば必要な50近いKPIを算出可能。
uid, :me を含めばその他の項目は任意に
設定して良い。
上記にとらわれない,任意のログを収集でき
る拡張性をもつ。
14
ログ収集に関するポイント
• ログの「アクション名」とトレジャークラウドストレージの
「テーブル名」が対応
• 同じアクション名でも付与する項目は異なっていても問
題無い。(例えばlogin ログで新しく “event_id” という項
目を加えても問題無く蓄積され,かつ “event_id” に基
づく集計はその項目を持つレコードに対してのみ行わ
れる)
15
ログテンプレートに従ったデータ収集(ブラウザアプリ)
# Applica5on Ruby Code TD.event.post( ’login', { :uid => 123, :device => ’smart phone’, :5me => 138959673 }) TD.event.post( ’pay', { :uid => 123, :name => ’ItemA’, :sub_category => ’a’, :category => A, :count => 2, :price => 300, :5me => 138959673 }) TD.event.post( ’invite', { :uid => 123, :invited_uid => 456, :campaign_name => ’event2’, :5me => 138959673 })
※ 各言語向けに収集ツール Treasure Data Library を提供 Java, Ruby, PHP, Perl, Python, Scala, Node.js , JS Tag Library
Login テーブル Pay テーブル
Inviteテーブル ユーザー属性 情報テーブル
Treasure-‐Agent を通じて発生したログを常時トレジャークラウドにアップロード
ユーザーアクション (login, pay, invite,…)
アクションに付随する属性情報
(uid, :me, price,…)
16
ログテンプレートに従ったデータ収集(ネイティブアプリ)
# Android SDK View v = findViewById(R.id.bu[on); v.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { final Map event = new HashMap<String, Object>(); event.put(”uid", ”abcd"); event.put(”device", “android”); td.addEvent(”game", ”login", event); } });
Login テーブル Pay テーブル
Inviteテーブル ユーザー属性 情報テーブル
SDK を通じて発生したログを常時トレジャークラウドにアップロード
# iOS SDK -‐ (IBAc5on)clickBu[on:(id)sender { [[TreasureData sharedInstance] addEvent:@{ @”uid": @"foo bar", @”device": ‘iOS’ } database:@”game" table:@”login"]; }
17
KPI 計算
Login テーブル Pay テーブル
Inviteテーブル ユーザー属性 情報テーブル
データ連携
KPI: PV
KPI: ARPU
KPI: リテンション
異なるデータ間の連携と強力な並列分散処理技術で,大量ログから様々なKPIを算出。
18
ゲーム分析に特化したダッシュボードの提供 KPI: PV
KPI: ARPU
KPI: レベル分布
OEM提供するダッシュボードの1つ1つのウィジェットに1つのKPIが対応。ウィジェットに分析クエリを仕込むことによって自動的にデータが更新される。
19
Category KPI Example
Ac:veness ゲームをの活況度を判断するKPI群。 アクティブ ユーザー数,新規ユーザー数,etc…
Funnel ( Conversion ) Analysis コンバージョンまでの経路の離脱率を図るKPI群。 コンバージョン,チュートリアルのステップ毎の離脱度,etc…
Sales Revenue 課金周りのKPI群。 売り上げ,ARPU, ARPPU, etc…
Distribu:on ユーザー数や課金額の分布を様々なセグメントで切った分布。 課金額の分布,レベルの分布,所有ポイント数の分布,etc…
Inflow / Oujlow Equilibrium 流入と流出の平衡を見るためのKPI群。 仮想通貨の提供量/消費量,etc…
Reten:on 初回登録から再ログインまでの期間やリピート回数, etc…
これらのカテゴリーに属するKPI群を導入時から参照できるKPIテンプレートを用意
KPI カテゴリ
20
Ac:veness:ゲームの活況度合いに関するKPI群
←ダッシュボード ↓登録から初課金までの日数
↓ PV
21
Funnel Analysis:コンバージョンのボトルネックを調べる
←チュートリアル開始から登録(コンバージョン)までに至るステップで,どのステップが離脱率が高いのかを調べる。
22
Revenue:デイリー売上,ARPU
23
Distribu:on:月課金額やレベルに対する分布
↓ユーザーのレベル分布 ↓月次での課金額分布
24
Reten:on:Cohort Analysis
25
Discussion & Q and A