SparkやBigQueryなどを用いたモバイルゲーム分析環境

58
Copyright 2016 CYBIRD Co., Ltd. SparkBigQueryなどを用いた モバイルゲーム分析環境 株式会社サイバード 小松 裕一 ハッシュタグ #devsumiD セッションID 18-D-L

Transcript of SparkやBigQueryなどを用いたモバイルゲーム分析環境

Page 1: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Copyright 2016 CYBIRD Co., Ltd.

SparkやBigQueryなどを用いた モバイルゲーム分析環境

株式会社サイバード

小松 裕一

ハッシュタグ : #devsumiD セッションID : 18-D-L

Page 2: SparkやBigQueryなどを用いたモバイルゲーム分析環境

自己紹介

名前:小松 裕一

所属:株式会社サイバード

ビジネス戦略統括本部

データ戦略統括部

仕事:分析環境の構築

データ処理全般

出身:宮城県

分析処理でよく使うもの:Hive、Spark、MySQL、BigQuery、

Embulk、Perl、Scalaなど

Page 3: SparkやBigQueryなどを用いたモバイルゲーム分析環境

会社紹介

Page 4: SparkやBigQueryなどを用いたモバイルゲーム分析環境

女性向け恋愛ゲーム -イケメンシリーズ-

会社紹介

• イケメン達との恋愛ストーリーを楽しめる恋愛ゲーム

• 7タイトル、7プラットフォーム、156カ国で配信

• 累計会員数1,200万人

Page 5: SparkやBigQueryなどを用いたモバイルゲーム分析環境

• 3DCGのリッチな試合シーンが楽しめる本格派サッカークラブ育成ゲーム

• 世界140カ国配信、累計300万DL

• 香港ではAppStoreセールスランキングNo.1獲得

BFB2016

会社紹介

Page 6: SparkやBigQueryなどを用いたモバイルゲーム分析環境

情報コンテンツ

会社紹介

Page 7: SparkやBigQueryなどを用いたモバイルゲーム分析環境

チーム紹介

Page 8: SparkやBigQueryなどを用いたモバイルゲーム分析環境

多様なメンバーで構成され、必要なスキルを補い合っています

チーム紹介

アナリスト - マーケティング部門出身 - Webマーケティング知識 - Excel,SPSS,R

アナリスト - ゲームプランナ出身 - 統計学,データ処理 - SQL,R,Excel

データ分析エンジニア兼BI開発エンジニア - バイオインフォマティクス業界出身 - 機械学習,統計学,フロントエンド開発 - Java,Python,JavaScript

データ分析エンジニア - BtoBソリューション部門出身 - システム設計,Hadoop関連技術,DB管理 - Perl,PHP,Scala

データ分析エンジニア - ゲーム開発専門学校出身 - Hadoop関連技術,DB管理,機械学習 - Python

チームリーダ兼アナリスト - 経営企画出身(M&A,事業戦略策定,等) - 問題解決,ビジネス知識 - Excel,R,SPSS

アナリスト - マーケティングリサーチ会社出身 - 統計学,アンケートリサーチ - Excel,SPSS

ビジネス力

データサイエンス力 (統計学/機械学習,等)

データエンジニアリング力

出所:データサイエンス協会「データサイエンティストに求められるスキルセット」より引用

スキルセット説明

Page 9: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Agenda

1. 分析環境の概要

1-1. 概要図

1-2. 用途

2. データ処理の詳細

2-1. BIツール(Cynapse)

2-2. アドホック分析(エンジニア利用)

2-3. アドホック分析(アナリスト利用)

3. まとめと今後の展望

Page 10: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Agenda

1. 分析環境の概要

1-1. 概要図

1-2. 用途

2. データ処理の詳細

2-1. BIツール(Cynapse)

2-2. アドホック分析(エンジニア利用)

2-3. アドホック分析(アナリスト利用)

3. まとめと今後の展望

Page 11: SparkやBigQueryなどを用いたモバイルゲーム分析環境

分析環境はAWS及びGCPで構成されています

1. 分析環境の概要 1-1. 概要図

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

Page 12: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Agenda

1. 分析環境の概要

1-1. 概要図

1-2. 用途

