Skip to content
検索します

Time on page:定義、計測、検証

Time on pageは、アナリティクスプラットフォームが記録する、セッション中にユーザーが単一のページを能動的に閲覧していた期間を指します。エンゲージメントの指標になりますが、計測方法やイベント設定、セッション挙動に依存します。

Time on Page: Understanding Website Visitor Engagement

概要

「Time on page」はセッション中に訪問者が単一のURLを閲覧していた期間をアナリティクスが記録したものです。プラットフォームによって計測方法は異なり、ページヒット間の差分で算出するものや、エンゲージメントイベントや組み込みのengagement-time指標(例:Google Analytics 4のengagement metrics)を使うものがあります。Time on pageはコンテンツへのエンゲージメントを示す行動的シグナルで、ユーザー満足度と相関することはありますが、それだけでランキングを決定するものではありません。クロール、インデックス化、ランキングは別工程であり、Time on pageはページ配信後の行動計測であって、クローラーシグナルではありません。

手順

1. アナリティクスを設定する

アナリティクスプラットフォーム(例:GA4)を導入・設定します。組み込みのengagement metricsに頼るかカスタムイベントを送るかを決めてください。シングルページアプリ(SPA)では仮想ルート変更時にpage_viewを発火し、visibilityやheartbeatイベントを追加してアイドル化したタブを正しく扱うようにします。

2. 既存計測の監査

アナリティクスのスニペットがページで読み込まれているか、ページ読み込みやスクロール、インタラクションのイベントが発火しているかを確認します。プラットフォームが平均time on pageを報告するのか、engagement-time指標を使うのかを確認し、レポートUI上でその定義を理解してください。

3. エンゲージメントイベントを追加する

実際の消費を示す有意義なイベントを計測してください:スクロール深度、メディア再生、重要なクリック、visibilitychangeのハートビート、カスタムタイマーなど。可能な限りプラットフォーム標準のイベントを使い、カスタム集計をしなくてもレポートに表示されるようにします。

4. リアルタイムで検証する

ページを操作しながらデバッグツールでイベントの到着を確認します。GA4ではDebugView、Google Tag ManagerではPreviewモードを使います。Chrome DevToolsのNetworkタブでアナリティクスエンドポイントへの送信リクエストを調べ、ペイロードに期待するイベント名やタイムスタンプが含まれているかを確認してください。

5. 分析とセグメント化

平均time on pageをengagement metricsと一緒に確認し、直帰率に相当する指標やコンバージョンイベントと併せて分析します。デバイス、獲得チャネル、ページテンプレート、SPAや同意管理の背後にあるページなどの問題箇所でセグメント化してください。

6. 繰り返し改善とテスト

を使い、A/B testingやコンテンツ実験でレイアウト、見出し、マルチメディア、内部リンクをテストします。Time on pageはあくまで一つのシグナルなので、コンバージョンやリテンションと合わせて評価してください。

よくある問題

シングルページアプリ(SPA):仮想page_viewイベントを発火しないと、アナリティクスは初回ロードのみを記録し、その後の滞在時間の算出が不正確になります。非アクティブなタブ:ブラウザはタイマーをスロットリングしユーザーがタブを放置することがあるため、visibilityトラッキングがなければ滞在時間が過大に見えることがあります。セッション最終ページの0秒:多くのアナリティクスはタイムスタンプ差分で時間を算出するため、最終ページで後続イベントがないと0と表示されることが多いです。エンゲージメントイベントや最終的なビーコンを送ることで回避できます。広告ブロッカーやプライバシー設定:アナリティクススクリプトがブロックまたは読み込まれないと欠損が発生するため、サーバーサイド計測やMeasurement Protocolのフォールバックを検討してください。サンプリングとセッション設定:サンプリング、誤ったセッションタイムアウト設定、タイムゾーンの不一致は平均値を歪めます。

Time on page — 検証:技術チェックリスト

