読者です 読者をやめる 読者になる 読者になる

mixiアプリでGoogle Analyticsを使うとIEユーザのPVが取得できない件

最近味付けたまご作りにこってます。ago@kyo_ago)です。

先日mixiアプリで使用しているGoogle AnalyticsのPVを別の計測数と比較する機会があり、その際Google Analytics側の数字が非常に小さく出ていることに気づきました。

そこで調査したところ、IEはドメインが違うクッキーを送らない仕様があり、そのためmixiアプリでは以下のような方法ではIEユーザのPVをカウントできないようです。

<Module>
    <ModulePrefs author_email="ago@kayac.com">
        <Require feature="analytics" />
    </ModulePrefs>
    <Content type="html"><![CDATA[
        <script type="text/javascript">
            _IG_Analytics('<ID>', '<仮想パス>');
        </script>
    ]]></Content>
</Module>

これに関してはGoogleの資料でも触れられており、P3Pヘッダーを送信すれば解決できるとのことです。
ログインまたは Cookie を要求するガジェットの作成

今回は以下のようなP3Pヘッダを出力するphpを設置し、mixiアプリ内から<iframe src="ga.php?/仮想パス/" />のようの呼び出すことでIEユーザのPVは取得できるようになりましたが、safariユーザはこの方法でもPVを取得することができないため、safariユーザのPVは取得できていません。

<?php header('P3P: CP="設定したP3Pヘッダの内容"'); ?>
<html>
<head><title>ga</title></head>
<body>
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', '<ID>']);
  _gaq.push(['_setDomainName', 'none']);
  _gaq.push(['_setAllowLinker', true]);
  _gaq.push(['_trackPageview']);
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>
</body>
</html>

mixiが公開しているUAの比率と著しく乖離がある(特にIEユーザが少ない)場合、P3Pヘッダを疑ってみてください。
mixiユーザーのブラウザ利用比率のご案内

カヤックではGoogle Analyticsに詳しい技術者も募集しています!