[データ分析] ThinkingEngineをつかって今すぐゲームのデータ分析をはじめてみる #ThinkingData

2023.09.20

こんにちは、ゲームソリューション部の新屋です。
皆さんご担当されているゲームプロダクトではデータ分析をやれているでしょうか?

既に実施しているものの:

  1. データ基盤が複雑化していて、分析機能の追加・データ可視化に工数が掛かっている
  2. 分析をどのように行うべきか明確でなく、データが十分に活用できていないと感じている

まだ始めていない:

  1. 分析を開始したいと考えているが、構築・運用に必要なリソースが足りない
  2. ゲームビジネスとデータエンジニアリングの両方を理解している人材を確保したいが、市場にほとんどいない

今回は、このような課題を持つ方にThinkingData社の「ThikingEngine」というサービスを紹介したいと思います。

ThinkingEngine

ThinkingEngineは、ThinkingData社が提供するゲーム特化のビッグデータ分析プラットフォームで「誰でもデータアナリストになれるツール」となっています。

https://www.thinkingdata.jp/

以下の特徴があります。

9つの分析モデル: 分析に必要な集計手法を9つにモデル化、それぞれに適した可視化
SQL不要: 全てのモデルでSQL不要で、気になったその時に誰でも使え、コミュニケーションコストを削減
圧倒的なUI/UX: 直感的に分析可能で、10秒以内で分析結果を表示するリアルタイム性

こちらの動画でより詳しいサービス説明と導入事例を紹介されています。

WonderPlanet・ThinkingDataが語る、ゲーム向けのビッグデータ分析基盤の構築事例 - GTMF 2023


ざっと概要をみたところで、これから今すぐにゲームのデータ分析を開始するデモンストレーションを行っていきます。

非常に簡単に分析基盤構築できる点と、分析モデルからSQLを使わずダッシュボードを作成できること、そしてユーザー行動をリアルタイムに可視化できることを確認していきます。

1. デモアカウント申請

まずは、公式HPからデモを申し込みます。

なお通常はデータアクセス権限の無いデモアカウントが発行されますが、データアクセスの検証が必要な場合には、デモ申し込みフォーム内の【問い合わせやご要望】の欄に「データアクセス権限のあるデモアカウント発行を希望」と記載の上、申し込みます。

しばらく(だいたい1営業日以内)すると、ThinkingDataサポートからURLとアカウント名・パスワードが共有されます。 アクセスするとデモアカウントのダッシュボードが表示されます。

ここから、おおよそ10分ほどで分析基盤を構築できます。

2. データ送信準備

じぶんに割り当てられているデモプロジェクトに切り替えて「プロジェクト管理」画面へ遷移します。

すると、APP_IDとデータインポートアドレスが表示されています。メモしておきます。

3. サンプルゲームをつくる

今回はMDNのサンプルゲームを元にJavaScriptで簡単なブロック崩しゲームをつくります。

以下のタイミングで、ThinkingEngineにイベントデータを送ってみます。

  • App起動(画面表示)
    • event名: BricksStart
  • ゲームスタート
    • event名: BricksGameStart
  • ゲームオーバー
    • event名: BricksGameOver
  • スコア更新
    • event名: BricksGameScore
  • App終了(ブラウザ閉じる)
    • event名: BricksEnd

4. SDK実装

今回はクライアントサイドのデータインポートを試します。

npm install thinkingdata-browser --save

※サーバーサイドでも実装できます。バッチやLogstash + Filebeatなどデータ転送ツール、REST APIによるデータインポートも可能です。SDKの対応言語も様々ありますので、詳しくはインポートガイドをご確認ください。

初期化

import ta from 'thinkingdata-browser'

ta.init({
  appId: '', // 送信先APP_ID
  serverUrl: '', // 送信先パブリックネットワークURL
  autoTrack: {
    pageShow: false, // ページが表示されたときに自動でトラッキング
    pageHide: false, // ページが閉じられたときに自動でトラッキング
  },
})

実装

// App起動(画面表示)
...

const begin = new Date()

ta.Track('BricksStart', {
  begin: begin.toISOString(),
})
// ゲームスタート
...

function keyDownHandler(e: any) {
		// Enterキーでゲームスタート
    if (!gameState.gameStarted && e.code === 'Enter') {
			ta.track('BricksGameStart')

      gameState.gameStarted = true
      draw()
    }
}
// ゲームオーバー
...

ta.Track('BricksGameOver')
ta.Track('BricksGameScore', {
  score,
  challenge,
})
// App終了(ブラウザ閉じる)
...

