なぜこのような記録を行うことができるのか
ただ、そのイベントが発生した際に、ただurchinTrackerを呼び出すだけでは、あまり有効ではないイベントも多くあります。たとえばキーが押されたときのイベントであるonkeypressや、フォーム内でテキスト入力欄やラジオボタンを表示するINPUT要素には、内容が変更されたときのイベントであるonchangeや、フォーカスが当たった時のイベントであるonfocusがありますが、これらをいちいち記録していたら、大変なことになってしまいます。
ただし、だからといってこれらが使えないというわけではなく、そのタイミングでただurchinTrackerを呼び出すだけでは有用な情報を得づらいというだけです。JavaScriptはプログラミング言語ですから、様々な処理を行うことができます。たとえばonfocusが呼ばれたとき、必ず呼び出されるのではなく、たとえば最初の1回だけを記録するとか、特定のキーが押されたときだけ記録するといった事も可能です。
そのほか、複数のイベントを組み合わせることもできます。たとえばキーが押されたときに回数を数えておいて、onunloadでページが閉じられる(もしくはリンクがクリックされた)時にその数を記録することもできるでしょう。「押された数」をどう記録するのか、と思われるかもしれませんが、記録する仮想ページ名を押された回数によって変化させる、といった技も使えます。なお、その場合は50回以下だったら「/foo/key_0」、50回以上だったら「/foo/key_50」といった具合に、疑似ページ名で分けることもできるでしょうし、ユーザー定義レポートの機能を使ってもいいと思います(__utmSetVar 関数→Google Analyticsのヘルプ を参照)。
したがって、どんなイベントが記録できるのか、ということを知っていれば、それをベースに、どんなことを記録するか、ということを考えることができるわけです。
ちなみに、図5で紹介したイベント以外に、JavaScriptを実行するタイミングとして、タイマーを利用できます。これは他のなんらかのタイミングで実行されたプログラムから、「○○秒後」という時間を指定したタイミングで、処理を実行することができます。たとえばページの読み込みが完了してから30秒後にアクセスを記録する、といったことだってできます。
JavaScriptを利用したウェブアプリケーションでも、やはりこれらのイベントを利用して、ページの読み込みが完了したらこの処理、ここがクリックされたときにはこういう処理、といったようにそれに応じたプログラムを積み重ねることで、構築されているのです。
もちろん、キーの押された回数や、アクセスされてから30秒後の記録から、どういう情報が取得できるのかはわかりません。ただ、必要となる情報や記録したいタイミングは、サイトやページの性格によって様々です。今回紹介したサンプルを参考にして、こういうタイミング、こういう情報を記録したい、ということをデザインしていただければと思っています。
記録の種類によっては、「onclick="urchinTracker('○○○');"」のように簡単にはいかず、JavaScriptの知識が必要になってしまいます。その場合、エンジニアの手を借りるなどの必要が出てくるかもしれませんが、「こういう事ができるか」という発想ができるかどうかということがまずは重要なので、まずはどういう情報が記録したいのか、それにはどういうイベントを使えばできそうか、ということをいろいろ考えてみてはいかがでしょうか。
なお、こうした手法を使って実際のアクセス以外を「疑似アクセス」として記録した場合、ページビューにそれらのクリックも合計されてしまいます。しかし、実際にはこれは「クリック」などのアクションを記録したもので、ページビューではありませんから、カウントされてしまうと、数値が狂ってしまいます。そのため、こうした疑似アクセスは、Google Analyticsの「フィルタ」の機能を使って場外をするようにすべきでしょう。その際に、除外がしやすいように、アクションを記録したものは「/_click/○○」や「_action/○○」といった疑似ページ名をつけ、簡単に区別がつくようにしておくことをおすすめします。
ちなみに、JavaScriptで利用できるイベントは、ブラウザによって多少異なっています。たとえばページが閉じられる直前に発生する「onbeforeunload」というイベントは、Internet ExplorerやFirefoxでは利用できますが、Operaでは利用できません。