analytics.js の仕組み

analytics.js による測定はほぼすべて、ga() コマンドキューを使って行えます。このガイドでは、コマンドキューの概要と仕組み、ユーザー インタラクションを測定するためにコマンドを実行する方法について説明します。

ga コマンドキュー

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

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

たとえば、Google アナリティクス タグを実行してすぐに ga.q の内容をログ出力すると、2 つの配列を確認できます。各配列は、ga() 関数にすでに渡されている 2 組の引数です。

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 コマンド(および対応するメソッド)は、さまざまな形式のパラメータを受け取ることができます。これは、よく使用されるフィールドを特定のメソッドに渡す場合の利便性のためです。

たとえば、Google アナリティクス タグに含まれる次の 2 つのコマンドを見てみましょう。

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

最初の 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 を使用してコマンドを実行する方法と、コマンドキューの仕組みについて説明しました。次のガイドでは、トラッカー オブジェクトを作成する方法について説明します。