SlideShare a Scribd company logo
BigQueryで集計するシステムを
作って分かったKPI集計ツール作成
Aiming    
芝尾幸⼀一郎郎
/	
  55
ゲーム開発
2
華やかな世界
/	
  553
/	
  554
/	
  555
/	
  556
/	
  55
あまり⽬目⽴立立たない仕事
• ログ収集  
• データ分析  
• 課⾦金金  
• 認証
7
/	
  558
今回は⽬目⽴立立たない
仕事を紹介します
/	
  55
芝尾幸⼀一郎郎
• データ分析担当  
• ここ4年年はデータ分析  
• 個⼈人でもニコニコ動画
のランキングサイト
作ってます。  
• http://nico-‐‑‒ran.jp/  
• @shibacow
9
/	
  55
データ分析チーム
• 集計システム作成  3名  
• データ分析  1名  
• プロジェクトマネージャー  1名  
• プロダクトオーナー  2名
10
/	
  55
宣伝
• 本を書きました。  
• ゲーム開発が変わる!
Google  Cloud  
Platform  実践インフ
ラ構築
11
/	
  55
今回話す内容
• 集計システムを作成したので、その勘所を
紹介する  
• 集計システムを整備することでどのような
変化が起こったか  
• 今回はBQに対して突っ込んだ設計の話は
しません。
12
/	
  55
全社データ集計基盤
• 名称はMonolith  
• 全タイトルを横断的に集計  
• 個別の集計作成を防ぐ  
• 集計システムの品質を上げる  
• タイトル横断でKPIを⽐比較
13
/	
  55
実際に作った集計ツール(Monolith)
14
/	
  55
実際に作った集計ツール
15
/	
  55
実際に作った集計ツール
16
/	
  55
集計項⽬目
• AU  
• RDAU  
• FQ5  
• 新規  
• 継続率率率  
• ポイント消費  
• ポイント購⼊入  
• PU  
• ARPPU  
• 登録⽉月別AU  
• チュートリアル進捗  
• クエスト進捗  
• その他集計
17
/	
  55
システム概要
18
ログ一件一件
SQL発行&結果受け取り
集計システムの作成
/	
  55
データ集計環境構築の困難
• データが多い  
• データを集約するとミスに弱い  
• 再集計が⼤大変  
• 集計が試⾏行行錯誤しにくい  
• データが増えると集計が⻑⾧長時間  
• 導⼊入が⼤大変
20
/	
  55
欲しい集計システム
• データがいくらでも⼊入る  
• データを集約せず⽣生データを保持  
• 再集計が楽  
• 集計が試⾏行行錯誤しやすい  
• データが増えても集計レスポンスが速い  
• 導⼊入が楽
21
/	
  55
このような集計
• このような集計をするため(例例えばAU)に
どのようなシステムが考えられるか?
22
架空のグラフ
/	
  55
過去の集計システム
• MySQLを使ったシステム  
• Hadoopを使ったシステム
23
現在の集計システム
• BigQueryを使ったシステム
個人の経験に基づいてお話します
/	
  55
時系列列
24
2012年 2013年 2014年 2015年
MySQLシステム
Hadoop システム
BigQueryシステム
/	
  55
MySQL
• 代表的なRDBMS  
• ゲーム開発で⼀一般的に利利⽤用される  
• ノウハウは豊富
25
/	
  55
MySQL
• ログを集約して保存  
• 事前集計して可視化  
• 過去集計分は保存し該当期間のみ集計
26
/	
  55
MySQL
• 重複するログを集約後、集約前のレコード
を削除する(ログ量量が多いので)。
27
ユーザーID ログイン時間
1 2015/1/1 1:04
1 2015/1/1 1:06
2 2015/1/1 1:10
1 2015/1/1 1:14
ユーザーID
ログイン時間(1時
間で丸める)
ログイン回数
1 2015-‐‑‒01-‐‑‒01  01 3
2 2015-‐‑‒01-‐‑‒01  01 2
/	
  55
不不具合
• ログ送信が遅延すると、レコードを集約出来
ない(再集計が煩雑)。集計に依存関係がある  
• MySQLは数千万レコードを超えると集約関
数を使った時に集計時間が予測できなくなっ
た  
• 参照カラムを間違える等、SQL修正で過去分
再集計
28
/	
  55