2. データ処理の詳細

2-1. BIツール(Cynapse)

2-2. アドホック分析(エンジニア利用)

2-3. アドホック分析(アナリスト利用)

3. まとめと今後の展望

Page 13: SparkやBigQueryなどを用いたモバイルゲーム分析環境

分析環境の用途は主に3つです

1. 分析環境の概要 1-2. 用途

1. BIツール(Cynapse)

=> 毎日、KPIなどの指標をモニタリング

(e.g. ログイン頻度別にDAUを切り分けることで、広告の成果を測る)

2. アドホック分析(エンジニア利用)

=> 大量データの集計

(e.g. レコード数の多いテーブルのJOIN)

3. アドホック分析(アナリスト利用)

=> ユーザごとの行動履歴から知見を得る

(e.g. 特定のイベントや行動を経験したユーザの課金率は高い)

Page 14: SparkやBigQueryなどを用いたモバイルゲーム分析環境

CynapseではKPIを可視化し、施策に役立てています

1. 分析環境の概要 1-2. 用途

• 自社開発のモニタリングツール

• データを可視化し、複数のタイトルの状況

を複数の指標で確認

Page 15: SparkやBigQueryなどを用いたモバイルゲーム分析環境

CynapseはEC2とRDSで構成されています

1. 分析環境の概要 1-2. 用途

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

Page 16: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(エンジニア利用)では主に2つの用途で活用しています

1. 分析環境の概要 1-2. 用途

• 過去ログの集計

S3に格納された過去ログを基に、ある特定時点のデータを集計

=>現在と過去の状態比較による効果測定、施策改善

• RDBでは処理が難しい大量データの集計

RDBに格納されたレコード数の多いテーブルのJOINなどを実行

=>分析対応の即時性向上

Page 17: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(エンジニア利用)では要件に応じて最適な処理手法を選択し、利用しています

1. 分析環境の概要 1-2. 用途

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

Page 18: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(アナリスト利用)では様々な用途で活用しています

1. 分析環境の概要 1-2. 用途

• ユーザ行動分析

e.g. タイトルをまたいでプレイしているユーザの動向を分析

=> 改善施策や新規タイトルのアイデア

• テキストマイニング

e.g. ユーザのアクション情報をもとにクラスタリングし、

クラスタごとの単語(N-gram)の頻度を比較

=> 新規開発のアイデアや改修の優先順位付け

江戸風タイトル

欧州風タイトル

幕末風タイトル

20%

80%

※数値は仮のものです

Page 19: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(アナリスト利用)ではBigQuery、GCS及びEC2に構築したテキストマイニングサーバを利用しています

1. 分析環境の概要 1-2. 用途

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

Page 20: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Agenda

1. 分析環境の概要

1-1. 概要図

1-2. 用途

2. データ処理の詳細

2-1. BIツール(Cynapse)

2-2. アドホック分析(エンジニア利用)

2-3. アドホック分析(アナリスト利用)

3. まとめと今後の展望

Page 21: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Cynapseに表示するデータはS3→EMR→RDSで処理し、KPI毎に最適な形でまとめています

2. データ処理の詳細 2-1. BIツール(Cynapse)

状況に応じてSQL、スクリプトで処理

Amazon S3 Amazon EMR Amazon RDS

S3にログデータを集約

Sparkでデータを加工

RDSに処理データを格納

Page 22: SparkやBigQueryなどを用いたモバイルゲーム分析環境

各コンテンツのログデータは全タイトル共通のフォーマット、 また下記のタイミングでS3に収集しています

2. データ処理の詳細 2-1. BIツール(Cynapse)

基本的には

前日の更新データを毎日

分析要件によっては

1時間毎

⇒イベント効果は日単位、もしくは時間単位で十分に測定することができる

Page 23: SparkやBigQueryなどを用いたモバイルゲーム分析環境

共通フォーマットを使用する利点は下記2つです

2. データ処理の詳細 2-1. BIツール(Cynapse)

・汎用的なバッチを作成することで新タイトルリリース時の対応がほぼ必要なくなる

⇒リリース直後から分析が開始できる [よくある問題] 複雑なデータ構造のためKPIを取得する分析実装が間に合わず、施策投入のタイミングを逃してしまう

