カスタム速度

このガイドでは、analytics.js を使用して時間を測定する方法について解説します。

概要

調査の結果から、ページの読み込み速度を改善すると全体的なサイトの利便性が向上することがわかりました。Google アナリティクスには、ページの読み込み時間に関するデータを確認できるレポートが多数用意されていますが、時間を独自に設定してトラッキングし、自分のサイトに合ったパフォーマンス データを測定することもできます。

カスタム速度では、analytics.js ライブラリを使用して時間を測定することができます。AJAX リクエストやウェブ上のリソースの読み込みにかかる時間(待ち時間)を測定する場合に特に有効です。

実装

カスタム速度ヒットは、send コマンドを使用して hitTypetiming を指定することで送信できます。timing ヒットタイプの場合、send コマンドのシグネチャは次のようになります。

ga('send', 'timing', [timingCategory], [timingVar], [timingValue], [timingLabel], [fieldsObject]);

カスタム速度フィールド

次の表にカスタム速度フィールドをまとめます。

フィールド名 値の型 必須 説明
timingCategory テキスト はい すべてのカスタム速度フィールド変数を論理グループに分類する文字列(例: 「'JS Dependencies'」)。
timingVar テキスト はい 記録された変数を識別するための文字列(例: 「'load'」)。
timingValue 整数 はい Google アナリティクスへのデータ送信に要した時間。ミリ秒単位で表します(例: 20)。
timingLabel テキスト いいえ レポートでカスタム速度をわかりやすく表示するために使用する文字列(例: 「'Google CDN'」)。

例:

次のコマンドでは、カスタム速度ヒットを Google アナリティクスに送信しています。ここでは、現在のウェブページで外部の JavaScript 依存関係をすべて読み込むまでに 3,549 ミリ秒かかったことを示しています。

ga('send', 'timing', 'JS Dependencies', 'load', 3549);

すべての send コマンドと同様に、フィールドを簡便なパラメータに渡して fieldsObject に指定できます。上のコマンドは、次のように書き換えることができます。

ga('send', {
  hitType: 'timing',
  timingCategory: 'JS Dependencies',
  timingVar: 'load',
  timingValue: 3549
});

時間を測定する

カスタム速度のデータを送信する際は、timingValue パラメータを使って所要時間をミリ秒で指定します。必要に応じて、この時間を取得するコードを記述することもできます。

その場合は、測定する時間の始点と終点に 1 つずつタイムスタンプを作成する方法が最も簡単です。これにより、2 つのタイムスタンプの差分から所要時間を取得することができます。

最新のブラウザでは Navigation Timing API がサポートされています。この API には、ウェブページのパフォーマンスを測定するための window.performance オブジェクトが含まれ、高精度の時間データを利用できます。

次の例では、ページの読み込みが最初に開始されてから経過した時間の合計を返す performance.now() メソッドを使用しています。

// Feature detects Navigation Timing API support.
if (window.performance) {
  // Gets the number of milliseconds since page load
  // (and rounds the result since the value must be an integer).
  var timeSincePageLoad = Math.round(performance.now());

  // Sends the timing hit to Google Analytics.
  ga('send', 'timing', 'JS Dependencies', 'load', timeSincePageLoad);
}

サンプリングに関する注意事項

Google アナリティクスでは、処理時に timing タイプのヒットをサンプリングすることで、この機能に使用されるシステム リソースを公平に配分しています。

timing タイプのヒットのサンプリング レートは、プロパティで前日に受信したページビュー ヒットの総数によって決定されます。次の表に、timing タイプのヒットのサンプリング レートの基準を示します。

ページビュー ヒットの総数(前日) 処理される timing タイプのヒットの最大数
0~1,000 100
1,000~100,000 ページビュー ヒットの総数の 10%
100,000~1,000,000 10,000
1,000,000 以上 ページビュー ヒットの総数の 1%

送信されるヒット数の制限

処理されない Google アナリティクスのヒットが送信されることを避けるため、analytics.js では sampleRate および siteSpeedSampleRate 設定オプションで、送信されるヒットの割合を制御できます。デフォルトでは、これらのフィールドはそれぞれ 100%、1% に設定されています。1 日の平均ページビュー数に基づき、これらの値を調整して、Google アナリティクスによって処理される timing タイプのヒット数に近づけることができます。