滞在時間エンゲージメント計測

滞在時間・エンゲージメントの正しい測り方

2026年07月25日 ・ Stride

解析ツールを開いたら、記事の平均滞在時間が12秒と出ていた。この数字を見て、うちのコンテンツは読まれていないんだな、と落ち込んだ経験はありませんか。

でも、その12秒は本当に実測された時間でしょうか。

多くの解析ツールにおいて、滞在時間は直接測った値ではありません。別の記録から逆算した推定値です。

そして、その逆算が成立しないケースが、サイトによっては訪問の半分以上を占めます。

この記事では、滞在時間がどう計算されているのかをほどいたうえで、実数に近づける測り方と、出てきた数字をどう読むかを順に説明します。

滞在時間とは、そのページに留まっていた時間のこと

滞在時間は、訪問者がページを開いてから離れるまでの時間です。言葉の意味としては、それだけのこと。

ややこしいのは、ツールの画面に似た名前の指標がいくつも並んでいて、それぞれ数えている対象が違う点です。

まぎらわしい3つの指標を区別する

よく登場するのが、平均ページ滞在時間、平均セッション時間、平均エンゲージメント時間の3つです。どれも時間の平均値ですが、中身は別物なので並べて整理しておきます。

なお、セッションというのは、ひとりの訪問者がサイトに来てから帰るまでの、ひとまとまりの訪問のことだと考えてください。

指標名 何の時間か つまずきやすい点
平均ページ滞在時間 1つのページに留まった時間 最後に見たページと直帰が計算から抜ける
平均セッション時間 訪問の開始から終了まで 最後のページの時間が含まれない
平均エンゲージメント時間 画面が実際に見えていた時間 裏タブや放置を除くので数字は小さく出る

同じサイトでも、この3つは平気で3倍くらい違う値になります。どの指標を見ているかを確認せずに前月と比べても、意味のある比較にはなりません

会議で滞在時間が伸びましたと報告する前に、その数字の定義を一度確かめてみてください。

0秒という数字が生まれるからくり

ここが本題です。滞在時間には、測り方そのものに由来する大きな穴があります。

時刻の差で計算しているから、最後のページが測れない

多くのツールは、滞在時間をイベントとイベントの時刻の差で求めています。Aページを開いた時刻と、次にBページを開いた時刻の引き算。

とてもシンプルな仕組みですが、弱点がひとつあります。次のページが無いと、引き算する相手がいないのです。

具体的な記録を並べると、こういうことが起きています。

10:00:00  /blog/aaa を表示   → 滞在 3分00秒(次との差で計算)
10:03:00  /blog/bbb を表示   → 滞在 1分20秒(次との差で計算)
10:04:20  /pricing  を表示   → 次のイベントが無い
                              → 0秒として集計、または平均から除外

この訪問者は、実際には料金ページを5分眺めて検討していたかもしれません。それでも記録上は0秒、あるいは無かったことになります。

つまり、セッションの最後に見たページ、すなわち離脱ページの滞在時間は構造的に測れないわけです。どこで人が去るのかを面で捉える話は 離脱ページの見つけ方と改善|どこでユーザーは去るのか にまとめてあります。

1ページで帰った人は、まるごと測れない

もっと深刻なのが直帰です。1ページだけ見て帰った訪問には、2つ目のイベントが存在しません。

10分かけて記事を読み切って満足した人と、開いた瞬間に違うと感じて閉じた人。この2人が、まったく同じ0秒として記録されます。

ブログの平均滞在時間がやけに短いのに、感触としては読まれている気がする。あの違和感の正体は、たいていこれです。

直帰という指標そのものの読み方は 直帰率とは?「計測できない」ケースと、正しい下げ方 で詳しく扱っています。

近年のツールには、この穴を埋めるためにエンゲージメント時間という別の仕組みを持つものもあります。ただし従来の滞在時間の欄も画面には残っているので、どちらを見ているかを意識しないと結局は同じ落とし穴にはまります。

逆に、長すぎる数字が出ることもあります

穴は短い側だけではありません。タブを開いたまま昼休みに入られると、40分の滞在として記録されてしまうことがあります。

平均値はこういう極端な値に弱い。数人の放置が、そのページの平均を丸ごと押し上げてしまいます。

短い側は0秒に潰れ、長い側は放置で膨らむ。滞在時間が使いにくい指標だと言われるのは、この上下両方の歪みが同時に起きているからです。

ちなみに、この歪みの大きさはサイトによって全然違います。回遊の多い通販サイトなら影響は小さく、記事を1本読んで帰る人が中心のメディアなら、影響を受ける訪問が全体の7割を超えることも珍しくありません

自分のサイトがどちら寄りかは、1ページで帰った訪問の割合を見ればすぐわかります。その割合が高いほど、いま見ている滞在時間は当てにならないと思ってください。

画面がJSで切り替わるサイトは、さらにずれます

もうひとつ、見落とされやすい条件があります。リンクを押してもページ全体が読み込み直されない、いわゆるシングルページ構成のサイトです。

