(57)【特許請求の範囲】
【請求項１】
処理部を備えた計算機によりウェブページ上の操作ログを記録するウェブアプリケーションの操作記録方法であって、
ウェブページ上から情報を取得するプロパティ取得定義ルールと、取得した前記情報を基に操作ログの記録範囲を制御するログ取得制御定義ルールを備え、
前記処理部は、
前記プロパティ取得定義ルールを基に情報取得イベントハンドラを設定する手順と、
前記情報取得イベントハンドラがウェブページ上から情報を取得する手順と、
ウェブページ上から取得した前記情報と、前記ログ取得制御定義ルールに基づいて、ウェブページ上の操作ログの記録範囲を制御する手順と、
前記操作ログを記録する手順と、を実行する、
ことを特徴とするウェブアプリケーションの操作記録方法。
【請求項２】
請求項１記載のウェブアプリケーションの操作記録方法であって、
前記情報取得イベントハンドラを設定する手順は、
前記ウェブページのトップフレームに対するリクエストとは異なるリクエストに対する受信ハンドラ処理完了後に、前記情報取得イベントハンドラを呼び出すよう書き換える手順である、
ことを特徴とするウェブアプリケーションの操作記録方法。
【請求項３】
請求項２記載のウェブアプリケーションの操作記録方法であって、
前記トップフレームに対するリクエストとは異なるリクエストとは、ＸｍｌＨｔｔｐＲｅｑｕｅｓｔ（ＸＨＲ）の受信ハンドラ関数である、
こと特徴とするウェブアプリケーションの操作記録方法。
【請求項４】
請求項１記載のウェブアプリケーションの操作記録方法であって、
前記ログ取得制御定義ルールは、ウェブページ上から取得した前記情報を基にした条件式を少なくとも含む、
ことを特徴とするウェブアプリケーションの操作記録方法。
【請求項５】
請求項１記載のウェブアプリケーションの操作記録方法であって、
前記プロパティ取得定義ルールは、
ウェブページ上の任意の箇所を指定する取得場所定義と、指定した前記箇所を取得するタイミングと、前記タイミングで検知する変化対象オブジェクトの情報を少なくとも含む、
こと特徴とするウェブアプリケーションの操作記録方法。
【請求項６】
請求項１記載のウェブアプリケーションの操作記録方法であって、
前記プロパティ取得定義ルールの設定のため、
ウェブアプリケーションのレスポンスを格納するコンテンツデータベースを備え、
前記ウェブアプリケーションのレスポンスを前記コンテンツデータベースに記録する記録手順と、
前記レスポンスを表示したウェブブラウザ上でプロパティ取得場所を指定する手順と、
前記指定箇所がどのレスポンスに含まれているかを前記コンテンツデータベースから検索する検索手順、を実行する、
ことを特徴とするウェブアプリケーションの操作記録方法。
【請求項７】
請求項６記載のウェブアプリケーションの操作ログ記録方法であって、
前記記録手順は、トップフレームと、トップフレームの表示の延長で呼び出される関連ページを組として記録する手順を更に含み、
前記検索手順は、関連ページから指定箇所を検索し、トップページから前記検索にヒットした関連ページの呼び出し方法にて、前記プロパティ取得定義ルールを決定する決定手順、を含む、
ことを特徴とするウェブアプリケーションの操作記録方法。
【請求項８】
請求項７記載のウェブアプリケーションの操作記録方法であって、
前記決定手順は、ｓｃｒｉｐｔタグ、ｆｒａｍｅタグもしくはｉｆｒａｍｅタグの何れかのｓｒｃ属性を参照することで決定する手順を含む、
ことを特徴とするウェブアプリケーションの操作記録方法。
【請求項９】
請求項１記載のウェブアプリケーションの操作記録方法であって、
前記計算機は、前記プロパティ取得定義ルールと前記ログ取得制御定義ルールを、ウェブアプリケーションが動作するサーバ装置に対するリクエストのレスポンスとしてネットワーク経由で受信する、
ことを特徴とするウェブアプリケーションの操作記録方法。
【請求項１０】
請求項１記載のウェブアプリケーションの操作記録方法であって、
前記計算機は、記録した前記操作ログを、分析するサーバ装置にネットワーク経由で送信する、
ことを特徴するウェブアプリケーションの操作記録方法。
【請求項１１】
記憶部と処理部とを備えたクライアント装置により、ウェブページ上の操作ログを記録するウェブアプリケーションの操作記録システムであって、
前記記憶部は、
ウェブページ上から情報を取得するプロパティ取得定義ルールと、前記取得した情報を基に操作ログの記録範囲を制御するログ取得制御定義ルールを記憶し、
前記処理部は、
前記プロパティ取得定義ルールを基にウェブページの情報取得イベントハンドラを設定し、
前記情報取得イベントハンドラがウェブページ上から情報を取得し、
取得した前記情報と、前記ログ取得制御定義ルールに基づいて、ウェブページ上の操作ログの記録範囲を制御する、
ことを特徴とするウェブアプリケーションの操作記録システム。
【請求項１２】
請求項１１記載のウェブアプリケーションの操作記録システムであって、
前記処理部は、
前記情報取得イベントハンドラを設定する際、ウェブページのトップフレームに対するリクエストとは異なるリクエストに対する受信ハンドラ処理完了後に、前記情報取得イベントハンドラを呼び出すよう書き換える、
ことを特徴とするウェブアプリケーションの操作記録システム。
【請求項１３】
請求項１２記載のウェブアプリケーションの操作記録システムであって、
前記処理部は、
前記トップフレームに対するリクエストとは異なるリクエストであるＸＨＲの受信ハンドラ関数を、受信ハンドラ処理完了後に、前記情報取得イベントハンドラを呼び出すよう書き換える、
こと特徴とするウェブアプリケーションの操作記録システム。
【請求項１４】
請求項１１記載のウェブアプリケーションの操作記録システムであって、
前記ログ取得制御定義ルールは、ウェブページ上から取得した前記情報を基にした条件式を少なくとも含む、
ことを特徴とするウェブアプリケーションの操作記録システム。
【請求項１５】
請求項１１記載のウェブアプリケーションの操作記録システムであって、
前記プロパティ取得定義ルールは、
ウェブページ上の任意の箇所を指定する取得場所定義と、検知する変化対象オブジェクトと、指定した前記箇所を取得するタイミングの情報を少なくとも含む、
こと特徴とするウェブアプリケーションの操作記録システム。
【請求項１６】
請求項１１記載のウェブアプリケーションの操作記録システムであって、
前記クライアント装置は、
前記記憶部に記憶する、前記プロパティ取得定義ルールと前記ログ取得制御定義ルールを、ウェブアプリケーションが動作するサーバ装置に対するリクエストのレスポンスとしてネットワーク経由で受信する、
ことを特徴とするウェブアプリケーションの操作記録システム。
【請求項１７】
請求項１１記載のウェブアプリケーションの操作記録システムであって、
前記クライアント装置は、
記録した前記操作ログを、分析するサーバ装置にネットワーク経由で送信する、
ことを特徴するウェブアプリケーションの操作記録システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウェブブラウザの動作するクライアント装置と、ウェブアプリケーションが動作するサーバ装置からなるコンピュータシステムに関し、特にウェブアプリケーションを利用するユーザのウェブブラウザ上での操作を、ユーザの属性に応じて記録する技術に関する。
【背景技術】
【０００２】
ブロードバンドの普及により様々なサービスがウェブシステムを用いて提供されるようになってきている。ウェブシステムの構築は、ハードウェアの低価格化やウェブサーバシステムやサービス構築のためのパッケージ製品により、あらゆる企業で提供が可能となってきている。ウェブアプリケーションは、従来の静的な画面の提供だけではなく、Ｄｙｎａｍｉｃ  ＨＴＭＬ（Hyper Text Markup Language）技術や、Ａｊａｘ（Asynchronous JavaScript + Extensible Markup Language（ＸＭＬ））技術などを利用して、動的な画面を提供し、使い勝手を向上させることで差別化する流れも進んでいる。
【０００３】
一方、オンラインサービスならではの弊害も出てきている。対面にてサービスを提供している場合、顧客の反応に応じて、応対の仕方を変えることが可能である。しかしながら、オンラインサービスの場合、顧客の顔を直接見ることが困難なため、顧客の反応を把握することが困難である。そのため顧客の反応に応じたきめ細かいサービスの提供が困難となっている。
【０００４】
これに対し、ウェブブラウザ上でのユーザのマウスやキーボード操作などを記録することで、サービスの利用状況を把握する技術が開示されている（特許文献３）。特許文献３の技術は、ユーザのウェブブラウザ上でのマウスやキーボード操作を記録し、サーバに送信するスクリプトプログラムを、ウェブアプリケーションのレスポンスに挿入する。ここで、レスポンスとはウェブアプリケーションの画面生成のためのデータであり、ＨＴＭＬ言語などで記述されている。挿入されたスクリプトプログラムは、ウェブブラウザのスクリプト実行エンジンで解釈・実行され、ユーザのブラウザ上での操作を捕捉し、操作ログとして記録する。操作ログを収集、分析することで、ユーザがウェブページのどこをクリックしたか、ウェブページをどこまでを読んだかなど、を把握することが可能となり、オンラインサービスに対する顧客の反応を調査することが可能となる。
【０００５】
その他に関連技術として、ウェブアプリケーションの画面、すなわち、ＨＴＭＬから情報を取得する技術が幾つか開示されている。ＨＴＭＬなどタグ付けされた言語で記述されたドキュメントの場所を表現する方法として非特許文献２に示すＸＰａｔｈ（XML Path Language）が広く用いられている。ＸＰａｔｈを用いて場所を表現し、ＸＰａｔｈの実行エンジンを用いてウェブアプリケーションの画面から情報を取得する方法は広く用いられている。また、ＨＴＭＬのテーブルやリスト構造に着目して、情報抽出ルールを定義し、情報を抽出する方法が特許文献１に開示されている。
更に、ウェブサーバからのレスポンス中に、クライアント装置内の処理を記録するためのスクリプトコードを挿入しておき、クライアント装置の処理の記録を保存する技術が特許文献２に開示されている。
上記で開示したサービスの利用状況を把握する技術は、ＳａａＳ（Software as a Service）の形態や、既存アプリケーションにアドオンの形で提供されることが多い。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−０６２４４６号公報
【特許文献２】特開２００９−１０４２６７号公報
【特許文献３】ＵＳ２００８／００４６５６２
【非特許文献】
【０００７】
【非特許文献１】XML Path Language (XPath) 2.0, W3C Recommendation 23 January 2007  http://www.w3.org/TR/xpath20/  Abstract 及び 1章 （Introduction）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
オンラインビジネスにおいて、他社差別化を図るためには、オンラインサービスの利用状況を的確に分析する必要がある。例えば、特定条件のユーザについて詳細な操作ログを取得して分析したいというニーズがある。例えば、ショッピングカートに商品を入れているユーザについてマウス動線も含めて詳細分析したい、というケースである。これは、ユーザが興味を持っている部分にマウスカーソルを重ねるという仮説に基づいて分析をする場合に有効である。
【０００９】
このようなニーズに対して、特許文献３に代表されるウェブシステムの利用状況可視化技術では、ボタンやリンクのクリック、フォームへのキーボード入力などの記録に関しては、操作ログ量が問題となることはないが、マウスの細かい動きもとるとなると、操作ログ量が膨大となり、全てのユーザの操作ログを収集することは困難である。
【００１０】
従って、特定条件のユーザのみ操作ログを詳細に取得するなど制御を行う必要がある。しかしながら、従来技術では、ＨＴＭＬのアプリケーションレベルでのセマンティクスを理解するわけではなく、ショッピングカートに商品を入れているユーザなど、アプリケーションレベルの情報を認識することは出来ず、前記情報を基に操作ログ取得の有無や詳細度を制御することは困難である。
【００１１】
上記に対して、非特許文献１や特許文献１を利用して、ウェブアプリケーションの画面からユーザのプロファイル情報を取得し、特定条件の判断に利用することが考えられる。しかしながら、ＤｙｎａｍｉｃＨＴＭＬ技術やＡｊａｘ技術を利用したウェブアプリケーションなど、ページ内の情報が動的に変化するウェブアプリケーションからプロファイル情報を抽出することは困難である。なぜならば、上記の従来技術は、プロファイル情報の場所を指定することはできるが、どのようなタイミングで取得するかを直接指定することは出来ないためである。そのため、動的にページの書き換えを行っている場合、プロファイル情報の取得は出来ず、それに基づいた操作ログ取得の制御も出来ない。
【００１２】
本発明の目的は、上述した課題を考慮し、ウェブアプリケーションの操作ログを記録する方法において、ウェブアプリケーションの画面からユーザのプロファイル情報を取得し、この情報を基に操作ログの取得範囲を制御することを可能とするウェブアプリケーションの操作記録方法およびシステムを提供することにある。
【００１３】
また、本発明の他の目的は、特に、動的にページの書き換えを行っているウェブアプリケーションにおいても操作ログの取得範囲の制御を可能とし、これにより、ウェブアプリケーションレイヤの情報を基に、操作ログの取得レベルの制御を行い、ウェブアプリケーションの改善のための情報を効率的に収集、分析することを可能とする操作記録方法およびシステムを提供することにある。    
【課題を解決するための手段】
【００１４】
すなわち、上記の目的を達成するため、本発明においては、処理部を備えた計算機によりウェブページ上の操作ログを記録するウェブアプリケーションの操作記録方法であって、ウェブページ上から情報を取得するプロパティ取得定義ルールと、取得した情報を基に操作ログの記録範囲を制御するログ取得制御定義ルールを備え、処理部は、プロパティ取得定義ルールを基にウェブページの情報取得イベントハンドラを設定する手順と、情報取得イベントハンドラがウェブページ上から情報を取得する手順と、取得した情報と、ログ取得制御定義ルールに基づいて、ウェブページ上の操作ログの記録範囲を制御する手順と、操作ログを記録する手順とを実行するウェブアプリケーションの操作記録方法を提供する。
【００１５】
また、上記の目的を達成するため、本発明においては、記憶部と処理部とを備えたクライアント装置で、ウェブページ上の操作ログを記録するウェブアプリケーションの操作記録システムであって、記憶部に、ウェブページ上から情報を取得するプロパティ取得定義ルールと、取得した情報を基に操作ログの記録範囲を制御するログ取得制御定義ルールを記憶し、処理部は、プロパティ取得定義ルールを基にウェブページの情報取得イベントハンドラを設定し、情報取得イベントハンドラがウェブページ上から情報を取得し、取得した情報と、ログ取得制御定義ルールに基づいて、ウェブページ上の操作ログの記録範囲を制御するウェブアプリケーションの操作記録システムを提供する。
【発明の効果】
【００１６】
本発明によれば、ページが動的に変化するウェブアプリケーションに関し、アプリケーションレイヤの情報を基に、操作ログの取得レベルの制御を行うことを可能とし、ウェブアプリケーションの改善のための情報を効率的に収集、分析することが可能となる。
【図面の簡単な説明】
【００１７】
【図１Ａ】図１Ａは、第１の実施例の計算機システムのシステム構成例を示す図である。
【図１Ｂ】図１Ｂは、第１の実施例に係る、クライアント装置の構成例を示す図である。
【図１Ｃ】図１Ｃは、第１の実施例に係る、ウェブサーバ装置の構成例を示す図である。
【図１Ｄ】図１Ｄは、第１の実施例に係る、ログ分析サーバ装置の構成例を示す図である。
【図１Ｅ】図１Ｅは、第１の実施例に係る、ログ取得制御定義テーブルのデータの一例を示す図である。
【図１Ｆ】図１Ｆは、第１の実施例に係る、プロパティ取得定義テーブルのデータの一例を示す図である。
【図２】図２は、第１の実施例に係る、計算機システムの動作の概要を示す図である。
【図３】図３は、本第１の実施例に係る、ログ分析サーバ装置のモジュール構成例を示す図である。
【図４Ａ】図４Ａは、第１の実施例に係る、計算機システムにおけるクライアント装置の動作の一例を示すフローチャート図である。
【図４Ｂ】図４Ｂは、第１の実施例に係る、計算機システムにおけるウェブサーバ装置の動作の一例を示すフローチャートである。
【図４Ｃ】図４Ｃは、第１の実施例に係る、計算機システムにおけるログ分析サーバ装置の動作の一例を示すフローチャートである。
【図５】図５は、第１の実施例に係る、計算機システムにおける操作ログ取得機能モジュールの初期化処理の一例を示すフローチャートである。
【図６Ａ】図６Ａは、第１の実施例に係る、計算機システムにおける操作ログ取得機能モジュールのＭｙＸＨＲ#ｏｐｅｎ関数の処理の一例を示すフローチャート図である。
【図６Ｂ】図６Ｂは、第１の実施例に係る、計算機システムにおける操作ログ取得機能モジュールのＭｙＸＨＲ#ｓｅｎｄ関数の処理の一例を示すフローチャート図である。
【図６Ｃ】図６Ｃは、第１の実施例に係る、計算機システムにおける操作ログ取得機能モジュールの属性情報取得イベントハンドラ関数であるＧｅｔＩｎｆｏ関数の処理の一例を示すフローチャート図である。
【図７】図７は、第１の実施例に係る、計算機システムにおける操作ログ取得機能モジュールの操作ログ記録イベントハンドラ設定処理の一例を示すフローチャート図である。
【図８】図８は、第１の実施例に係る、計算機システムにおけるクライアントストレージに格納されるプロパティ情報のデータの一例を示す図である。
【図９】図９は、第１の実施例に係る、計算機システムにおけるウェブアプリケーションの画面の一例を示す図である。
【図１０】図１０は、第１の実施例に係る、計算機システムにおけるウェブアプリケーションの画面の一例に関するＨＴＴＰ通信の一例を示す図である。
【図１１】図１１は、第１の実施例に係る、計算機システムにおけるプロパティ取得定義の設定支援の処理の一例を示すフローチャート図である。
【図１２】図１２は、第１の実施例に係る、計算機システムにおけるコンテンツデータベースの構成の一例を示す図である。
【図１３】図１３は、第２の実施例に係る、計算機システムにおけるウェブアプリケーションの画面の一例に関するＨＴＴＰ通信の一例を示す図である。
【図１４】図１４は、第２の実施例に係る、計算機システムにおけるクライアントストレージに格納されるプロパティ情報のデータの一例を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の種々の実施例について図面を参照して説明する。なお、本明細書において、計算機システムの処理部であるプロセッサで実行される各プログラムを「モジュール」や「部」と表現することがあるので留意されたい。
【実施例１】
【００１９】
以下、図１Ａから図１０を参照して第１の実施例について説明する。
【００２０】
＜システム構成＞
図１Ａは、実施例１の計算機システムの構成例を示す図である。図１Ｂは、本実施例のクライアント装置１００の構成例を示す図である。図１Ｃは、本実施例のウェブサーバ装置１２０の構成例を示す図である。図１Ｄは、本実施例のログサーバ装置１４０の構成例を示す図である。
【００２１】
図１Ａに示す計算機システムは、一台以上（図１Ａでは二台）のクライアント装置１００、一台以上（図１Ａでは一台）のウェブサーバ装置１２０、及び、一台以上（図１Ａでは一台）のログサーバ装置１４０を備える。クライアント装置１００、ウェブサーバ装置１２０及びログサーバ装置１４０はネットワーク１８０を介して相互に接続されている。なお、ウェブサーバ装置１２０とログサーバ装置１４０とは、物理的に同一の装置に実装されてもよい。そのため、本明細書においては、以下に説明する、それぞれの装置、更にはクライアント装置のプロセッサ、メモリを総称して処理部、記憶部と呼ぶ場合がある。
【００２２】
図１Ｂに示すクライアント装置１００は、ウェブサーバ装置１２０が提供するウェブアプリケーションを利用する計算機である。このクライアント装置１００は、入出力装置１０１、処理部を構成するプロセッサ１０２、ネットワークインターフェイス１０３、及び、記憶部を構成するメモリ１０４を備える。
【００２３】
入出力装置１０１は、ユーザインターフェイスを提供する例えば、キーボード、マウス等の入力装置、例えば、表示装置などの出力装置である。プロセッサ１０２は、メモリ１０４に記憶されたウェブブラウザプログラム１０５、スクリプトエンジンプログラム１０６、及び、図示が省略されたオペレーティングシステム（Operation System：ＯＳ）などを実行する。ネットワークインターフェイス１０３は、クライアント装置１００がネットワーク１８０を介してデータを通信するための通信インターフェイスである。メモリ１０４は、プロセッサ１０２によって実行されるプログラム、及びこれらのプログラムによって使用されるデータを格納する。なお、クライアント装置１００はさらに図示を省略した、記憶部を構成する外部記憶装置などを備えてもよい。
【００２４】
図１Ｃに示すウェブサーバ装置１２０は、クライアント装置１００にアプリケーションのサービスを提供する計算機である。ウェブサーバ装置１２０は、ネットワークインターフェイス１２１、プロセッサ１２２、入出力装置１２３、ローカルディスク１２４、及び、メモリ１２５を備える。
【００２５】
ネットワークインターフェイス１２１は、ウェブサーバ装置１２０がネットワーク１８０を介してデータを通信するための通信インターフェイスである。プロセッサ１２２は、メモリ１２５に記憶されたウェブサーバプログラム１２６、ウェブアプリケーションプログラム１２７、及び、機能挿入プログラム１２８を実行する。各プログラムの動作の詳細については後述する。
【００２６】
ローカルディスク１２４は、磁気ディスク装置、不揮発性半導体メモリなどによって構成される記憶装置であり、ウェブアプリケーションプログラム１２７の、操作ログ取得範囲を制御するログ取得制御定義テーブル１３０、及びユーザの属性情報を取得するプロパティ取得定義テーブル１３１を格納する。ローカルディスク１２４は、ウェブサーバ装置１２０に内蔵されていても、ウェブサーバ装置１２０の外部に設けられる外部記憶装置であってもよい。各テーブルの構成の詳細については後述する。
【００２７】
入出力装置１２３は、ユーザインターフェイスを提供する例えば、キーボード、マウス等の入力装置、及び例えば、表示装置などの出力装置である。なお、ウェブサーバ装置１２０が入出力装置１２３を備えなくてもよい。この場合、ウェブサーバ装置１２０は、クライアント装置１００や図示が省略されたコンソール端末によって操作される。メモリ１２５は、プロセッサ１２２によって実行されるプログラム、及びこれらのプログラムによって使用されるデータを格納する。
【００２８】
図１Ｄに示すログサーバ装置１４０は、クライアント装置１００のウェブブラウザ上で動作するウェブアプリケーションのユーザの操作ログを収集し、分析する。ログサーバ装置１４０は、ネットワークインターフェイス１４１、プロセッサ１４２、入出力装置１４３、ローカルディスク１４４、及び、メモリ１４５を備える。
【００２９】
ネットワークインターフェイス１４１は、ログサーバ装置１４０がネットワーク１８０を介してデータを通信するための通信インターフェイスである。プロセッサ１４２は、メモリ１４５に記憶されたログサーバプログラム１４６、及び、ログ分析プログラム１４７を実行する。ローカルディスク１４４は、磁気ディスク装置、不揮発性半導体メモリなどによって構成される記憶装置であり、操作ログ記録テーブル１４８を格納する。ローカルディスク１４４は、ログサーバ装置１４０に内蔵されていても、ログサーバ装置１４０の外部に設けられる外部記憶装置であってもよい。各々のプログラムの動作及び各テーブルの構成の詳細については後述する。
【００３０】
入出力装置１４３は、ユーザインターフェイスを提供する、例えば、キーボード、マウス等の入力装置、及び例えば、表示装置などの出力装置である。なお、ログ分析サーバ装置１４０が入出力装置１４３を備えなくてもよい。この場合、ログ分析サーバ装置１４０は、クライアント装置１００や図示が省略されたコンソール端末によって操作される。メモリ１４５は、プロセッサ１４２によって実行されるプログラム、及びこれらのプログラムによって使用されるデータを格納する。
【００３１】
＜ログ取得制御定義テーブル、プロパティ取得定義テーブル＞
図１Ｅ及び図１Ｆは、本実施例のログ取得制御定義テーブル１３０、及び、プロパティ取得定義テーブル１３１の一例を示す図である。
【００３２】
図１Ｅに示すログ取得制御定義テーブル１３０は、操作ログ取得コード１２９が取得するユーザ操作の範囲を制御する情報を管理する。ログ取得制御定義テーブル１３０には、ユーザ属性の条件を定義する条件式１６０と、この条件に一致したユーザの操作ログ取得範囲を定義する取得範囲１６１とが、対応付けられて管理される。
【００３３】
図１Ｆに示すプロパティ取得定義テーブル１３１は、ユーザの属性をウェブアプリケーションが生成する画面から取得するための定義情報を管理する。プロパティ取得定義テーブル１３１には、取得した属性をログ取得制御定義テーブル１３０中の条件式１６０中に記述するための識別子となるプロパティ名１７０、属性を取得するページのＵＲＬを示す取得元ＵＲＬ１７１、属性がページ内のどこに含まれているかを示す、すなわちウェブページ上の任意の箇所を指定する取得式１７２、及び、取得契機を定義する情報として、変化対象オブジェクトの情報である変化対象１７３、指定した箇所を取得するタイミングである取得タイミング１７４とが、対応付けられて管理される。本実施例では取得式としてＸＰａｔｈ表現を用いているが、ページ内の任意の場所を定義できれば、どのような取得式でも良い。例えば、正規表現を用いることが出来る。
【００３４】
＜計算機システムの動作の概要＞
図２は、本実施例の計算機システムの動作の概要を示す図である。なお、以下の説明では、各々の装置１００、１２０、１４０においてプログラムがメモリにロードされてプロセッサによって実行されている状態を「モジュール」と表現する。
【００３５】
まず、ウェブブラウザモジュール２００は、ウェブブラウザに対するユーザの操作を受け付けると、ウェブサーバモジュール２２０に対してユーザの操作に応じたリクエスト２０３を送信する。リクエスト２０３は、ＨＴＴＰ（Hyper Text Transfer Protocol）プロトコルやＨＴＴＰＳ（Hyper Text Transfer Protocol over Secure Socket Layer）プロトコルに従って送信される。なお、リクエスト２０３のプロトコルはＨＴＴＰプロトコルやＨＴＴＰＳプロトコルは一例であり、それらに限定されない。
【００３６】
ウェブサーバモジュール２２０は、リクエスト２０３を受信すると、受信したリクエスト２０３に対応するウェブアプリケーション２２１に処理を要求する。ウェブアプリケーション２２１は、リクエスト２０３に応じた処理を実行してレスポンス２２４を生成し、生成されたレスポンス２２４を機能挿入モジュール２２２に転送する。機能挿入モジュール２２２は、転送されたレスポンス２２４に操作ログ取得機能モジュール２２３、とログ取得制御定義テーブル１３０、とプロパティ取得定義テーブル１３１をローカルディスク１２４から取り出し（２５０〜２５２）、その内容を埋め込んだレスポンス２２５を生成し、生成されたレスポンス２２５をウェブブラウザモジュール２００に送信する。ここで、操作ログ取得機能モジュール２２３を埋め込む処理は、Ｊ２ＥＥ（Java 2 Enterprise Edition：Ｊａｖａは登録商標）のＳｅｒｖｌｅｔＦｉｌｔｅｒ機能、ＩＩＳ（Internet Information Services）のＩＳＡＰＩ（Internet Server Application Programming Interface）Ｆｉｌｔｅｒ機能など、ウェブサーバ装置１２０が備えるレスポンスのフィルタリング機能を利用して実現される。なお、本実施例では、機能挿入モジュール２２２により動的に操作ログ取得機能モジュール２２３を埋め込んでいるが、機能挿入モジュール２２２を利用せずにウェブアプリケーション２２１に操作ログ取得機能モジュール２２３を予め埋め込んでおいてもよい。
【００３７】
また、クライアント装置とウェブサーバ装置の間のＨＴＴＰ通信を仲介するプロキシサーバ装置を用いて、操作ログ取得機能モジュール２２３を埋め込んでも良い。プロキシサーバ装置は、クライアント装置側に設置するフォワードプロキシ、サーバ装置側に設置するリバースプロキシの何れの方式でも構成することができる。
【００３８】
ウェブブラウザモジュール２００は、機能挿入モジュール２２２からレスポンス２２５を受信すると、受信したレスポンス２２５中のＨＴＭＬ（Hyper Text Markup Language）データを解釈して、ウェブブラウザ上に表示する。また、レスポンス２２５に埋め込まれた操作ログ取得機能モジュール２２３をスクリプトエンジンモジュール２０１に転送する（２０２）。その後、操作ログ取得機能モジュール２２３は、操作ログ記録イベントハンドラ２６１や属性情報取得イベントハンドラ２６２の初期化を実行した後、クライアント装置１００のウェブブラウザ上のユーザ操作を操作ログとして順次取得していく。ここで、操作ログ記録イベントハンドラ２６１は、ウェブブラウザ上でのユーザ操作を、捕捉し記録するイベントハンドラ関数である。また属性情報取得イベントハンドラ２６２は、ウェブアプリケーションのレスポンス情報からユーザの属性情報を取得するためのイベントハンドラ関数である。詳細については後述する。
【００３９】
操作ログ取得機能モジュール２２３は、ウェブブラウザ上でページ遷移が発生した場合等に、操作ログ取得機能モジュール２２３が記録した操作ログ２０５を、ログサーバ装置１４０のログサーバモジュール２４０に送信する。なお、このページ遷移はネットワークを介した通信を伴うもの及び伴わないものを含む。後者の通信を伴わないケースは、ＤＯＭ（Document Object Model）やＪａｖａＳｃｒｉｐｔ（登録商標）技術などを用いてウェブブラウザ側でページを書き換える場合である。ページ遷移のタイミングでの操作ログ送信は、一例であり、一定時間毎、一定操作ログ量毎など他のタイミングで送信しても良い。
【００４０】
ログサーバモジュール２４０は、操作ログ取得機能モジュール２２３から操作ログ２０５を受信後、受信した操作ログ２０５を操作ログ記録テーブル１４８に順次格納する（２４３）。
【００４１】
ログ分析モジュール２４１は、操作ログ記録テーブル１４８に格納されたデータに基づき、ユーザ操作を分析、可視化データを生成する。ログ分析モジュール２４１の処理は、管理者ユーザからの指示や、任意のタイミングでのバッチ処理などによって実行する。
【００４２】
＜ログサーバ装置１４０のモジュール構成例＞
図３は、本実施例のログ分析サーバ装置１４０のモジュール構成例を示す図である。また、図３には、操作ログ記録テーブル１４８に保存される操作ログ３０１、３０２、３０３と、その操作ログの一例３００を示している。操作ログ記録テーブル１４８には、操作ログ３０１、３０２、３０３が保存されている。なお、操作ログ３０１、３０２、３０３を区別する必要がない場合、これらを総称して操作ログ３００と表現することとする。操作ログ３００は、図２に示す操作ログ２０５に対応する。
【００４３】
操作ログ３００は、操作ログを記録したページの識別子であるページＩＤ、このページＩＤで特定されるページ上でユーザの操作がなされた時刻である操作時刻、ユーザの操作の対象であるオブジェクト名などの操作対象、ユーザの操作の内容であるマウス、クリック、入力などの操作内容、ユーザの操作の結果である選択値、入力値などの操作結果によって構成される。このように、操作ログ記録テーブル１４８には複数の操作ログ３００が保存される。なお、前記ページ上でのユーザ操作は、ページ内の操作状況を分析できればよく、必ずしも全ての項目を記録しておく必要はない。例えば、クリック回数のみに着目した場合、操作内容としてクリックを記録しておくのみでも良い。
【００４４】
ログ分析モジュール２４１は、ユーザ操作分析部３２０、可視化データ生成部３２１によって構成される。ユーザ操作分析部３２０は、各ページに対するウェブブラウザ上の、マウスの移動、マウスのクリックや、Ｆｏｒｍへの入力などのユーザの操作を分析する。可視化データ生成部３２１は、ユーザ操作分析部３２０による分析の結果の可視化データを生成、出力する。ここで出力とは、テーブル形式で出力したり、ウェブアプリケーションの画面にオーバーレイ表示形式で表示したりするためのデータを生成することである。
【００４５】
＜システム動作例＞
図４Ａは、本実施例の計算機システムにおけるクライアント装置１００の動作の一例を示すフローチャートである。図４Ｂは、本実施例の計算機システムにおけるウェブサーバ装置１２０の動作の一例を示すフローチャートである。図４Ｃは、本実施例の計算機システムにおけるログサーバ装置１４０の動作の一例を示すフローチャートである。
【００４６】
はじめに、図４Ａにおいて、ウェブブラウザモジュール２００は、ウェブページのページ表示リクエストをウェブサーバ装置１２０に送信する（Ｓ４２１）。ウェブサーバモジュール２２０は、クライアント装置１００からページ表示リクエストを受信すると（Ｓ４４１）、ページ表示リクエストに対応するウェブアプリケーション２２１を呼び出す（Ｓ４４２）。次に、ウェブアプリケーション２２１は、ステップＳ４４１で受信したページ表示リクエストに応じた処理を実行してレスポンスを生成し、生成したレスポンスを機能挿入モジュール２２２に転送する（Ｓ４４３）。
【００４７】
その後、機能挿入モジュール２２２は、転送されたレスポンスに操作ログ取得機能モジュール２２３、ログ取得制御定義テーブルの情報、プロパティ取得定義テーブルの情報を挿入する（Ｓ４４４）。ここで、挿入するプロパティ取得定義テーブルの情報は、クライアント装置１００からのページ表示リクエストに含まれるリクエストＵＲＬが、取得元ＵＲＬ１７１に一致するレコードのみ挿入する。
【００４８】
なお、ステップＳ４４４の処理は、上述したＪ２ＥＥのＳｅｒｖｌｅｔＦｉｌｔｅｒなどウェブサーバ装置１２０が備えるレスポンスのフィルタリング機能を利用することで実現することができる。ステップ４４３からステップ４４５の処理は、ウェブサーバ装置１２０が備えるレスポンスのフィルタリング機能を利用する場合の他、プロキシ装置を利用してレスポンスに挿入しても良い。
【００４９】
ウェブブラウザモジュール２００は、ウェブサーバ装置１２０からレスポンスを受信すると（Ｓ４２２）、スクリプトエンジンモジュール２０１を呼び出し、操作ログ取得機能モジュール２２３を初期化する（Ｓ４２３）。また、ステップＳ４２３の初期化処理では、ウェブブラウザモジュール２００上でのユーザの操作のイベントを監視する操作ログ記録イベントハンドラ２６１を設定する。操作ログ取得機能モジュール２２３の初期化処理（Ｓ４２３）の詳細は後述する。
【００５０】
続いて、操作ログ取得機能モジュール２２３は、ウェブブラウザモジュール２００上でのユーザの操作を操作ログとして取得し、操作ログをウェブブラウザモジュール２００上で一次記録する配列に追加する（Ｓ４２４）。ステップＳ４２４の処理は、ページ遷移のイベントが発生するまで繰り返される（Ｓ４２５）。
【００５１】
ページ遷移のイベントが発生した場合には（Ｓ４２５でＹＥＳ）、操作ログ取得機能モジュール２２３は、ページＩＤ、操作ログ３００をログサーバ装置１４０に送信する（Ｓ４２６）。以上のステップＳ４２１からＳ４２６のクライアント装置１００による処理は、クライアント装置１００上で動作するウェブアプリケーションが終了するまで続けられる（Ｓ４２７）。
【００５２】
なお、本実施例では、ページ単位で操作ログをまとめて、まとめられたログをログサーバ装置１４０に送信しているが、ログを取得する毎に送信したり、別の単位で操作ログをまとめて送信したりしてもよい。
【００５３】
ログサーバ装置１４０のログサーバモジュール２４０は、クライアント装置１００から操作ログを受信し、受信した操作ログを操作ログ記録テーブル１４８に保存する（Ｓ４０１）。ログサーバ装置１４０は、動作を終了するまで処理が続けられる（Ｓ４０２）。
【００５４】
＜操作ログ取得機能モジュールの初期化の例＞
図５は、本実施例の計算機システムにおける操作ログ取得機能モジュール２２３の初期化処理（Ｓ４２３）の一例を示すフローチャートである。初期化処理では、受信したプロパティ取得定義情報を参照し、属性情報取得のためのイベントハンドラを設定する。取得タイミングがｌｏａｄの場合は、ｂｏｄｙ要素のｏｎｌｏａｄイベントに、属性情報取得イベントハンドラ関数であるＧｅｔＩｎｆｏ関数を呼び出すよう設定する。また、ＸｍｌＨｔｔｐＲｅｑｕｅｓｔを用いた動的書き換えを示すＸＨＲｈａｎｄｌｅｒの場合は、ＸｍｌＨｔｔｐＲｅｑｕｅｓｔ（以下、ＸＨＲと略す）オブジェクトの受信コールバック関数終了後に、属性情報取得イベントハンドラ関数であるＧｅｔＩｎｆｏ関数を呼び出すよう設定する。すなわち、ウェブページのトップフレームに対するリクエストとは異なるリクエストに対する受信ハンドラ処理完了後に、情報取得イベントハンドラを呼び出すよう書き換える。
【００５５】
以下、図５を参照しながら初期化処理を説明する。はじめに受け取ったプロパティ取得定義テーブルからレコードを順次取得し（Ｓ５０１、Ｓ５０２）、ステップＳ５０３からステップＳ５０５の処理を行う。プロパティ取得定義の取得タイミング（Ｓ５０３）がｌｏａｄの場合、ｂｏｄｙ要素のｏｎｌｏａｄに、属性情報取得イベントハンドラＧｅｔＩｎｆｏ関数を設定する（Ｓ５０４）。一方、プロパティ取得定義の取得タイミング（Ｓ５０３）が、ＸＨＲｈａｎｄｌｅｒの場合、ＸＨＲの受信完了後に実行される処理の終了後に、属性情報取得イベントハンドラＧｅｔＩｎｆｏ関数の処理を実施するために、ＸＨＲコールバックリスト配列に、本レコードを追加する（Ｓ５０５）。
【００５６】
全てのプロパティ取得定義テーブルの処理が完了後（Ｓ５０２のＮＯ）、ステップＳ５０６からステップＳ５０８の処理を実行する。ＸＨＲコールバックリスト配列にレコードが格納されている場合（Ｓ５０６でＹＥＳ）、ＸＨＲオブジェクトをＭｙＸＨＲオブジェクトでオーバライドする（Ｓ５０７）。オーバライドする関数は、図６Ａで説明するｏｐｅｎ関数、図６Ｂで説明するｓｅｎｄ関数である。最後に、操作ログ記録イベントハンドラを設定する（Ｓ５０８）。本処理では、ログ取得制御定義に従って操作ログ記録イベントハンドラを設定するが、詳細については、図７を用いて後述する。
【００５７】
上記処理例では、動的書き換えの一例として、ＸＨＲによる非同期通信の例を示したが、他に非同期通信のテクニックとして、ＪＳＯＮＰ（JavaScript Object Notation with Padding）や隠しフレームが使われている。ＪＳＯＮＰの場合、Ｓ５０４において、ＪＳＯＮＰで使用するｓｃｒｉｐｔタグのｏｎｌｏａｄまたはｏｎｒｅａｄｙｓｔａｔｅｃｈａｎｇｅイベントに、属性情報取得イベントハンドラ関数ＧｅｔＩｎｆｏを設定する。一方、隠しフレームの場合、隠しフレームで使用するｆｒａｍｅ要素のｏｎｌｏａｄイベントに、属性情報取得イベントハンドラ関数ＧｅｔＩｎｆｏを設定する。ｉｆｒａｍｅによる非同期通信を行っている場合は、ｉｆｒａｍｅ要素のｏｎｌｏａｄイベントに、属性情報取得イベントハンドラ関数ＧｅｔＩｎｆｏを設定する。
【００５８】
また、上記非同期通信以外の動的書き換えの例として、メインとなるブラウザのウインドウから入力用補助ウインドウを別途開き、補助ウインドウでの入力確定値を、メインウインドウに反映させるテクニックも頻繁に利用されている。この場合は、補助ウインドウの入力確定となる操作に対するイベントハンドラの処理終了後に属性情報取得イベントハンドラ関数ＧｅｔＩｎｆｏを呼び出すよう設定する。すなわち、ウェブアプリケーションのメインウインドウに対するイベントハンドラとは異なる、別のウインドウでの処理完了後に、情報取得イベントハンドラを呼び出すよう書き換えることとなる。
【００５９】
＜ＸＨＲオーバライドの例＞
図６Ａは、本実施例の計算機システムにおける操作ログ取得機能モジュールのＭｙＸＨＲ#ｏｐｅｎ関数の処理の一例を示すフローチャートである。ｏｐｅｎ関数では引数として渡されてきたＵＲＬを確認し、プロパティ取得定義を参照し、属性情報取得対象のＵＲＬである場合、そのＵＲＬを一時記録しておき、後述のｓｅｎｄ関数の呼出し時、属性情報取得イベントハンドラ関数であるＧｅｔＩｎｆｏ関数を設定できるよう準備する。
【００６０】
以下、図６Ａを参照しながらｏｐｅｎ処理を説明する。はじめにＸＨＲコールバックリスト配列からレコードを順次取得し（Ｓ６０１、Ｓ６０２）、ステップＳ６０３からステップＳ６０４の処理を行う。レコード中の変化対象がｏｐｅｎの引数ＵＲＬと一致するか確認し（Ｓ６０３）、一致する場合、ＭｙＸＨＲオブジェクトにｈａｎｄｌｅＬｉｓｔ配列を追加し、本レコードを前記配列にｐｕｓｈする（Ｓ６０４）。ＭｙＸＨＲオブジェクトにｈａｎｄｌｅＬｉｓｔ配列が存在している場合には、レコードのｐｕｓｈのみを行う。全てのレコードへの処理完了後、オリジナルオブジェクトであるＸＨＲオブジェクトのｏｐｅｎ関数を呼び出す（Ｓ６０５）。
【００６１】
図６Ｂは、本実施例の計算機システムにおける操作ログ取得機能モジュールのＭｙＸＨＲ#ｓｅｎｄ関数の処理の一例を示すフローチャートである。ｓｅｎｄ関数では、前記ｏｐｅｎ関数で設定したｈａｎｄｌｅＬｉｓｔを参照し、属性情報取得イベントハンドラＧｅｔＩｎｆｏ関数の設定を行う。本処理では、ウェブアプリケーションが設定したＸＨＲのコールバック関数を、ＭｙＸＨＲオブジェクトのｏｎｒｅａｄｙｓｔａｔｅｃｈａｎｇｅプロパティから取得し（Ｓ６２１）、前記ウェブアプリケーションのコールバック関数による受信完了処理終了後に、属性情報取得イベントハンドラＧｅｔＩｎｆｏ関数を呼び出すよう、ｏｎｒｅａｄｙｓｔａｔｅｃｈａｎｇｅプロパティを再定義する（Ｓ６２２）。最後に、オリジナルオブジェクトであるＸＨＲオブジェクトのｓｅｎｄ関数を呼び出す（Ｓ６２３）。
【００６２】
図６Ｃは、本実施例の計算機システムにおける操作ログ取得機能モジュールの属性情報取得イベントハンドラ２６２のであるＧｅｔＩｎｆｏ関数の処理の一例を示すフローチャートである。本処理では、プロパティ取得定義の情報を格納したｈａｎｄｌｅＬｉｓｔ配列を参照し、画面からプロパティ情報を取得するための取得式を適用し、プロパティ情報を取得し、クライアントストレージ領域に格納する。以下、図６Ｃを参照しながらＧｅｔＩｎｆｏ関数の処理を説明する。本処理では、ｈａｎｄｌｅＬｉｓｔ配列からレコードを順次取得し、ステップＳ６４３からステップＳ６４６の処理を行う。はじめに、レコードからプロパティ名を取得し、変数ｐｒｏｐｎａｍｅに代入する（Ｓ６４３）。ついで、レコードから取得式を取得し、変数ｅｘｔｒａｃｔｅｘｐに代入する（Ｓ６４４）。ついで、取得式ｅｘｔｒａｃｔｅｘｐを評価し、画面中から情報を取得し、変数ｉｎｆｏに代入する（Ｓ６４５）。ここで、取得式の評価は、ウェブブラウザプログラム１０５が内蔵するＸＰａｔｈの実行エンジンなど、ＸＰａｔｈを評価できるモジュールであれば、どのような実装でもよい。
【００６３】
ついで、クライアントストレージ領域に、変数名ｐｒｏｐｎａｍｅ、変数値ｉｎｆｏとして格納する（Ｓ６４６）。ここで、クライアントストレージ領域とは、ウェブブラウザプログラム１０５上で動作するスクリプトプログラムからアクセスできるクライアント装置１００上の記憶領域である。クライアントストレージ領域は、スクリプト言語の変数やＨＴＴＰ Ｃｏｏｋｉｅ、Ｍｉｃｒｏｓｏｆｔ社のＩｎｔｅｒｎｅｘｔ  Ｅｘｐｌｏｒｅ（ＴＭ）のＵｓｅｒＤａｔａ領域、ＨＴＭＬ５のローカルストレージ機能など、スクリプト言語からアクセスできる領域であればどのような技術を用いてもよい。また、サーバと通信し、サーバ側に保存しても良い。なお、サーバ側に保存する場合には、プライバシに配慮し、暗号化などを施すことが望ましい。また、属性情報は、ユーザの固有データそのものを記録するのではなく、セグメント分けによる分類など、抽象化した情報を持つようにしても良い。抽象化することで、よりプライバシに配慮した形で、ユーザのプロファイル情報を記録することが可能となる。
【００６４】
図８にクライアントストレージに格納されたプロパティ情報の例を示す。図８に示す通り、プロパティ名８０１とプロパティ値８０２の組として、ユーザのプロパティ情報を格納される。本例ではｎｉｔｅｍが２（８０３）、ｐｏｉｎｔが８２１０（８０４）というプロパティが格納されている。
【００６５】
＜操作ログ記録イベントハンドラ設定の処理例＞
図７は、本実施例の計算機システムにおける操作ログ取得機能モジュールの操作ログ記録イベントハンドラ２６１の設定処理（Ｓ５０８）の一例を示すフローチャートである。本処理では、ログ取得制御定義とクライアントストレージに格納されるプロパティ情報を参照し、ログ記録イベントハンドラを設定する。以下、図７を参照しながら操作ログ記録イベントハンドラ設定処理を説明する。本処理では、ログ取得制御定義から定義レコードを順次取得し、ステップＳ７０３からステップＳ７０７の処理を行う。はじめに、レコードから条件式、取得レベルを取得し、それぞれ、変数ｃｏｎｄ、配列ｅｖｌｉｓｔに代入する（Ｓ７０３）。ｃｏｎｄの値がＤＥＦＡＵＬＴの場合、ｅｖｌｉｓｔ配列中のイベント種別について、それぞれ、イベントハンドラを設定する。図１Ｅの場合、ｆｏｒｍ、ｃｌｉｃｋ、ｓｃｒｏｌｌに関する操作ログを取得するイベントハンドラを設定する。ｃｏｎｄがＤＥＦＡＵＬＴではない場合、ｃｏｎｄ式中に現れるプロパティをクライアントストレージから取得する（Ｓ７０５）。次いで、ｃｏｎｄ式を評価する（Ｓ７０６）。評価の結果ｔｒｕｅの場合、ステップＳ７０７にて、イベントハンドラを設定する。図１Ｅのレコード１６２がｔｒｕｅとなった場合、ｍｏｕｓｅ、ｆｏｒｍ、ｃｌｉｃｋ、ｓｃｒｏｌｌに関する操作ログを取得するイベントハンドラを設定する。評価の結果ｆａｌｓｅの場合、ステップＳ７０１に戻り、次のレコードを評価する。
【００６６】
図９は、本実施例の計算機システムにおけるウェブアプリケーションの画面の一例を示す図である。また、図１０は、図９に示す画面の一例を生成するＨＴＴＰ通信の一例を示す図である。本画面例において、９０１で示した“日立太郎”がｉｎｄｅｘ．ｊｓｐのレスポンス（１００１）に含まれる情報、９０２、９０３、９０４でそれぞれ示した“8210”、“2”、“4960”がｕｉｎｆｏ．ｊｓｐのレスポンス（１００３）に含まれる情報で、これは、ｉｎｄｅｘ．ｊｓｐからＸＨＲを用いて、動的に取得され、画面を書き換えることで実現しているものとする（図１０の１００２、１００３、１００４）。
【００６７】
このようなアプリケーションにおいて、図１Ｅの条件式１６２では、ポイント残高が５０００以上、カートに格納されている商品点数が１以上の場合、マウスの動きを含めて詳細に記録する定義例を表している（１６２）。また、図１Ｆでは、ユーザ名をｎａｍｅ（１７５）、ポイント残高をｐｏｉｎｔ（１７６）、カートに格納されているアイテム数をｎｉｔｅｍ（１７７）、ユーザの所在地をａｒｅａ（１７８）として抽出する定義である。図９に示すユーザの場合、条件式１６２に該当するので、マウスの動きも含めて詳細に操作ログを記録する。本例では、購買に結びつきそうなユーザを、ポイント残高が５０００ポイント以上で、ショッピングカートに商品を格納していると仮定し、この条件にマッチするユーザの操作ログを詳細に収集、分析する例を示している。本発明により、ユーザの属性に応じて、操作ログの取得レベルを制御可能となり、効率的なログの収集が可能となる。
【００６８】
＜プロパティ取得定義の設定例＞
ウェブアプリケーションが生成する画面からユーザ属性を取得するための定義情報となるプロパティ取得定義テーブル１３１の設定方法について説明する。ＸＨＲやＪＳＯＮＰなど非同期通信が混在すると、取得タイミングを設定するのは困難である。そこでプロパティ取得定義の設定支援の方法について図１１、図１２を用いて説明する。
【００６９】
設定支援方法のおおまかな流れは以下の通りである。設定を行う管理者ユーザは、ウェブアプリケーションを通常通り操作する。ウェブサーバ装置１２０は、通常通り、ＨＴＴＰリクエストを受け付ける。ウェブサーバ装置１２０は、操作ログ取得機能モジュール２２３をレスポンスに挿入後（Ｓ４４４）、ウェブアプリケーションのレスポンス内容を、新たに設けたコンテンツデータベースに保存する。本機能は機能挿入モジュール２２２にプロパティ取得定義機能を設けることで実現する。コンテンツデータベースは、ウェブサーバ装置１２０からアクセス可能であれば、内蔵していても、別の装置で稼動していても良い。
【００７０】
操作ログ取得機能モジュール２２３は、管理者ユーザからプロファイル情報とするウェブページ内の箇所の選択を受け付け、ウェブサーバ装置１２０に受け付けた箇所を送信する機能を新たに設ける。管理者ユーザが、ウェブアプリケーションの画面から、プロファイル情報とする箇所を選択すると、機能挿入モジュール２２２内のプロパティ取得定義機能は、コンテンツデータベースを参照し、該当する箇所がどのコンテンツの情報を基に生成されたかを検索する。どのコンテンツに含まれているか、の情報を基に取得タイミングを推定し、プロパティ取得定義テーブル１３１に定義情報を追加する。
【００７１】
図１１に検索処理を示す。まず初めに、画面中の取得箇所と、プロパティ名をウェブブラウザモジュール２００から受け付ける。ここで、プロパティ名は一次変数ｐｒｏｐｎａｍｅに格納する（Ｓ１１００）。ついで、取得箇所のＸＰａｔｈを生成し、一次変数ｘｐａｔｈに格納する（Ｓ１１０１）。ついで、コンテンツデータベースから当該ページおよび、当該ページに含まれるコンテンツを取得する（Ｓ１１０２）。図１２にコンテンツデータベースの構成について示す。コンテンツデータベースは、コンテンツのＵＲＬ（１２０１）、コンテンツの内容（１２０２）および、コンテンツが他のコンテンツをインラインコンテンツとして含む場合、インラインコンテンツ（１２０３）を含む。
【００７２】
ついで、当該ページに取得箇所が含まれているかを検索する（Ｓ１１０３）。当該ページに含まれている場合は、単純に当該ページの表示完了後に情報を取得するよう、プロパティ取得定義１３１にレコードを追加する。一次変数ｓｒｃｐａｇｅに当該ページのＵＲＬを、一次変数ｔｉｍｉｎｇに“load”をそれぞれ代入する（Ｓ１１０４）。最後に、プロパティ取得定義テーブル１３１に、プロパティ名＝ｐｒｏｐｎａｍｅ、取得元URL＝当該ページのＵＲＬ、取得式＝ｘｐａｔｈ、取得契機（変化対象）＝ｓｒｃｐａｇｅ、取得契機（取得タイミング）＝ｔｉｍｉｎｇとしてレコードを追加する（Ｓ１１０５）。
【００７３】
当該ページに含まれていない場合は、当該ページが含むインラインコンテンツについて、コンテンツ中に指定部分が含まれているかを検索し、その結果を一次変数ｓｒｃｐａｇｅに格納（Ｓ１１０６）する。
【００７４】
ついで、ｓｒｃｐａｇｅが当該ページから、どのように呼び出されているかを検出し、取得タイミングを推定する。ｓｒｃｐａｇｅが当該ページ中のｓｃｒｉｐｔタグのｓｒｃ属性に存在する場合（Ｓ１１０７）、ＪＳＯＰによる非同期通信と判断し、一次変数ｔｉｍｉｎｇに“ｓｃｒｉｐｔｌｏａｄ”を格納する（Ｓ１１０８）。ｓｒｃｐａｇｅが当該ページ中のｆｒａｍｅタグもしくはｉｆｒａｍｅタグのｓｒｃ属性に存在する場合（Ｓ１１０９）、隠しフレームによる非同期通信と判断し、一次変数ｔｉｍｉｎｇに“ｆｒａｍｅｌｏａｄ”を格納する（Ｓ１１１０）。上記の何れでも無い場合、ＸＨＲによる非同期通信と判断し、一次変数ｔｉｍｉｎｇに“ＸＨＲＨａｎｄｌｅｒ”を格納する（Ｓ１１１１）。最後にステップＳ１１０５にて、プロパティ取得定義テーブル１３１にレコードを追加する。
【００７５】
以上説明したように、本実施例におけるプロパティ取得定義ルールの設定方法は、ウェブアプリケーションのレスポンスを格納するコンテンツデータベースを備え、ウェブアプリケーションのレスポンスをこのコンテンツデータベースに記録する手順と、レスポンスを表示したウェブブラウザ上でプロパティ取得場所を指定する手順と、指定箇所がどのレスポンスに含まれているかを前記コンテンツデータベースから検索する手順を含んでいる。
【００７６】
また、このウェブアプリケーションのレスポンスをコンテンツデータベースに記録する手順は、トップフレームと、トップフレームの表示の延長で呼び出される関連ページを組として記録する手順を更に含み、指定箇所がどのレスポンスに含まれているかをコンテンツデータベースから検索する手順は、関連ページから指定箇所を検索し、トップページから前記検索にヒットした関連ページの呼び出し方法にて、プロパティ取得ルールを決定する手順を含んでいる。
【００７７】
更に、この呼び出し方法の決定は、ｓｃｒｉｐｔタグ、ｆｒａｍｅタグもしくはｉｆｒａｍｅタグの何れかのｓｒｃ属性を参照することで決定する手順、
を含んでいる。
【実施例２】
【００７８】
続いて、第２の実施例として、複数のウェブページから属性情報を取得して利用するシステムについて説明する。複数のウェブページから属性情報を取得し、ユーザのプロファイル情報を構築することで、より高度な制御が可能となる。複数ページに跨った属性情報の一例を図１３に示す。ここで、ＨＴＴＰ通信１０００〜１００３は、図９および図１０に示したアプリケーションの一例と同じ通信を示している。また、ＨＴＴＰ通信１３００、１３０１は、ユーザがｉｎｄｅｘ．ｊｓｐ表示後、会員情報を表示するｍｅｍｂｅｒ．ｊｓｐを表示していることを示す。
【００７９】
１００３の応答に対する属性情報取得の処理完了後のユーザプロファイル情報は、図８で示した構成となっている。ついで、ｍｅｍｂｅｒ．ｊｓｐを表示すると、図１Ｆで示したプロパティ取得定義ルール１７８が起動し、ユーザの所在地情報を取得する。結果、図１４に示すように、複数ページに跨ったプロファイル情報を取得することこができる。複数のページに跨ってプロファイル情報を保持するために、プロファイル情報は、ページに跨っても変数のスコープが維持されるＨＴＴＰ  ＣｏｏｋｉｅやＵｓｅｒＤａｔａ領域、ＨＴＭＬ５のローカルストレージ機能などに保持する。なお、ログインし直したケースなど、アプリケーションのセッションを跨ったケースにおいても、ユーザを特定し、上記クライアントストレージ領域を活用することで、プロファイル情報の構築が可能である。上記により、より多くのユーザの属性に応じて、操作ログの取得レベルを制御可能となり、効率的なログの収集が可能となる。なお、プロファイル情報は、前記実施例１と同様にサーバ側に保存することも可能である。その場合、プライバシに配慮し、暗号化などを施すことが望ましい。また、属性情報は、ユーザの固有データそのものを記録するのではなく、セグメント分けによる分類など、抽象化した情報を持つようにしても良い。抽象化することで、よりプライバシに配慮した形で、ユーザのプロファイル情報を記録することが可能となる。
【産業上の利用可能性】
【００８０】
以上詳述した本発明は、ウェブアプリケーションレイヤの情報を基に、操作ログの取得レベルの制御を行うことを可能とし、ウェブアプリケーションの改善のための情報を効率的に収集、分析することを可能とする。
【符号の説明】
【００８１】
１００…クライアント装置
１２０…ウェブサーバ装置
１３０…ログ取得制御定義テーブル
１３１…プロパティ取得定義テーブル
１４０…ログサーバ装置
２００…ウェブブラウザモジュール
２０１…スクリプトエンジンモジュール
２２０…ウェブサーバモジュール
２２１…ウェブアプリケーション
２２２…機能挿入モジュール
２２３…操作ログ取得機能モジュール
２４０…ログサーバモジュール
２４１…ログ分析モジュール。
【図１Ａ】
0005325177.tif 000002
【図１Ｂ】
0005325177.tif 000003
【図１Ｃ】
0005325177.tif 000004
【図１Ｄ】
0005325177.tif 000005
【図１Ｅ】
0005325177.tif 000006
【図１Ｆ】
0005325177.tif 000007
【図２】
0005325177.tif 000008
【図３】
0005325177.tif 000009
【図４Ａ】
0005325177.tif 000010
【図４Ｂ】
0005325177.tif 000011
【図４Ｃ】
0005325177.tif 000012
【図５】
0005325177.tif 000013
【図６Ａ】
0005325177.tif 000014
【図６Ｂ】
0005325177.tif 000015
【図６Ｃ】
0005325177.tif 000016
【図７】
0005325177.tif 000017
【図８】
0005325177.tif 000018
【図９】
0005325177.tif 000019
【図１０】
0005325177.tif 000020
【図１１】
0005325177.tif 000021
【図１２】
0005325177.tif 000022
【図１３】
0005325177.tif 000023
【図１４】
0005325177.tif 000024