・必要なデータの所在や形式を特定するのが容易になる

⇒アドホック分析や、業務引き継ぎ等で無駄な作業がなくなる [よくある問題] 分析要件に応じたデータを探すのが一苦労

Page 24: SparkやBigQueryなどを用いたモバイルゲーム分析環境

ゲーム事業では主に5種類のログを利用しています

2. データ処理の詳細 2-1. BIツール(Cynapse)

ユーザプロフィール

ログイン

課金

アイテム

ガチャ

項目

共通ID

ユーザID

レベル

課金通貨の保持量

非課金通貨の保持量

国コード

チュートリアルの位置

登録日時

更新日時

タイトルID

プラットフォーム

OSバージョン

機種

推奨機種種別

Page 25: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Cynapseに表示するログデータをEMR(Spark)で処理する場合は下記フローとなります

2. データ処理の詳細 2-1. BIツール(Cynapse)

(1)EMR(Spark)を起動、及びJSONで定義した処理((2)以降)を実行

(2)Sparkクラスタに設定ファイル、実行ファイルをS3から展開

(3)前処理及び集計処理実行

(4)処理完了(S3に結果を出力) s3://XXXXXX/XXX/OUTPUT/retention/20160101/xxxxxxx

aws emr create-cluster --name "spark-cynapse-fmt"¥

--release-label emr-4.2.0¥

--log-uri "s3://xxxxxxx/emr_logs/"¥

--enable-debugging¥

--applications Name=Hadoop Name=Hive Name=Spark¥

--ec2-attributes KeyName=xxxxxx¥

--instance-type m3.xlarge¥

--instance-count 3¥

--use-default-roles¥

--auto-terminate¥

--steps "file:///xxxx/xxxx/xxxx/daily_batch.json"

[ { "Name": "Download Files", "Type": "Spark", "ActionOnFailure": "CONTINUE", "Args": [ "--deploy-mode", "cluster", "s3://xxxxx/xxxxx/download_files.py" ] }, ・ ・ ・ { "Name": "Sumup", "Type": "Spark", "ActionOnFailure": "CONTINUE", "Args": [ "--deploy-mode", "client", "file:///xxxxx/xxxxx/run.py" ] } ]

Page 26: SparkやBigQueryなどを用いたモバイルゲーム分析環境

EMRで処理されたデータはKPI毎にRDSに格納しています

2. データ処理の詳細 2-1. BIツール(Cynapse)

カラム

集計日 PRI

登録日 PRI

DAU

課金UU

売上

コンテンツコード PRI

プラットフォーム PRI

推奨端末 PRI

継続日数別KPI 基本KPI

レベル別KPI ログイン頻度別KPI

累積課金別KPI

Page 27: SparkやBigQueryなどを用いたモバイルゲーム分析環境

集計データからは下記のような指標が得られます

2. データ処理の詳細 2-1. BIツール(Cynapse)

• レベル

• 累積課金

• ログイン頻度

• 継続日数

など

ユーザセグメント毎にDAU、課金率、ARPPUなどを取得

特定のセグメントの 課金率が上昇している

Page 28: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Agenda

1. 分析環境の概要

1-1. 概要図

1-2. 用途

2. データ処理の詳細

2-1. BIツール(Cynapse)

2-2. アドホック分析(エンジニア利用)

2-3. アドホック分析(アナリスト利用)

3. まとめと今後の展望

Page 29: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(エンジニア利用)の用途

2. データ処理の詳細 2-2. アドホック分析(エンジニア利用)

• 過去ログの集計

S3に格納された過去ログを基に、ある特定時点のデータを集計

=>現在と過去の状態比較による効果測定、施策改善

• RDBでは処理が難しい大量データの集計

RDBに格納されたレコード数の多いテーブルのJOINなどを実行

=>分析対応の即時性向上

Page 30: SparkやBigQueryなどを用いたモバイルゲーム分析環境

S3に格納された過去ログは主にEMR(Spark)で集計します

2. データ処理の詳細 2-2. アドホック分析(エンジニア利用)

aws emr create-cluster --name "sparktest"¥

--release-label emr-4.2.0¥

