Creazy!

WEBエンジニア・ヤガーのテック・ガジェットブログ

技術情報

Ajaxページのアクセス解析の考え方と Google Analytics での実践

投稿日:


今日 MarkeZine にAjaxページでのアクセス解析の考え方的な記事がのっていて、自分もこのネタ書こうと思っていた事をようやく思い出した。なんか後追いで悔しいけどまとめます。

ページビューは、アクセスログやそのページに埋め込まれた JavaScriptや画像などを使ってカウントされます。しかし、サイト設計によっては、一般的なサイトと同様にページビューを計算してしまうと、正しくそのサイトの価値を評価できないケースもあります。具体的にはどのようなケースなのか、見ていきましょう。

MarkeZine:◎Ajaxとアクセス解析の関係を読む

残念ながらこの記事は、「長い割には具体例がない」という結構読むのが辛い内容だったので、かなり乱暴に要約しちゃいます。ちなみに「Ajax」とか「アクセス解析」とか基本的な部分は理解している前提で書きます。
 1)Ajaxページではページ遷移しないで動作させる事ができる。
 2)サーバのアクセスログには記録される。
 3)でも、ページ遷移(PV)とXMLHttpRequestを一緒にカウントしていいの?
 4)タグ貼付けだとページが変わらないからログ取れなくね?
 5)JavaScript型たとえば Google Analytics ならできるよ?
 6)でも、ページ遷移(PV)とXMLHttpRequestを一緒にカウントしていいの?(再び)
 7)結局、ログ解析もちゃんと設計しないとダメだね。
って事が書いてあります。
ここまでだと、今までも聞いたような内容だなぁ。

Google Analytics でページ遷移しないイベントを拾う方法

すでに、Analyticsならできると書きましたが、具体的にどうするかを説明します。
下記はなじみ深いGoogleAnalyticsの解析用コードです。

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct = "UA-748843-1";
urchinTracker();
</script>

実際このブログに張っているものなんだけど、注目してしてほしいのは urchinTracker() という関数。
この関数がロギングを実行しているのですが、実はこの関数は引数を受け付けます。

<script type="text/javascript">
urchinTracker("/hogehoge");
</script>

上の場合、/hogehoge というページにアクセスしたという記録が残ります。
さらには、同じページで何度でも呼べます。

<script type="text/javascript">
urchinTracker(); // デフォルト
urchinTracker("/hogehoge");
urchinTracker("/hogehoge/hege");
</script>

関数を呼び出すだけなので、イベントから呼び出せばユーザのアクションを拾う事ができます。

<a href="http://creazy.net/" onclick="urchinTracker("/move/to/site");">
creazy photograph
</a>

onXXXXイベントであれば何でも取れるという事です。

だったら、何でもかんでもトラッキングしましょうという考え方

By calling Analytics’ urchinTracker function, however, you can assign
a page filename to any AJAX event. Typically, this is done as part of
the onreadystatechange function, after the data has been returned and all updates to the page have been made.

Ajaxian » Tracking Ajax Requests in Analytics

つまり、AjaxRequestのコールバック関数に urchinTracker() を仕込めば裏の通信も残せるじゃん、と言っているわけ。ああ、なるほど。でも、これって危険じゃね?という事を指摘している人もいる(以下)。

Google Analyticsからの回答が、onreadystatechangeからのレスポンスに対してurchinTracker関数を置くように指示していることから、共通の関数内でトラッキングするようにしたらオーバーヘッドがかかるし、統計がちゃんと取れないし、困ったことになりますよ…ということでしょうね。

Google AnalyticsでAjaxページをアクセス解析する際に注意すべきこと : アークウェブ ビジネスブログ

オーバーヘッド・・・エラい事になるでしょうね。

で、設計どうしましょう?

今回参照した記事ではどちらもどんな設計をしたら良いかという事には言及していません。っていうか、サイトによってページ遷移するかとかどのイベントでどのくらい画面の表示が変わるのかってのはまちまちだから一概に言えないんです。
ただ、いくつか基本的なポイントはおさえておくべきだと思う。
 1)初回表示はもちろんPVとしてカウント
 2)画面が大きく変わるようなイベントはカウント
 3)setTimeoutで定期的に回しているような処理は除外
とかね。

PVとイベントログをごっちゃにしない

Analyticsでイベントログを取る事ができるとしても、何でもかんでもログってたらわけわからなくなる。

あまりに多くのページビューを発生させることによって、我々が本当に興味があるデータを覆い隠します。 (何らかの小さいウィジェットの小さいアップデートにおいて数千の更新があったときに、どうやって一回分のロードを見分けるのか?)

Google AnalyticsでAjaxページをアクセス解析する際に注意すべきこと : アークウェブ ビジネスブログ

だからといって、ログを取らないっていうのは違う。
ちゃんと整理できればいい
例えば、イベントを拾う時に情報の階層構造を作ってみる。

urchinTracker("/Analytics/onclick/globalnavi");

(もちろん、実在しないURIを指定するべきだが)
引数のURLが /Analytics から始まるものはイベント解析用と決めておけば、あとで Google Analytics 上で見つけやすくなる。もちろん Analytics ではフィルタリングの機能があるから、

全体のPVーイベント数=純粋なPV

という導きだし方もできる。

アクセス解析じゃなくてアクション解析!?

