SteamでGoogleAnalyticsがうまく計測されない現象と解決策

こんにちはデザイナーの山中です。

ここ10年ぐらいはゲーム関係のUIデザインや広告デザイン、マーケティングなんかをやってます。最近とある案件でSteamにアプリをリリースするお手伝いをさせていただいたのですが、その時にハマった現象と解決策をメモがてらまとめてみました（noteにも書いてたのですが友人に「Qiita向きじゃないかな」とアドバイスいただいたのでこちらにも投稿してみます）。

---

### やりたかったこと
マーケティングのデータとしてSteamページの訪問者の匿名化されたデータの取得をできればと考えていました。

---

###最初にやったこと
公式のヘルプ [STEAMWORKS 販売とマーケティング Google アナリティクス](https://partner.steamgames.com/doc/marketing/google_analytics?l=japanese) こちらに従い

1. GoogleAnalytics側で新規プロパティを作成
2. STEAMWORKSにログインして設定項目までアクセス（SWトップ＞設定したいアプリケーション＞[ストアページを編集]＞[特殊設定]）
3. [Google Analytics トラッキング ID]の項目に①で作られたIDを入力

このように設定しましたがSTEAMWORKS（Steamの管理者ページ）で設定したはずなのに、GoogleAnalytics側に正常にデータが飛んできませんでした。

---

###失敗理由1：GoogleAnalyticsが仕様変更してた
2020年10月のGoogleAnalyticsのバージョンアップに伴いGAがGA4となり、管理画面の仕様が変更されました。

まずGAの構造を簡単におさらいします

![GAの基本.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562929/21d30404-3137-932d-18ae-fef67fdc51d4.png)

親となるアカウント（だいたい会社名とか事業名とか）をまず作成、その子として「プロパティ」の部分に目的のチャネル（サイトとかアプリとかサービスとか）ごとのプロパティを追加していって、最後に必要であればビューで各種フィルタリングや目標設定を行って見やすいデータの最適化を行うのがGAの基本的な構造です。

これまでGAでチャネルを解析するためにはプロパティを作成すると発行できる「トラッキングコード」と呼ばれるjavascriptを対象のサイトに埋め込んで使っていました。以下みたいなやつです。

```
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=プロパティ別のトラッキングID"></script>
<script>
	window.dataLayer = window.dataLayer || [];
	function gtag(){dataLayer.push(arguments);}
	gtag('js', new Date());
	gtag('config', 'プロパティ別のトラッキングID');
</script>
```

けれどGA4からはプロパティを作成しただけではトラッキングコードは発行されません。

![GAとSteam_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562929/e0c00a36-ab37-1702-080a-2b8bc36e428b.png)

プロパティ作成後に「どのチャネルで計測をするか」を設定する[データ ストリーム]設定をして始めてコードが発行されます。

![GAとSteam_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562929/2c5a711c-8fab-3061-1718-ad0b63de4541.png)

そのためデータストリームで[ウェブ]を選択してトラッキングコードを発行できるようにします。この際間違えがちですが[ウェブサイトのURL]は自分のサイトではなくSTEAMWORKSのヘルプページで案内されているSteamストアページのURLを入れてください。

![GAとSteam_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562929/d403b37b-76c7-fdbf-3b4d-d9470642a15f.png)

これで見慣れたトラッキングコードが出てきました。

![GAとSteam_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562929/a4a21527-c6bc-a177-17c2-eb645c618e52.png)

安心してコード内のID部分を抜き出してメモしました。（実はこれがすでに罠でミスっている）。

---

###失敗理由2：Steam側に設定されているga用スクリプトがグローバルサイトタグではなかった
上記で発行したIDでいけるかな、と思いましたが計測されませんでした。

STEAMWORKSの管理画面から変更結果を閲覧できるstore beta modeを開きGAに関連した部分のソースコードを見てみます。

```
<script type="text/javascript">
	try {
			if ( typeof ga != 'undefined' && ga )
			{
				ga( 'create', "SteamWorksで設定したトラッキングID", 'auto', "app", {
				anonymizeIp: true
			} );
			ga( 'app.require', 'linker' );
			ga( 'app.linker:autolink', ["store.steampowered.com","steamcommunity.com","help.steampowered.com"] );
			ga( 'app.send', 'pageview' );
		}
	} catch ( e ) { }
</script>
```

ga()という関数がありました。これは現行のGAでは使われていない関数です。

そのためSteamのストアページで使われているGAのタグは現在GoogleAnalyticsから発行できるグローバルサイトタグを用いたトラッキングコードではなくGA3の旧バージョンを用いていることがわかりました。

ちなみに新バージョンは以下のようにga()ではなくgtag()となっているのでそこで見分けるのが分かりやすいかもしれません。

```
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=プロパティ別のトラッキングID"></script>
<script>
	window.dataLayer = window.dataLayer || [];
	function gtag(){dataLayer.push(arguments);}
	gtag('js', new Date());
	gtag('config', 'プロパティ別のトラッキングID');
</script>
```

おそらくこれが原因か？と思ったのですが疑問がよぎります。

そもそも旧来のga()タグであってもトラッキングIDさえあっていれば正常に計測できるはずだからです。

そこで手持ちの別サイトのトラッキングIDを入れて保存してからstore beta modeページを開いた状態でGoogleAnalyticsのリアルタイム検索画面でトラッキングを見守っていたところきちんとアクセスが来ていました。

![GAとSteam_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562929/b877ec7c-80d1-8f95-12c3-dff015939aeb.png)

グローバルサイトタグでないことが根本原因ではなく、IDも関連した問題なのでは？という疑惑が深まりました。

---

###真の失敗原因：Steamページで使われている非同期タグ（ga）ではGA4発行のトラッキングIDが使えない
もろもろ踏まえてIDを入れ替えて何度か試してみて確信したのですが、GA4で発行される新IDはga()、つまりGA3の非同期タグでは動作しないという可能性が高いと結論づけました。

Steamだけの原因でもGoogleAnalyticsだけの原因でもない。なんとも微妙な理由が判明してしまいました。

---

###解決編（まとめ）
解決のためなんとかGA4で旧来のトラッキングIDを持つプロパティを作成し、STEAMWORKSに登録しなくてはなりません。少し調べて以下の手順でいける事がわかりました。

##### GoogleAnalytics側
1. GAの管理画面で[プロパティを作成]を選択
2. [プロパティの設定]画面で[詳細オプションを表示]をクリック
3. [ユニバーサルアナリティクス プロパティの作成]をチェック
4. [ウェブサイトのURL]にSTEAMWORKSで案内されているSteamページのURLを設定
5. [ユニバーサル アナリティクスのプロパティのみを作成する]にチェック

これで作成します

![GAとSteam_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562929/b1f389dc-cde0-d746-60e2-22ae47eef799.png)

無事旧来のID（UA-から始まるもの）が発行されました。

![GAとSteam_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562929/48b7f51e-f628-f4d3-3719-7b84374bdcb2.png)

続いてSteam側です。

#####◇Steam側
1. STEAMWORKSにログイン
2. 設定項目までアクセス（設定したいアプリケーション＞[ストアページを編集]＞[特殊設定]）
3. [Google Analytics トラッキング ID]の項目にUAから始まるIDを入力

これで解決しました。もし誰かのお役に立てば何よりです。