--applications Name=Spark¥

--use-default-roles¥

--ec2-attributes KeyName=xxxxxxx¥

--instance-type m3.xlarge¥

--instance-count 1

(1)EMR(Sparkクラスタ)を起動

(2)SSHログイン

(3)Scalaの場合はspark-shell、Pythonの場合はpysparkを起動

aws emr ssh --cluster-id j-XXXXXXXXXXX ¥

--key-pair-file ~/.ssh/XXXXXXXX.pem ¥

--region ap-northeast-1

spark-shell もしくは pyspark

Page 31: SparkやBigQueryなどを用いたモバイルゲーム分析環境

実行サンプル(Scala)

2. データ処理の詳細 2-2. アドホック分析(エンジニア利用)

> spark-shell

// ケースクラス定義

case class Login(user_id: Int, regist_dt: String, level: Int)

case class Sales(user_id: Int, item_id: Int, price: Int, regist_dt: String)

// データ取り込み(RDD)

val loginRDD = sc.textFile("s3://xxxxxxxxx/xxx/xxx/login/201601/*")

val salesRDD = sc.textFile("s3://xxxxxxxxx/xxx/xxx/sales/*")

// データフレーム作成

val loginDF = loginRDD.map{ data =>

val tmpData = data.split("¥t")

val user_id = tmpData(0).toInt

val regist_dt = tmpData(1)

val level = tmpData(4).toInt

Login(user_id, regist_dt, level)

}.toDF

val salesDF = salesRDD.map{ data =>

val tmpData = data.split("¥t")

val user_id = tmpData(0).toInt

val item_id = tmpData(1).toInt

val price = tmpData(2).toInt

val regist_dt = tmpData(4)

Sales(user_id, item_id, price , regist_dt)

}.toDF

// テーブル登録

loginDF.registerTempTable("login_table")

salesDF.registerTempTable("sales_table")

// クエリ発行

val resultQuery = sqlContext.sql(s"""

SELECT login.user_id,SUM(sales.price)

FROM login_table login JOIN sales_table sales ON (login.user_id = sales.user_id)

WHERE login.regist_dt LIKE '2016-01-01%'

AND login.level = 100

AND sales.regist_dt LIKE '2015-12%'

GROUP BY login.user_id

""")

// 結果表示

resultQuery.show

読み込むデータのcaseクラスを定義

S3からデータを取り込みRDDを生成

RDDからDataFrameを生成

DataFrameを一時テーブルに登録

sqlメソッド(Spark SQL)でクエリを発行

結果を表示

2016/1/1にログインしたレベル100のユーザが2015/12に購入した金額の集計

Page 32: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(エンジニア利用)の用途

2. データ処理の詳細 2-2. アドホック分析(エンジニア利用)

• 過去ログの集計

S3に格納された過去ログを基に、ある特定時点のデータを集計

=>現在と過去の状態比較による効果測定、施策改善

• RDBでは処理が難しい大量データの集計

RDBに格納されたレコード数の多いテーブルのJOINなどを実行

=>分析対応の即時性向上

Page 33: SparkやBigQueryなどを用いたモバイルゲーム分析環境

処理するRDBのデータはBigQueryに転送してクエリを実行します EmbulkでBigQueryにデータを転送する場合の詳細は下記をご参照ください

2. データ処理の詳細 2-2. アドホック分析(エンジニア利用)

Qiita:「EmbulkとBigQueryが黄金コンビすぎる話」

http://qiita.com/yuichi_komatsu/items/3aae65c362b2a57f6fbf

Page 34: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Agenda

1. 分析環境の概要

1-1. 概要図

1-2. 用途

2. データ処理の詳細

2-1. BIツール(Cynapse)

2-2. アドホック分析(エンジニア利用)

2-3. アドホック分析(アナリスト利用)

3. まとめと今後の展望

Page 35: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(アナリスト利用)の用途

2. データ処理の詳細 2-3. アドホック分析(アナリスト利用)

• ユーザ行動分析

タイトルをまたいでプレイしているユーザの動向を分析

=> 改善施策や新規タイトルのアイデア

• テキストマイニング

ユーザのアクション情報をもとにクラスタリングし、