ページ遷移(PV)の解析をアクセス解析というのであれば、今回解説した解析手法はアクション解析と呼んでも良いかもしれない。Ajaxによって各機能が「ページ遷移」で区切られているとは限らなくなった。だからこそ、PVではなくイベントログの解析が重要になってくる。とはいえ、全部のイベントを拾うのはアプリケーションのボトルネックにもなりかねないし、パフォーマンスもふまえたログ解析をしなくちゃいけないんですな。

-技術情報

執筆者:


  1. Qやん より:

    一応、本職なんで(笑
    えっと、最初に紹介していた記事ですが、、、今更何を言ってるのでしょう?
    って感じでした(笑
    AjaxやFlashなど、ブラウザのリロードが無い(もしくは少ない)サイトの場合でもユーザがどのようにサイト内のコンテンツを見ているのかを知る事は重要ですね。
    アクセスログ型やパケットキャプチャ型のアクセス解析の場合は、Webサーバへのアクセスが全て集計されてしまうので、解析結果をどのようにフィルタリングするかを考えれば良いとは思います。
    ビーコン型の場合は、説明しているとおり、サイトコンテンツ側で計測したいポイントを絞って、計測ポイントに入った場合だけビーコンを飛ばすようにしてもらう必要があります。
    ちなみに、Google Analyticsだけでなく、大体の商用アクセス解析サービスだと同じようなJavaScriptのFunctionは用意されていますね。
    最後に、アクセスログ解析の目的なのですが、商用のサービスを利用している場合は、単純なアクセス数を追いたいって方は皆無だと思います。やはり、
     ・広告出稿した効果
       →色々な種類の広告を出したが、何が一番効率的なのか?
     ・ユーザのサイト内での行動の導線を視覚的に見る
       →ユーザを目的のコンテンツに導けているのか?
    などが目的になっていますね。
    と、適当な薀蓄でした~

  2. 猿山猿吉 より:

    アクション解析!
    昔々の話し。
    クラサバ系のシステム全盛期の頃。クライアントアプリ側でユーザが操作したログを全て保存する仕組み
    を入れた事がありました。当然、デバッグモードでの事ですが。
    目的は、アプリケーションの障害が出た時に、ユーザがどういった操作をしたかを知る為です。
    どういった操作をしたのか?ってユーザに聞いても正確な情報って得られないでしょ(笑)
    まさにアクション解析?!
    ふと思い出しました(笑)

  3. yager より:

    専門家を差し置いてヘンテコなエントリー書いてスミマセン。
    >Qやんさん
    MarkeZine はマーケティング担当がターゲットっぽいので技術寄りの内容は排除したのかもしれませんね。
    (と、なぜかフォローしてみる。)
    ちなみにワタシの感想もQやんさんと一緒ですが ;-P
    > 大体の商用アクセス解析サービスだと同じようなJavaScriptのFunctionは用意されていますね。
    おお、そうなんですね。他の商用とか見た事ないので比較ができませんでした。
    とりあえず必要な情報が取得できる事は大前提で、あとでフィルタリングして解析すると。
    でも、フィルタリングのために引数考えたり、あとで全PVから引き算したりって面倒ですね。
    PVとイベントログを別々に記録できて、かつ管理画面で見やすい機能を作れば流行りそうな気がしますが。(意味深)
    > ・広告出稿した効果
    > ・ユーザのサイト内での行動の導線を視覚的に見る
    ですねー。結局もうかるための手段ですからね(当たり前ですが)。
    >猿山猿吉さん
    「アクション解析」!
    適当に名付けたんですがちゃんと存在するワードなんですかね?
    デバッグ目的だと、それこそ全てのユーザ操作(イベント)を拾いたいですね。
    効果計測の場合とはチェックポイントが異なるんでしょうけど。
    > ってユーザに聞いても正確な情報って得られないでしょ(笑)
    本当にそうですね。まず、連絡すらとれないでしょうし。
    システム側でログ取ってれば間違いなく再現できそうですね。
    ただ、やっぱり問題になりそうなのがページ内イベントをどこまで拾うかですかね。
    参照記事の中では盛んに「パフォーマンス」が悪くなると書いてますが、
    つべこべいわずに全部のイベントを記録して、ちゃんと整理してくれて、
    パフォーマンス抜群!なツールないですかね?(意味深)

comment

メールアドレスが公開されることはありません。

関連記事

no image

YouTubeがついにフルHD(1080p)に対応を発表

英語版YouTube公式ブログでフルHD(1080p)への対応が来週から始まることが発表されました。 We’re excited to say that support for watch …

Clubhouse高音質化計画/オーディオインターフェース経由でマイクを繋ぐ方法・BGMも流したいね!

先週あたりから突然WEB界隈で流行りだした音声SNSのClubhouseがタイムラインであれよあれよと広がっていくので、流行り物好きとしては乗っかるしか無いと思ったんですが、いつも使っているyager …

ついに、iPadが整備済製品に初登場。apple_outletでチェック!

iPadの成功は誰一人予測してなかったのかどうかはさておいて、ついにAppleStoreのアウトレットとも言える、整備済製品にiPadが登場したんですよー! で、Appleの整備済製品といえば・・・こ …

MacBookのメモリを4GBに増設

先日、開発環境構築の手順を公開しましたが、ローカルサーバとしての使い方とは別に、VMを立ち上げたり、最近PHP開発に使えそうか試しているeclipseを起動していたり、はたまた動画を見たりしてマシンを …

MacBook不調でジーニアスバー行ってきた

先週の金曜日、会社帰りにAppleStore銀座のジーニアスバーに駆け込んできました。 今回の目的は、以前MacBook (13-inch, Aluminum, Late 2008) のメモリを8GB …

スポンサードリンク

スポンサードリンク