// ブラウザ閉じるで発火
window.addEventListener('beforeunload', () => {
  const end = new Date()
  const duration = end.getTime() - begin.getTime()

  ta.Track('BricksEnd', {
    end: end.toISOString(),
    duration: duration / 1000,
  })
})

これで実装完了です。

5. データ送信確認

では、ゲームを遊んでThinkingEngineを確認してみましょう。

App起動

ゲームスタート

ゲームオーバー→スコア更新

App終了

これでデータインポートされているはずです。

ThinkingEngine側をみてみましょう。

BricksStart → BricksGameStart → BricksGameScore → BricksGameOver → BricksEnd とイベント名がゲームの操作順に並んでいますね。

BricksGameScoreの詳細をみてみると

challenge:1score:5が入っていました。ちゃんとデータインポートできたようです。

#distinct_id について

インポートデータ内に#distinct_idと表示されているのですが、これはゲストIDです。

私はユーザーを識別する実装を行っていませんが、ThinkingEngineは自動的にユーザー識別子を生成しイベントに紐づけて登録してくれます

さらに、このゲストIDとゲームシステム内のユーザーIDを連携することもできます。

この「ユーザー識別子ルール」もユーザー行動をトレースする機能を実装しなくて済むという点で、ThinkingEngineの魅力的な特徴の一つです。

6. ダッシュボードを作成する

ThinkingEngineでは、ゲーム分析の実績あるレポートの数々がそのままテンプレートとして使うことができます。

今回は「Overview」を選択してプレイ時間の過多を可視化してみます。

テンプレートパラメータを埋めます。 AppStartAppEndしか実装していないので、他は空欄で決定します。

プレイ時間の平均「Average playtime」とApp起動回数の平均「Average number of app-start」が出てきました。(プレイ時間平均は一部実装ミスがあり、マイナスの数値になっています)

今回は簡易サンプルゲームなのでちょっと質素な見た目になりましたが、ログインや課金などの機能を実装すれば以下のようなダッシュボードを出しKPIを測定することができます。

7. ユーザーの行動をシーケンスでみてみる

もうひとつThinkingEngineの推しポイントは、ユーザー行動をシーケンスでみることが出来る点です。

以下の画像は、サンプルゲームを起動して→ゲームを遊んで→ゲームオーバーして→スコアが5点だったことをシーケンスで表示しています。

このユーザー行動をシーケンスでみることができる利点としては

例えば、「ガチャで星5キャラを得たにも関わらず、それが確認できない」というユーザーからの問い合わせがあったとしましょう。この場合、サポートチームはエンジニアに問題の調査依頼を送り、その回答を待つ必要があります。
そうすると作業を中断して調査作業を行わなければならないエンジニア、あるいは問題の認識に齟齬が生じないように複数のチーム間でコミュニケーションをとるなど、多大な時間と労力が発生します。

しかし、ThinkingEngineを使えば、このようなワークフローは必要ありません。サポートチームはユーザーからの問い合わせを受けるとすぐに、ユーザーのシーケンスデータから直接ユーザーの状況や行動履歴を確認することができます。
この時、サポートチームはエンジニアリングスキルやSQL操作の知識は要りません。

従って、ThinkingEngineはデータ分析だけでなく、ユーザー調査のシーンでも有効に利用することができます。

まとめ

ThinkingEngineをつかって、すぐにゲームのデータ分析をはじめることができました。

現代ビジネスにおいてデータ分析は重要なスキルです。企業は大量のデータから洞察を得ることで、ユーザーエクスペリエンスを改善したり、マーケティングの効果を精密に測定したりすることができます。

データ分析が必須である一方、現場は次のような悩みを抱えていると思います。

  • 集計やダッシュボードの作成において、データアナリストやエンジニアに依存しているため、すぐにデータ分析を行いたい状況でもリードタイムが発生する
  • プロダクトごとに個別の分析基盤構築されており、プロダクトの成長つれてシステムが複雑化し、分析基盤のメンテナンスが困難になる
  • ビジネスに精通したデータアナリスト・エンジニアが市場にいない、また育成する余力もない

これらの問題を解決するため様々なソリューションが既に存在しますが、各フェーズ(ETL,DWH,BIツール)のツール選択にも頭を悩ませます。 ThinkingEngineはこれらの問題を全て解決し、ゲーム開発に集中できる環境を提供してくれます。

気になった方は、デモを試してみてはいかがでしょうか。