Hadoop
• Java製分散環境集計フレームワーク  
• BigDataの処理理を得意とする  
• 複数台のマシンを利利⽤用して並列列に処理理が可
能  
• ノウハウは最近充実
29
/	
  55
Hadoop
• ログを⼀一件⼀一件保持  
• 事前集計して可視化
30
/	
  55
変更更すると
• 数億件⼊入れてもレスポンスは遅くなりにく
い(数分)。  
• SQLは過去分も集計するので、次回定期集
計で修正される。  
• ⼀一件⼀一件の⽣生ログが残っているのでログ遅
延が起こっても、再集計が楽。
31
/	
  55
欲しい集計システム
• ◯データがいくらでも⼊入る  
• ◯データを集約せず⽣生データを保持  
• ◯再集計が楽  
• 集計が試⾏行行錯誤しやすい  
• データが増えても集計レスポンスが速い  
• 導⼊入が楽
32
/	
  55
それでも残る不不満
• Hadoop(Hive)数億件でも集計に数分だ
が、数万件でも集計に数分  
• 集計に時間がかかるので、試⾏行行錯誤しづら
い  
• 集計中に寝てしまう
33
/	
  55
BigQuery
• Google製データ分析環境  
• 数千台のマシンに分散してデータを保存  
• 数千台のマシンを使って集計  
• カラム型ストレージで⾼高い圧縮率率率  
• ノウハウまだなし
34
/	
  55
BigQueryに変更更
• ⼀一件⼀一件の⽣生ログを保存  
• リクエスト毎に都度度集計
35
/	
  55
集計のSQL(架空のSQL)
36
SELECT	
  world,	
  
date_format(time,'%Y-­‐%m-­‐%d')	
  as	
  date,	
  
count_distinct(user_id)	
  as	
  dau	
  
FROM	
  [table20150101-­‐20150131]	
  
GROUP	
  BY	
  world,date	
  
ORDER	
  BY	
  world,date;
SQLはイメージです
/	
  55
この様に集計される
37
このグラフは	
  
イメージです
/	
  55
集計システムのポイント
• 何も考えずに全てのレコードが集計対象  
• キャッシュや事前集計などをせず、そのま
ま全て集計  
• ⾃自前で環境を構築せず、Googleの肩に乗
る
38
/	
  55
若若⼲干盛りました
• 実際には、⼀一度度集計したグラフはその後数
時間キャッシュ化  
• 基本的なKPIは事前に集計  
• 基本的な構成は、シンプルなまま
39
/	
  55
改善したこと
• 膨⼤大なレコードでも数秒で集計  
• ログ遅延が起きても、遅れてテーブルに⼊入
りさえすれば⾃自動で再集計  
• SaaSは楽  
• 再集計がやりやすい(冪等性が担保される
様に実装した)
40
/	
  55
欲しい集計システム
• ◯いくらでもデータが⼊入る  
• ◯データを集約せず⽣生データから集計する  
• ◯再集計が楽  
• ◯集計が、試⾏行行錯誤しやすい  
• ◯データが増えても集計レスポンスが速い  
• 導⼊入が楽
41
/	
  55
DEMO(13億件集計)
42
実際のゲームのログ 13億件を集計
/	
  5543
DEMO
/	
  55
教訓
• ログ送信遅延や、参照カラム間違えは起こ
るので、エラー耐性のあるシステムを作
る。  
• 集計の試⾏行行錯誤は多いので、レスポンスタ
イムは⾺馬⿅鹿鹿にできない。  
• オンプレミスはお勧めしない
44
/	
  55
⽉月額コスト
• 数千億レコード  100万以内  
• 数億レコード  10万以内  
• 数千万レコード  数千円
45
データ集計環境が整備されて何が起こっ
たか?
/	
  55
SQL勉強会
• ⾃自分たちでSQLを書いて、ゲーム内のデー
タを取る機運が⾼高まった。  
• SQL勉強会を、⾮非エンジニア向けに⾏行行っ
た。 47
/	
  55
データ集計以外の拡がり
• データ集計以外にも活⽤用され始める  
• 企画による  
• ⾏行行動履履歴  
• サポート業務の利利⽤用  
• アイテム操作履履歴・戦闘履履歴
48
/	
  55
データ分析チーム以外の活躍
• ⼤大阪スタジオのwebエンジニアがデータ可
視化についてレクチャー
49
/	
  55
データ分析に対する意識識の⾼高まり
• どの様にデータを分析したら良良いか、互い
にSlack上で試⾏行行錯誤を始めた。  
• レスポンス速度度が速く、試⾏行行錯誤しやすい
50
/	
  55