この作りでは、計測タグが画面の切り替わりを検知できていないと、2ページ目以降の記録がまるごと残りません。実際には5ページ回遊した訪問が、1ページの直帰として扱われてしまいます。

当然、滞在時間も0秒側に潰れます。指標が壊れているというより、そもそも記録が届いていない状態です。

見分け方は単純で、自分のブラウザでサイト内を数ページ移動し、レポートにその移動が並ぶかを確かめるだけ。並ばないなら、数字を読む前に計測設定を直す段階だと判断してください。

実数に近づけるエンゲージメント計測

では、どうすれば実際の滞在時間に近づけるのか。答えは意外と単純で、ページを見ている間ずっと合図を送り続ければいい、というだけの話です。

一定間隔で、まだ見ていますと知らせる

この定期的な合図はハートビートと呼ばれます。心拍のように、一定間隔で軽い信号を送り続ける仕組みです。

15秒ごとに送っておけば、次のページ遷移が無くても、最後の合図の時刻から滞在時間を復元できます。素朴に書くと、こんな形になります。

// 画面が見えている時間だけを積み上げる簡易エンゲージメント計測
let sec = 0, idle = 0;

setInterval(() => {
  if (document.visibilityState !== 'visible') return; // 裏タブは数えない
  if (idle >= 300) return;                            // 5分無操作なら停止
  sec += 15;
  idle += 15;
  navigator.sendBeacon('/collect', JSON.stringify({ t: 'hb', sec }));
}, 15000);

['scroll', 'keydown', 'pointerdown'].forEach((ev) =>
  addEventListener(ev, () => { idle = 0; }, { passive: true })
);

大事なのは3点です。裏に回ったタブを数えないこと、無操作が続いたら計測を止めること、そして送信に sendBeacon を使うこと。

通常の通信はページが閉じられる瞬間にキャンセルされるため、最後のデータが届かないことがあります。sendBeacon はブラウザが後ろで送り切ってくれる仕組みなので、離脱直前の記録に向いています。

間隔をどうするかで迷いますよね。短くすれば精度は上がりますが、そのぶん通信の回数が増えます。

15秒あたりが実務的な落としどころです。1分読まれるページで4回、3分でも12回。

この程度なら表示速度にはまず影響しませんし、滞在時間の誤差も最大15秒に収まります

Strideはこの15秒ごとのエンゲージメント計測を標準で備えていて、単一ページで帰った訪問や離脱ページの滞在時間も実数として集計します。自前で組む場合も、考え方は上のコードのままで問題ありません。

スクロール深度と組み合わせると精度が上がります

時間だけでは、まだ判断を誤る余地が残ります。開いたまま席を立った人を精読と読み違えてしまうからです。

そこで、ページのどこまで読まれたかも一緒に記録します。方法は簡単で、25%・50%・75%・100%の位置を通過したタイミングでイベントを送るだけ。

滞在40秒でスクロール80%なら、読了に近い訪問。滞在4秒でスクロール10%なら、明確な失敗です。

同じ0秒扱いだった訪問が、2つのまったく違う打ち手に分かれます

数字ではなく実際の動きを見たいときは、セッションリプレイという手もあります。訪問者の操作を動画のように再現できるので、押せないボタンを何度もタップしていた、といった数字に出ない事実が見つかります。

プライバシーが気になるところですが、Strideのリプレイは記録の時点で画面上の文字をすべて伏せ字にし、入力値と画像は一切残しません。個人情報を持たないまま、動きの形だけを確認できるわけです。

ひとりの行動を時系列で追う考え方は N1分析とは|一人の行動から改善のヒントを得る が参考になるはずです。

滞在時間の読み方

測れるようになったら、次は読み方です。ここで多いつまずきが、長ければ良いと決めつけてしまうこと。

滞在時間の善し悪しは、ページの役割によって逆転します。

ページの役割ごとに、望ましい方向が違います

たとえば入力フォームで滞在時間が伸びていたら、それは熱心に読まれているのではなく、詰まっているサインです。代表的なページ種別で整理しておきます。

ページの種類 望ましい方向 ざっくりの目安 併せて見る指標
ブログ記事 長いほど良い 1〜4分 スクロール到達率
ランディングページ 短すぎ・長すぎに注意 40秒〜3分 CTAクリック率とCVR
入力フォーム 短いほど良い 2分以内 入力途中の離脱率
料金ページ やや長めが自然 1〜3分 申込ボタンのクリック率

この目安は議論の出発点にすぎません。業種でも記事の長さでも簡単に上下しますから、他社の平均と比べるより、自分のサイトの過去の数字と比べるほうがずっと役に立ちます。

記事なら、文字数から必要時間を見積もると判断しやすくなります。黙読の速度はおおむね毎分400〜600字なので、4,000字の記事は読み切りに7分から10分。

実測の中央値が2分10秒なら、3割前後まで読まれている計算です。

読了させたいのか、途中で行動させたいのか。そこが決まれば、2分10秒が成功なのか失敗なのかも決まります。

平均ではなく、分布で見てください

平均値は、滞在時間ととても相性が悪い指標です。理由は先ほどの放置タブの話と同じで、極端な値に引っ張られるから。

