ドメインと Cookie - ウェブ トラッキング(analytics.js)

このガイドでは、analytics.js での Cookie の使用方法と、複数ドメインのサイトでの設定方法について解説します。

概要

デフォルトでは、analytics.js ライブラリは _ga という単一の Cookie を使用して、固有のクライアント識別子(クライアント ID)を保管します。この ID はランダムに生成される数字となります。生成された ID は Cookie に保管され、Google アナリティクスに送信される各ヒット(またはリクエスト)に付随します。この ID はその後、Google アナリティクス サーバーによってユーザーやセッション、キャンペーンのデータが算出される際に使用されます。

_ga Cookie は、JavaScript が実行されたドメインからのみアクセスできるファーストパーティ Cookie となります。設定によっては Google アナリティクスでの Cookie の設定方法を変更する必要がありますが、このガイドではその方法についても解説します。

実装

analytics.js のデフォルトの JavaScript スニペットでは、create メソッドによってトラッカーを作成します。

ga('create', 'UA-XXXX-Y');

ここで作成される Cookie は以下のようになります。

  • Cookie 名は _ga
  • Cookie ドメインは先頭の www. を抜いたウェブサイトのドメイン。
  • Cookie の有効期間は 24 か月(2 年)に設定され、期間はヒットが送信されるたびに更新される。

デフォルトの Cookie 設定の指定

これらの値を修正する場合は、create メソッドに最後のパラメータとして設定オブジェクトを渡します。この設定オブジェクトは旧型の JavaScript プレーン オブジェクトで、各プロパティが上書きするフィールドの名前となります。次に例を示します。

ga('create', 'UA-XXXX-Y', {
  'cookieName': 'new_cookie_name',
  'cookieDomain': 'mynew.domain.com',
  'cookieExpires': 60 * 60 * 24 * 28  // Time in seconds.
});

これにより、デフォルトの Cookie 設定がそれぞれの値に変更されます。

Cookie ドメインの自動設定

ga('create', 'UA-XXXX-Y', 'auto');

Cookie ドメインの自動設定を利用すると、auto パラメータの使用時に最高レベルのドメインに Cookie を自動的に書き込み、クロスドメイン トラッキングの設定を簡略化できます。たとえば www.example.co.uk ドメインで使用された場合は、以下の順に Cookie の書き込みを試みます。

  1. co.uk
  2. example.co.uk
  3. www.example.co.uk

この場合、analytics.js による co.uk での Cookie の書き込みは失敗しますが、example.co.uk での書き込みは成功します。www.example.co.uk については、Cookie がより高いレベルのドメインで書き込まれるため省略されます。

ローカルホストでの Cookie の設定

localhost 上のウェブサーバーから analytics.js を実行したい場合、analytics.js の Cookie を設定するには、以下のようにデフォルトの Cookie ドメインを無効にする必要があります。

ga('create', 'UA-XXXX-Y', {
  'cookieDomain': 'none'
});

または、簡略化して以下のようにします。

ga('create', 'UA-XXXX-Y', 'none');

同一ドメイン上での複数のトラッカーの処理

analytics.js ライブラリでは、1 つの Cookie に固有のクライアント ID を付けて設定するため、ページ上のすべてのトラッカーでこの Cookie を共有する必要があります。複数のサブドメインまたはサブディレクトリで analytics.js を設定する場合は、以下のようになります。

  • すべてのトラッカーで Cookie を最高レベルのドメインに設定する。
  • ドメインの先頭の www.(ピリオド)を削除する。

つまり、one.example.comtwo.example.com の 2 つのサブドメインがあるサイトの場合は、両方のトラッカーを以下のように設定します。

// Configuration for one.example.com
ga('create', 'UA-XXXX-Y', {'cookieDomain': 'example.com'});
// Configuration for two.example.com
ga('create', 'UA-XXXX-Y', {'cookieDomain': 'example.com'});

Cookie の有効期間の変更

Cookie の有効期間は、ヒット(またはリクエスト)が Google アナリティクスのサーバーに送信されるたびに、その時点から cookieExpires の値(秒単位)を足した期間が過ぎるまでの時点に更新されます。たとえば以下のようになります。

ga('create', 'UA-XXXX-Y', {
  'cookieExpires': 60
});

この場合、Cookie の有効期間はその時点から 60 秒後(1 分後)までとなります。

cookieExpires0(ゼロ)秒に設定すると、Cookie はセッション ベースの Cookie になり、現在のブラウザ セッションの終了とともに有効期間が切れます。

ga('create', 'UA-XXXX-Y', {
  'cookieExpires': 0
});

クライアント ID の取得

analytics.js で設定される Cookie は、警告なしにフォーマットが変わる場合があります。Cookie に直接アクセスすることは避けてください。直接アクセスするとスクリプト エラーが発生し、データが不正確になることがあります。代わりに、get コマンドを使用して clientId の値を取得してください。方法は以下のとおりです。

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

analytics.js ライブラリが読み込まれると、ga に渡された関数が実行され、tracker のパラメータにデフォルトのトラッキング オブジェクトへの参照が含まれます。このトラッキング オブジェクトが clientId を取得するために使用されます。

Cookie の無効化

analytics.js ではデフォルトで単一の Cookie が使用され、複数のページで固有のクライアント識別子が維持されます。独自のストレージ メカニズムを使用して、Cookie を使わずにデータを直接 Google アナリティクスに送信する場合もあります。

analytics.js による Cookie の設定は、以下の方法で無効化できます。

ga('create', 'UA-XXXX-Y', {
  'storage': 'none',
  'clientId': '35009a79-1a05-49d7-b876-2b884d0f825b'
});

Cookie の保管を無効にした場合は、クロスドメイン リンク設定パラメータを使用する特殊なケースを除き、独自の clientId パラメータを指定する必要があります。