- Analyticsスニペットの存在 — 検証場所: ページHTMLを取得して確認。サーバーが返すHTML内にanalyticsタグ/gtag/gtmスニペットがあれば合格。使用例: curl -L https://example.com/page でHTMLを確認(curl -Iはヘッダーのみ返します)。
- page_viewがロード/ルート変更で発火しているか — 検証場所: GA4 DebugViewやGTMのPreview — 期待するURLでpage_viewイベントが見えれば合格。
- エンゲージメントイベントが記録されているか — 検証場所: アナリティクスのリアルタイム/DebugViewやNetworkタブ — スクロール/visibility/heartbeatイベントがネットワークリクエストまたはDebugView上のイベントとして出ていれば合格。
- 最終ページのエンゲージメントが捉えられているか — 検証場所: アナリティクスのセッショントレース — セッションがそのページで終了する際に非ゼロのエンゲージメントが表示されるか、unloadで送られる最終イベント(navigator.sendBeacon等)が見えるかで合格。
- 広告ブロックによる欠損がないか — 検証場所: サーバーログとアナリティクスヒット — サーバーログにページリクエストがあり、同じセッションでアナリティクスヒットが揃っているか、あるいはサーバーサイドの計測エンドポイントがイベントを受け取っているかで合格。
- SPAの仮想ページ処理 — 検証場所: DevToolsのコンソール+Network — 仮想ルート変更がpage_viewイベントを生成し、アナリティクスペイロードのURLが表示URLと一致すれば合格。
- サンプリングとセッション設定 — 検証場所: アナリティクスプロパティ設定と生データエクスポート — サンプリング閾値が適用されておらず、セッションタイムアウトが期待に沿っていることを確認できれば合格。

検証のヒント: Chrome DevToolsのNetworkでインタラクション中のアナリティクス送信を監視する; GA4 DebugViewでイベント到着とタイムスタンプを確認する; サーバーログで訪問とアナリティクスヒットを突合する; 一般的なブラウザやプライバシー拡張を有効にしてテストしギャップを再現してください。ブラウザ外からHTMLを取得する場合は上記のようにcurlを使い、サーバーがクライアントサイドのJavaScriptが実行される前に確認します。

Technical SEO Guideを読む

よくある質問

time on pageと平均セッション時間の違いは何ですか?

time on pageはユーザーが単一のURLに費やす時間を測ります。平均セッション時間はセッション内の全ページにわたる時間を合算した指標です。どちらも計測方法に影響されるため、単独ではエンゲージメントの全体像を示しません。

なぜページのtime on pageが0秒と表示されることがあるのですか?

多くのアナリティクスは、あるpageviewのタイムスタンプとセッション内の次のトラッキングヒットとの差分でtime on pageを計算します。ユーザーがサイトを離れるか、そのページでセッションが終了して後続イベントがないと、計算結果が0になることがあります。エンゲージメントイベントや最後のビーコンを送ることで回避できます。

time on pageは検索ランキングに影響しますか?

検索エンジンはクライアント側のtime on pageをランキングアルゴリズムに関する直接的なマッピングを公表していませんユーザーのエンゲージメント指標は複雑な経路で間接的にランキングに影響することがありますが、クロール、インデックス化、ランキングは別プロセスです。time on pageはコンテンツ改善のための行動的入力として使い、保証されたランキング要因と見なさないでください。

シングルページアプリ(SPA)でのtime on pageはどう計測すべきですか?

仮想ルート変更時にpage_viewイベントを発火し、engagementイベント(visibilitychange、スクロール深度、メディア操作など)を追加してください。DevToolsのNetworkやGA4のDebugViewで、仮想ページビューとエンゲージメントイベントが正しいURLとタイムスタンプで到着することを検証します。

アナリティクスヒットが欠損している場合はどうデバッグすれば良いですか?

サーバーでレンダリングされたHTMLにスニペットが含まれているかを確認します(curl -L)。操作を再現しながらChrome DevToolsのNetworkを開き、GA4 DebugViewやGTMのPreviewを確認し、サーバーログと突合して、ページリクエストは発生しているがアナリティクス呼び出しがブロックされた/送信されていないかを確認してください。

関連用語