たとえば、あるページの平均滞在時間が40秒だったとします。良くも悪くもない、平凡な数字に見えます。

ところが内訳を開いてみると、5秒未満が全体の6割、3分以上が2割、残りが中間。これは平均40秒のページではなく、即離脱の山と精読の山が2つあるページです。

こうなると打ち手は変わります。平均を上げようとするのではなく、なぜ6割が5秒で去るのかを潰しにいくのが正解です。

中央値、あるいは30秒以上滞在した割合。このどちらかを併せて見るだけで、判断の精度がぐっと上がります。

流入元ごとに分けると、原因が見えます

もうひとつ効くのが、流入元での分解です。同じページでも、どこから来たかで滞在時間はまるで変わります。

検索から来た人の中央値が1分50秒なのに、ある広告から来た人だけ8秒。この差が出たら、ページではなく広告の文面と着地先の中身がずれている可能性が高い。

サイト全体の平均をいくら眺めても、この種の原因は絶対に見つかりません。ページ単位、さらに流入元単位まで下ろして、はじめて手が届きます。

デバイスで分けると、別の顔が見えます

流入元と同じくらい効くのが、パソコンとスマートフォンでの分解です。画面の幅が違えば、1画面に入る情報量も読み進め方も変わります。

スマートフォンだけ極端に短いなら、疑う順番は文章より先に表示速度、文字サイズ、そして画面下に居座るバナーの被りです。読む前に諦められている可能性を先に潰します。

逆にスマートフォンのほうが長いこともあります。じっくり読まれているのか、単に操作しづらくて手間取っているのかは、スクロール到達率と併せて判断してください。

スマートフォン側だけ数字が崩れている場合の全体的な対処は モバイルのCVRが低い原因と改善|スマホで取りこぼさない にまとめています。

実務での進め方

数字の見方が固まったところで、実際にどう改善していくかを整理します。順番を守るのが大切です。

まず、滞在時間だけを目標にしないでください。長く留まらせることは、それ自体では価値になりません。

進め方としては、次の3ステップで考えると迷いにくくなります。

  1. 役割と期待値を先に決める。このページで何秒くらい留まってほしいのかを、改善前に言葉にしておきます
  2. 実測とスクロール到達率で現状を見る。0秒が並んでいるなら、まず計測の穴を埋めるのが先です
  3. 離脱の多い箇所を直し、変化をCVRとセットで確認する。時間だけ伸びて申込が増えないなら、それは改善ではありません

具体例を挙げます。ある記事の平均滞在が25秒、スクロール到達率は30%止まりだったとします。

冒頭で読者の疑問に触れず、いきなり自社サービスの説明が始まっていました。書き出しを、この記事は◯◯で悩んでいる方向けです、という一文に差し替える。

それだけで到達率が55%まで伸び、記事末のリンククリックが倍になった、というのは現場でよくある変化です。

ただし、その変化が本当に書き出しのおかげかどうかは、思い込みでは判断できません。同じ週にたまたま流入元の構成が変わっていた、という程度のことで数字は簡単にぶれます。

新旧を同時に出し分けて比べられるなら、そのほうが確実です。前後比較は季節や広告出稿の影響をまるごと拾ってしまいますが、同時に出し分ければ条件はそろいます。

もうひとつ。改善のサイクルは、週単位ではなく月単位で回すくらいがちょうどいいです。

滞在時間は日ごとのブレが大きく、数日の変化を追いかけても、それはほとんどノイズを見ているだけになります。

追わなくていい滞在時間もあります

最後に、逆のことも書いておきます。滞在時間は、伸ばすこと自体が目的化すると簡単に害になります。

わざと結論を後半に置く。1本で済む記事を3ページに分割する。

数字は伸びますが、読み手はただ面倒になるだけです。

短くて良いページも、はっきり存在します。営業時間を確認するためのアクセスページ、次に進むための中継ページ、そして入力フォーム。

これらは、短いほど仕事をしている証拠です。

判断の基準はひとつだけ。このページは、読ませることが役割か、通すことが役割か。

前者なら滞在時間を追い、後者なら追わない。それで十分です。

まとめ

滞在時間は、直感的でわかりやすいのに、いちばん誤解されやすい指標です。多くのツールでは時刻の差から逆算しているため、直帰と離脱ページの滞在時間は最初から測れていません

だから、数字を読む前に確認すべきことが2つあります。

いま見ている指標が3種類のどれなのか。そして、0秒として並んでいるものが、本当に0秒なのか。

ここがはっきりすれば、次はエンゲージメント計測とスクロール到達率で実数に寄せる番です。合図を送り続けるだけの単純な仕組みで、これまで見えなかった半分が見えるようになります。

そのうえで、平均ではなく分布を見る。ページの役割に照らして、長いことが良いのか短いことが良いのかを判断する。

派手さはありませんが、この順番で進めるのがいちばん確実です。

参考記事

仕組みの側をもう少し詳しく確かめたいときは、次の資料が出発点になります。

Strideで、あなたのサイトの導線を可視化しませんか?

Cookieレスで、離脱ポイントとコンバージョンが数分でわかります。

無料で始める