クラスタごとの単語(N-gram)の頻度を比較

=> 新規開発のアイデアや改修の優先順位付け

Page 36: SparkやBigQueryなどを用いたモバイルゲーム分析環境

使用するデータは下記の手順でBigQueryに格納しています

2. データ処理の詳細 2-3. アドホック分析(アナリスト利用)

• テーブルは日付単位で分ける (コンテンツコード_YYYYMMDD)

(1)S3からGCSにデータコピー(google-cloud-sdkを利用)

※赤字部分はスクリプトで動的に変更

(2)GCSからBigQueryにデータをロード(google-cloud-sdkを利用)

※赤字部分はスクリプトで動的に変更

gsutil -m cp s3://xxxxxx/<コンテンツID>/<テーブル名>/<YYYYMM>/*<YYYYMMDD>* gs://xxxxxx/<コンテンツID>/<テーブル名>/<YYYYMM>/<YYYYMMDD>/

bq load --source_format=CSV --field_delimiter=‘¥t’ <データセット名>.<コンテンツID>_<YYYYMMDD> gs://xxxxxxx/<コンテンツID>/<テーブル名>/<YYYYMM>/<YYYYMMDD>/* /home/xxxx/batch/gcp/fmt/schema/<フォーマットバージョン>/<テーブル名>.json

[ { "name": "user_id", "type": "INTEGER" }, ・ ・ ・ { "name": "regist_date", "type": "STRING" } ]

[ポイント]

JSONでスキーマ定義

Page 37: SparkやBigQueryなどを用いたモバイルゲーム分析環境

実行サンプル(BigQuery)

2. データ処理の詳細 2-3. アドホック分析(アナリスト利用)

SELECT

a.user_id,

SUM(b.price)

FROM

TABLE_QUERY(login,'REGEXP_MATCH(table_id, r"^aaa_20160101")') a

JOIN EACH

TABLE_QUERY(sales,'REGEXP_MATCH(table_id, r"^aaa_201512")') b

ON

a.user_id = b.user_id

GROUP EACH BY

a.user_id;

• 日付分割されたテーブルを正規表現で必要な単位に連結

⇒BiqQueryは従量課金のため無駄なデータ走査を発生させない

[ポイント]

2016/1/1にログインしたユーザが2015/12に購入した金額の集計

Page 38: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(アナリスト利用)の用途

2. データ処理の詳細 2-3. アドホック分析(アナリスト利用)

• ユーザ行動分析

タイトルをまたいでプレイしているユーザの動向を分析

=> 改善施策や新規タイトルのアイデア

• テキストマイニング

ユーザのアクション情報をもとにクラスタリングし、

クラスタごとの単語(N-gram)の頻度を比較

=> 新規開発のアイデアや改修の優先順位付け

Page 39: SparkやBigQueryなどを用いたモバイルゲーム分析環境

EC2上に下記のような構成のテキストマイニング環境を構築しています

2. データ処理の詳細 2-3. アドホック分析(アナリスト利用)

• RMeCab + Rstudio

=> EC2上に構築、アナリストがブラウザから直接利用

• 辞書(Wikipediaのタイトル + オリジナル単語で作成)

=> オリジナルに作成しているもの(ゲームの専門用語など)は定期的に更新

Page 40: SparkやBigQueryなどを用いたモバイルゲーム分析環境

単語の出現頻度をRMeCabで集計するサンプル

2. データ処理の詳細 2-3. アドホック分析(アナリスト利用)

(1)単語の出現頻度を計算する。

q2_words <- RMeCabFreq("q2.txt")

(2)結果表示を「名詞」、「動詞」、「形容詞」だけにする。

q2_words_results <- q2_words[(q2_words$Info1 == "名詞" | q2_words$Info1 == "動詞" | q2_words$Info1 == "形容詞"),]

(3)件数が多いものから降順にソートする。

q2_words_sort <- q2_words_results[order(-q2_words_results$Freq),]

(4)上位50件を表示

head(q2_words_sort,50)

Page 41: SparkやBigQueryなどを用いたモバイルゲーム分析環境

連続する単語の出現頻度をRMeCabで集計するサンプル (3単語を集計)