企画・運営が⾃自分でSQLを使う
• BigQueryにしたことで  
• 本番DBに悪影響がない  
• SQL記述ミスでデータを消さない  
• と案内した  
• 企画・運営が⾃自分でデータを分析する際に
不不安に思うことを減らせる
51
/	
  55
データを⾒見見る⽂文化
• データ集計環境を整備することで、企画・
運営が⾃自分たちで集計をしたり、タイトル
のエンジニアが主体的にデータ分析の仕⽅方
をレクチャーしたり、データを⾒見見て⾏行行動を
起こす⽂文化が根付きつつある。
52
/	
  55
終わり
• Aimingでは共にデータ分析をしてくれる
⼈人を募集しています。  
• http://aiming-‐‑‒inc.com/ja/jobs/  
• Aimingで検索索して下さい
53
/	
  55
宣伝
• ゲーム開発が変わる!
Google  Cloud  
Platform  実践インフ
ラ構築  
• BQのスキーマのガイ
ドラインや、テーブル
分割の⽅方法はこちらに
載ってます
54
/	
  55
本の内容
• データ分析環境の紹介    
• -‐‑‒  過去の分析環境の紹介  
• -‐‑‒  BigQueryを使った新しい分析環境  
• -‐‑‒  データ分析システムの⽐比較  
• -‐‑‒  データ分析環境を作る  
• -‐‑‒  実際にログを収集する  
• -‐‑‒  実際に集計、可視化する  
• -‐‑‒  収集したデータの活⽤用とKPI  
• -‐‑‒  BigQueryのコスト  
• -‐‑‒  SQL実例例あれこれ  
• -‐‑‒  データ分析環境を作ってみての変化  
• -‐‑‒  まとめ
55

More Related Content

PDF
ソーシャルゲームのためのデータベース設計
PPTX
分散システムについて語らせてくれ
PDF
WebSocket / WebRTCの技術紹介
PDF
SQLアンチパターン~スパゲッティクエリ
PPTX
本当は恐ろしい分散システムの話
PPTX
機械学習の精度と売上の関係
PDF
エンジニアも知っておきたいAI倫理のはなし
PDF
PlaySQLAlchemy: SQLAlchemy入門
ソーシャルゲームのためのデータベース設計
分散システムについて語らせてくれ
WebSocket / WebRTCの技術紹介
SQLアンチパターン~スパゲッティクエリ
本当は恐ろしい分散システムの話
機械学習の精度と売上の関係
エンジニアも知っておきたいAI倫理のはなし
PlaySQLAlchemy: SQLAlchemy入門

What's hot (20)

PDF
君はyarn.lockをコミットしているか?
PDF
研究分野をサーベイする
PPTX
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
PDF
なぜ「マイクロサービス“化”」が必要なのか
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
マッチングサービスにおけるKPIの話
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
PDF
ドメイン駆動設計サンプルコードの徹底解説
PPTX
ChatGPT Impact - その社会的/ビジネス価値を考える -
PDF
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
PDF
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
PDF
ソフトウェアにおける 複雑さとは何なのか?
PDF
TDD のこころ
PPTX
アプリ起動時間高速化 ~推測するな、計測せよ~
PDF
超実践 Cloud Spanner 設計講座
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
君はyarn.lockをコミットしているか?
研究分野をサーベイする
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
なぜ「マイクロサービス“化”」が必要なのか
マルチテナント化で知っておきたいデータベースのこと
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
ネットワーク ゲームにおけるTCPとUDPの使い分け
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
マッチングサービスにおけるKPIの話
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
ドメイン駆動設計サンプルコードの徹底解説
ChatGPT Impact - その社会的/ビジネス価値を考える -
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
ソフトウェアにおける 複雑さとは何なのか?
TDD のこころ
アプリ起動時間高速化 ~推測するな、計測せよ~
超実践 Cloud Spanner 設計講座
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
Ad

Similar to BigQueryで集計するシステムを作って分かったKPI集計ツール作成 (20)

