analytics.js の仕組み

analytics.js を使用してトラッキングする際に必要な処理は、ほぼすべて ga() コマンドキューで実行できます。このガイドでは、コマンドキューの概要と仕組み、ユーザーの接点をトラッキングするためのコマンドを実行する方法について説明します。

ga コマンドキュー

JavaScript トラッキング スニペットでは、「コマンドキュー」というグローバル ga 関数が定義されています。この関数が「コマンドキュー」と呼ばれるのは、受け取ったコマンドが直ちに実行されるのではなく、analytics.js ライブラリが完全に読み込まれてから実行されるキューに追加されるためです。

JavaScript では関数もオブジェクトであるため、関数にプロパティを含めることができます。トラッキング スニペットでは、ga 関数オブジェクトに空の配列として q プロパティが定義されています。analytics.js ライブラリが読み込まれる前に ga() 関数を呼び出すと、ga() 関数に渡された一連の引数が q 配列の最後に追加されます。

たとえば、トラッキング スニペットを実行してすぐに ga.q の内容をログ出力すると、2 つの要素を持つ配列を確認できます。各要素は、ga() 関数に既に渡されている引数の配列です。

console.log(ga.q);

// Outputs the following:
// [
//   ['create', 'UA-XXXXX-Y', 'auto'],
//   ['send', 'pageview']
// ]

analytics.js ライブラリが読み込まれると、ga.q 配列の内容が確認され、各コマンドが順に実行されます。実行が完了すると ga() 関数は再定義され、それ以降の呼び出しは直ちに実行されるようになります。

このような仕組みにより、デベロッパー様は analytics.js ライブラリが読み込まれたかどうかを意識することなく ga() コマンドキューを使用できます。つまり、インターフェースの面では、非同期コードの複雑さの大部分がなくなり、シンプルかつ同期的に処理を行うことができます。

コマンドをキューに追加する

ga() コマンドキューのすべての呼び出しは、共通のシグネチャを使用します。1 つ目のパラメータである「コマンド」は、特定の analytics.js メソッドを指定する文字列です。それ以外のすべてのパラメータは、指定したメソッドに渡される引数になります。

特定のコマンドによって参照されるメソッドとして、create のようなグローバル メソッドや、ga オブジェクトのメソッド、send のようなトラッカー オブジェクトのインスタンス メソッドがあります。ga() コマンドキューに認識できないコマンドが渡されると、単に無視されます。そのため、ga() 関数は非常に安全に呼び出すことができ、エラーが発生することはほとんどありません。

コマンドキューから実行できるコマンドの一覧については、ga()コマンドキュー リファレンスをご覧ください。

コマンド パラメータ

ほとんどの analytics.js コマンド(および対応するパラメータ)は、さまざまな形式のパラメータを受け取ることができます。この点は、よく使用されるフィールドを特定のメソッドに渡す場合に便利です。

たとえば、JavaScript トラッキング スニペットには、次の 2 つのコマンドが含まれます。

ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');

1 つ目のコマンドでは create が、オプションの 2 つ目、3 つ目、4 つ目のパラメータとしてそれぞれ trackingId フィールド、cookieDomain フィールド、name フィールドを受け取ります。send コマンドは、オプションの 2 つ目のパラメータとして hitType を受け取ります。

すべてのコマンドは、最後のパラメータとして fieldsObject を受け取ります。このパラメータでも、すべてのフィールドを指定できます。たとえば、トラッキング スニペットに含まれる上の 2 つのコマンドは、次のように書き直すことができます。

ga('create', {
  trackingId: 'UA-XXXXX-Y',
  cookieDomain: 'auto'
});
ga('send', {
  hitType: 'pageview'
});

各コマンドが受け取ることができるオプションのパラメータの一覧は、ga()コマンドキュー リファレンスをご覧ください。

次のステップ

ここでは、analytics.js を使用してコマンドを実行する方法と、コマンドキューの仕組みについて説明しました。次のガイドでは、トラッカー オブジェクトを作成する方法について説明します。