2. データ処理の詳細 2-3. アドホック分析(アナリスト利用)

(1)出現頻度を計算する。

q2_3gram <- Ngram("q2.txt", type=1, pos=c("名詞","動詞","形容詞"), N=3)

(2)件数が多いものから降順にソートする。

q2_3gram_sort <- q2_3gram[order(-q2_3gram$Freq),]

(3)上位50件を表示

head(q2_3gram_sort,50)

[アバター-保存-数] 1000

[キャラ-本編-配信] 900

[他-イケメン-シリーズ] 800

[ほしい-衣装-箱] 750

[早い-配信-する] 500

(e.g. 要望アンケート)

Page 42: SparkやBigQueryなどを用いたモバイルゲーム分析環境

Agenda

1. 分析環境の概要

1-1. 概要図

1-2. 用途

2. データ処理の詳細

2-1. BIツール(Cynapse)

2-2. アドホック分析(エンジニア利用)

2-3. アドホック分析(アナリスト利用)

3. まとめと今後の展望

Page 43: SparkやBigQueryなどを用いたモバイルゲーム分析環境

分析環境の概要 - AWSとGCPで構築

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

Page 44: SparkやBigQueryなどを用いたモバイルゲーム分析環境

分析環境の概要 - 用途① BIツール(Cynapse)

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

Page 45: SparkやBigQueryなどを用いたモバイルゲーム分析環境

分析環境の概要 - 用途② アドホック分析(エンジニア利用)

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

Page 46: SparkやBigQueryなどを用いたモバイルゲーム分析環境

分析環境の概要 - 用途③ アドホック分析(アナリスト利用)

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

Page 47: SparkやBigQueryなどを用いたモバイルゲーム分析環境

BIツール(Cynapse)におけるデータ処理 - データは共通フォーマットを利用

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

共通フォーマット

Page 48: SparkやBigQueryなどを用いたモバイルゲーム分析環境

BIツール(Cynapse)におけるデータ処理 - データはS3に蓄積、EMR(Spark)で処理し、結果をRDSに格納

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

蓄積

処理

格納

Page 49: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(エンジニア利用)におけるデータ処理 - S3の過去データはEMR(Spark)で処理

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

過去データ集計

Page 50: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(エンジニア利用)におけるデータ処理 - RDBの大量データはEmbulkでBigQueryに転送して処理

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP RDBの大量データ処理

Page 51: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(アナリスト利用)におけるデータ処理 - S3のデータをGCSに転送

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

データコピー

gsutilコマンド

Page 52: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(アナリスト利用)におけるデータ処理 - GCSのデータをBigQueryにロード

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP データロード

bqコマンド

テーブルは 日付単位で作成

Page 53: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(アナリスト利用)におけるデータ処理 - ユーザ行動分析はBigQueryで実行

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP ユーザ行動分析

Page 54: SparkやBigQueryなどを用いたモバイルゲーム分析環境

アドホック分析(アナリスト利用)におけるデータ処理 - テキストマイニングサーバはEC2上に構築

3. まとめと今後の展望

Amazon RDS

Amazon EMR

Amazon S3

DB

WEB/アプリ

データ転送用

データフロー

処理コマンド

分析環境 各サービス

アドホック分析 (エンジニア利用)

Amazon EC2

Google BigQuery Google Cloud Storage

アドホック分析 (アナリスト利用)

Amazon EC2

GCP

テキストマイニング RMeCab+RStudio

辞書は Wikipediaのタイトル +オリジナル単語

Page 55: SparkやBigQueryなどを用いたモバイルゲーム分析環境

今後は下記の実施を計画しています

3. まとめと今後の展望

• Spark進化への追随

• リアルタイム処理の導入

• 機械学習の積極的な活用

Page 56: SparkやBigQueryなどを用いたモバイルゲーム分析環境

最後に

Page 57: SparkやBigQueryなどを用いたモバイルゲーム分析環境

http://www.cybird.co.jp/recruit/

エントリーしてね!

エンジニア募集中!

ゲームを作りたい人

大量のアクセスを捌きたい人

などなど、複数の職種で

Page 58: SparkやBigQueryなどを用いたモバイルゲーム分析環境

ご清聴ありがとうございました