コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

PV、Session、UUの考え方を整理してみる

PV、Session、UU。どれもサイトに訪れた数を表す指標であり、大概のツールは実装されている。しかしながらいざ自分で作ると考えたときにどういう違いがあるのかがあまりまとまってないのでまとめてみた系雑記です。

PV,Session,UUとは

どれも期間に対してどれくらいの数があったかの指標となっており、「一週間のUU数」というような使われ方をする。

そもそもの基本概念は下記サイトにわかりやすくまとまっている

UU、PV、セッションの違いを解説! | Growth Hack Journal

こちらのサイトの表現になぞらえて書くと

  • PV数とは「閲覧されたページ数」
  • UU数とは期間内に訪れた「ユーザ数」
  • セッション数とは「訪問回数」

というような形になる。

PVの計測

基本的な考え方

PVは閲覧されたページ数なので、単純なサイトの場合は「ページを表示した数」で表現することができる。

ページを表示した数を指標を取る方法はいろいろある。参考例としては以下のようなやり方がある。

  1. 対象ページへのWebサーバ(Apache,nginx)上でのアクセスログの数
  2. WebアプリケーションのHTMLレンダリングを行った回数
  3. JavaScriptのページ読み込み完了のトリガーを契機に1カウントとして記録

自明な話ではあるが、GoogleAnalyticsなどはJavaScriptを使う形でPVを計測している。

PV数をカウントする際の注意点

SPA

SPA(Single Page Application)の場合は従来のページアクセスと異なり、JS内でページが遷移してしまうので、上記であげたAやBのやり方だとユーザがページを切り替えているにもかかわらず1PVとなってしまう。

その場合、Cの手法を使い、SPAとしてページが移動した場合は異なるPVとしてカウントするという考えのもと計測する必要がある。

こちらに関しては扱うWebサイトによって考え方が変わるのでサービス関係者で定義をしっかりと行う必要がある。

動的追加読み込み

スマホでのリスト表示のコンテンツの場合、追加で読み込むことがままある(Infinit Scrollと呼称している事が多い)

これもSPAと同様に同一のページではあるが、従来のページネーションが存在するページで考えた場合、2ページ目、3ページ目動くものではあるので、その分をPVとしてカウントするほうがページネーションがあるサイトと比べたときに自然になるケースがある。

これもサービスの性質やポリシーによって分かれる部分なので、これらもしっかりと定義を行う必要がある。

Session数の計測

基本的な考え方

ユーザが一定時間そのサービスに連続して触れていた時間をセッションと考える。引用となるが以下の1文が説明としてシンプル

アクセス解析において、セッションとはWebサイトにアクセスして行う一連の行動を示す。「訪問」「ビジット」と同義。 - セッション とは 意味/解説/説明 【session】 | Web担当者Forum

PVよりもより大きな塊で考えるのでこの考え方になる。

Sessionの捉え方

では「一連の行動」をどうやって定義するかが結構考えたによってはまちまちになる。一番有名なのはGoogleAnalyticsの例で同一サービス内のページから30分以上の経過、もしくは日をまたぐ、もしくはキャンペーンという異なるコンテキストに行ったときにセッションが途切れる

概ねWebサイトだとこの考え方を主軸にしていることが多く、同一のドメインで回遊し続けている間は何をしても1セッションとするが、サイト閲覧を離れて30分後にまた回遊を開始したら別のセッションとなる。

Sessionの技術的なアプローチ

ステートフルなページを実現する際に昔から用いられているのはCookieである。そのため、同一の人が同じページを回遊しているというチェックもCookieでやるのが技術的には一般的だと思われる。

近年だとLocalStorageやログインのやり方などもあるのでいろいろなアプローチの方法があるが、どのブラウザでもあるのはCookieなので、Cookieを使い、同一Cookieを持つ人がどういう時間の流れで動いているかで計測するのが一般的かと思われる

Session数をカウントする際の注意点

Session数は1セッションをどう考えるかによって大きく数値に乖離がでる。たとえば1時間回遊ごとに1セッションなどの概念を持ち出したらカウント数がかなり変わる。

デファクトスタンダードとしてGoogleAnalyticsの考え方があるのでそこに則る形が多いが、独自でやる場合はその点を明確に示さないと、多くの人に示す数値としては比較しづらく、使いづらいのではないかと思う。

UU数の計測

基本的な考え方

UUは文字通りに設定された期間内に訪れたユニークユーザの数なので、ユニークな数をカウントすればいいのだが、何を持ってユニークとするかがサイトの作りによって異なる。

UUの捉え方、技術的アプローチ

ログインユーザ

一番単純なのはログインを必ず求められるサイトなどが簡単で、ユーザごとに一意となるユニークなキー(IDやメールアドレスなど)を持っているのでログインを行ったユーザのID数をカウントすればそれがUUとして考えることができる。

そのため、RDBにログインした時間を記録したり、ログイン処理をしたIDとログイン時間を記録しておけば、週間や月間のUU数を出すことができる。

ブラウザのCookie

ログイン機構を持たない場合はどう考えるか、ここでもCookieを使う。

新しくページを訪問した人に重複しないユニークなCookie文字列を与えて、アクセスログとしてその文字列をロギングすれば、ある程度のユニークなアクセス数は検証することができる。

UU数をカウントする際の注意点

ユーザーIDなどがわかれば、その期間に動いたIDの数をカウントすればいいし、実際の人間の数と剥離なく言葉通り、UniqueなUserとしてカウントすることができる(複数アカウント持てるサービスだと別ですが…)

ただしCookieのカウントの場合、ちょっと話がかわる。

一昔前はWindowsIEしかない、かつCookieを気軽に消すことがない時代だったので、1ブラウザ=1人という考え方もできたが、最近はブラウザも複数、一人の人がスマホとパソコンという時代になってきたので、それも言いづらくなってきたので、この手法を取る場合はUUではなくUB(UniqueBrowser)という考えかたをする場合もある。

関連ページ