PDF
ログにまつわるエトセトラ
PDF
Logにまつわるエトセトラ
PDF
GoでシュッとWebスクレイピングする
PPTX
Chainerで学ぶdeep learning
PPTX
続・Freeプランで緩く監視させてもらってる話など
PDF
JAWS DAYS 2022
PDF
面白いは正義
PDF
Herokuの新料金について
PPTX
EmbulkとDigdagとデータ分析基盤と
PPTX
EmbulkとDigdagとデータ分析基盤と
PDF
DynamoDBを利用したKPI保存システム
PDF
BigQueryのちょっとした話 #phpblt
PDF
Google Cloud Platformでソーシャルゲームを1本出してみた!
PDF
広告ログの解析システム
PDF
ゲーム会社で
ゲーム以外のことを開発してる話
PDF
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
PDF
ゲームの裏側を支える人たちの裏側
PDF
楽天のSplunk as a service
PDF
Pivotal Trackerでアジャイルなプロジェクト管理
PDF
データプロダクトを支えるビッグデータ基盤
ログにまつわるエトセトラ
Logにまつわるエトセトラ
GoでシュッとWebスクレイピングする
Chainerで学ぶdeep learning
続・Freeプランで緩く監視させてもらってる話など
JAWS DAYS 2022
面白いは正義
Herokuの新料金について
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
DynamoDBを利用したKPI保存システム
BigQueryのちょっとした話 #phpblt
Google Cloud Platformでソーシャルゲームを1本出してみた!
広告ログの解析システム
ゲーム会社で
ゲーム以外のことを開発してる話
高速処理と高信頼性を両立し、ペタバイト級の多種大量データを蓄積する、ビッグデータ/ IoT時代のデータベースとは??
ゲームの裏側を支える人たちの裏側
楽天のSplunk as a service
Pivotal Trackerでアジャイルなプロジェクト管理
データプロダクトを支えるビッグデータ基盤
Ad

More from (shibao)芝尾 (kouichiro)幸一郎 (20)

PDF
PPTX
可視化法学(Found it project#9)
PPSX
可視化法学(studycode編)
PPSX
可視化法学 smips登壇
PPSX
可視化法学(Linked Open Data Challenge 2016)授賞式プレゼン
PPSX
可視化法学(ニコニコ学会データ研究会第9回)
PDF
可視化法学c91紹介リーフレット
PDF
可視化法学ポスター超会議2016 チラシ
PPSX
可視化法学-大和超券ステージ
PPSX
Bq sushi(BigQuery lessons learned)
PDF
Re dashで作るニコニコデータセット分析環境
PPTX
AimingでGoogle Cloud Platformの利用について
PDF
ニコニコデータビューアー・改
PDF
ニコニコ動画データセット分析環境作ってみたその後
PDF
ニコニコデータセット 分析環境作ってみた-ニコニコデータデータ分析研究会
PDF
世界のiPhoneアプリランキング比較してみた
PDF
第一回ニコニコデータ分析研究会発表資料-世界のYoutube
PDF
ニコニコ学会β発表資料
PDF
可視化法学(Found it project#9)
可視化法学(studycode編)
可視化法学 smips登壇
可視化法学(Linked Open Data Challenge 2016)授賞式プレゼン
可視化法学(ニコニコ学会データ研究会第9回)
可視化法学c91紹介リーフレット
可視化法学ポスター超会議2016 チラシ
可視化法学-大和超券ステージ
Bq sushi(BigQuery lessons learned)
Re dashで作るニコニコデータセット分析環境
AimingでGoogle Cloud Platformの利用について
ニコニコデータビューアー・改
ニコニコ動画データセット分析環境作ってみたその後
ニコニコデータセット 分析環境作ってみた-ニコニコデータデータ分析研究会
世界のiPhoneアプリランキング比較してみた
第一回ニコニコデータ分析研究会発表資料-世界のYoutube
ニコニコ学会β発表資料

Recently uploaded (9)

PDF
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
PDF
【QYResearch】グローバル農業機械市場の動向分析と成長戦略に関する総合調査報告
PDF
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
PDF
【QYResearch】グローバルコネクタ市場の動向と将来展望に関する詳細な分析報告
PDF
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
PDF
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
PDF
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
PDF
【QYResearch】グローバル磁性材料産業チェーンの構造分析と市場動向の詳細解説
PDF
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
【QYResearch】グローバル農業機械市場の動向分析と成長戦略に関する総合調査報告
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
【QYResearch】グローバルコネクタ市場の動向と将来展望に関する詳細な分析報告
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
【QYResearch】グローバル磁性材料産業チェーンの構造分析と市場動向の詳細解説
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research

BigQueryで集計するシステムを作って分かったKPI集計ツール作成