(57)【特許請求の範囲】
【請求項１】
ウェブサーバと、ウェブブラウザと、前記ウェブページ上の操作ログを保存するログ連携サーバと、それらを相互に結合するネットワークから構成されるシステムにおけるウェブアプリケーションの操作再現方法であって、
前記ウェブサーバは、
生成したウェブページを前記ウェブブラウザに送信する際に、前記ウェブブラウザ上で動作する操作ログ取得機能と前記ウェブページの文書構造の変化を検出、保存する差分検出機能を前記ウェブページに挿入して送信し、
前記ウェブブラウザは、
受信した前記ウェブページに挿入された前記差分検出機能を実行して、前記ウェブページの文書構造を第１の文書構造として保存し、
前記操作ログ取得機能を実行して、前記ウェブページ上での操作ログを生成、保存し、
前記差分検出機能を実行して、前記ウェブページの文書構造を前記第１の文書構造と比較し、差異があった場合に当該差異を前記操作ログに関連付けて保存し、
前記ログ連携サーバは、
保存された前記操作ログと、関連付けて保存された前記差異を利用して操作の再現を行う、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項２】
請求項１に記載のウェブアプリケーションの操作再現方法であって、
前記差分検出機能は、
差異があった場合に、差異があった前記文書構造を前記操作ログに関連付けて保存する、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項３】
請求項２に記載のウェブアプリケーションの操作再現方法であって、
前記差分検出機能は、
前記操作ログに関連付けて保存する前記文書構造として、前記第１の文書構造との差分を用いる、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項４】
請求項２に記載のウェブアプリケーションの操作再現方法であって、
前記差分検出機能は、
前記文書構造を構成するコンテンツが前記第１の文書構造に保存されているコンテンツと差異がある場合に、当該コンテンツに対する差異を前記操作ログに関連付けて保存する、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項５】
請求項４に記載のウェブアプリケーションの操作再現方法であって、
前記ウェブブラウザが、前記操作ログに関連付けて保存された、前記コンテンツの差異を前記ログ連携サーバに送信する際に、前記コンテンツに対する差異のうち、最後に保存された前記コンテンツに対する差異のみを送信する、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項６】
請求項１に記載のウェブアプリケーションの操作再現方法であって、
前記ログ連携サーバは、
前記操作ログに関連付けて、差異があった前記文書構造が保存されている場合、保存されている前記操作ログの操作を再現して表示する際に、前記文書構造に差異が生じることを示す、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項７】
請求項１に記載のウェブアプリケーションの操作再現方法であって、
前記ログ連携サーバは、
前記操作ログに関連付けて、差異があった前記文書構造が保存されている場合、保存されている前記操作ログの操作の再現時に、当該操作を実際に実行して再現を行う、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項８】
請求項７に記載のウェブアプリケーションの操作再現方法であって、
前記ログ連携サーバは、
前記操作を実際に実行して再現を行うのに先立ち、前記操作を実際に実行してよいか否かの確認を行う、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項９】
請求項１に記載のウェブアプリケーションの操作再現方法であって、
前記差分検出機能で比較した結果、差異があった場合に、比較された前記文書構造を前記第１の文書構造とする、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項１０】
請求項１に記載のウェブアプリケーションの操作再現方法であって、
前記ウェブブラウザの外部から前記ウェブページの文書構造を取得し、取得した前記文書構造を前記第１の文書構造とする、
ことを特徴とするウェブアプリケーションの操作再現方法。
【請求項１１】
ウェブアプリケーションの操作再現を行うウェブアプリケーションの操作再現システムであって、
ウェブサーバ装置と、ウェブブラウザを実行するクライアント装置と、前記ウェブページ上の操作ログを保存するログ連携サーバ装置と、それらを相互に接続するネットワークとから構成され、
前記ウェブサーバ装置は、
生成したウェブページを前記ウェブブラウザに送信する際に、前記ウェブブラウザ上で動作する操作ログ取得機能と前記ウェブページの文書構造の変化を検出、保存する差分検出機能を挿入して送信し、
前記クライアント装置の前記ウェブブラウザは、
受信した前記ウェブページに挿入された前記差分検出機能を実行して、前記ウェブページの文書構造を第１の文書構造として保存し、
前記操作ログ取得機能を実行して、前記ウェブページ上での操作ログを生成、保存し、
前記差分検出機能を実行して、前記ウェブページの文書構造を前記第１の文書構造と比較し、差異があった場合に当該差異を前記操作ログに関連付けて保存し、
前記ログ連携サーバ装置は、
保存された前記操作ログと、関連付けて保存された前記差異を利用して操作の再現を行う、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項１２】
請求項１１に記載のウェブアプリケーションの操作再現システムであって、
前記クライアント装置の前記ウェブブラウザは、
前記差分検出機能による比較の結果、差異があった場合に、差異があった前記文書構造を前記操作ログに関連付けて保存する、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項１３】
請求項１２に記載のウェブアプリケーションの操作再現方システムであって、
前記クライアント装置の前記ウェブブラウザは、
前記操作ログに関連付けて保存する前記文書構造として、前記第１の文書構造との差分を用いる、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項１４】
請求項１２に記載のウェブアプリケーションの操作再現システムであって、
前記クライアント装置の前記ウェブブラウザは、
前記文書構造を構成するコンテンツが前記第１の文書構造に保存されているコンテンツと差異がある場合に、当該コンテンツの差異を前記操作ログに関連付けて保存する、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項１５】
請求項１４に記載のウェブアプリケーションの操作再現システムであって、
前記クライアント装置の前記ウェブブラウザは、
前記操作ログに関連付けて保存された、前記コンテンツの差異を前記ログ連携サーバに送信する際に、前記コンテンツに対する差異のうち、最後に保存された前記コンテンツに対する差異のみを送信する、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項１６】
請求項１１に記載のウェブアプリケーションの操作再現システムであって、
前記ログ連携サーバは、
前記操作ログに関連付けて、差異があった前記文書構造が保存されている場合、保存されている前記操作ログの操作を再現して表示する際、前記文書構造に差異が生じることを示す、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項１７】
請求項１１に記載のウェブアプリケーションの操作再現システムであって、
前記ログ連携サーバは、
前記操作ログに関連付けて、差異があった前記文書構造が保存されている場合、保存されている前記操作ログの操作の再現時に、前記操作を実際に実行して再現を行う、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項１８】
請求項１７に記載のウェブアプリケーションの操作再現システムであって、
前記ログ連携サーバは、
前記操作を実際に実行して再現を行うのに先立ち、前記操作を実際に実行してよいか否かの確認を行う、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項１９】
請求項１１に記載のウェブアプリケーションの操作再現システムであって、
前記クライアント装置の前記ウェブブラウザは、
前記差分検出機能で比較した結果、差異があった場合に、比較された前記文書構造を前記第１の文書構造とする、
ことを特徴とするウェブアプリケーションの操作再現システム。
【請求項２０】
請求項１１に記載のウェブアプリケーションの操作再現システムであって、
前記クライアント装置の前記ウェブブラウザは、前記ネットワークに接続される外部装置から前記ウェブページの文書構造を取得し、取得した前記文書構造を前記第１の文書構造とする、
ことを特徴とするウェブアプリケーションの操作再現システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウェブアプリケーションの操作を記録し、再現する操作再現処理技術に関するものである。
【背景技術】
【０００２】
近年、様々なサービスがウェブアプリケーションで実現され利用されている。これは、ウェブアプリケーションの利用において、利用者はウェブブラウザのみ用意すればよい利便性の高さが一つの理由として挙げられる。ウェブアプリケーションは、軽量スクリプト言語の普及や、低コストで機能の充実した開発環境の提供により、専門家やリソースが豊富な大企業でなくとも様々な機能を持った、表現力豊かなウェブアプリケーションを開発して、ウェブ上でのサービス提供ができるようになってきた。また、ユーザ参加型のウェブサービスも出現し、それにともないウェブ上のコンテンツが動的に変化するケースも多く見られるようになり、情報の即時性や、多様なソースからの情報が得られるため、ウェブサービスの利用シーンが広がりを見せている。
【０００３】
このような背景から、業務や社会生活において、ウェブアプリケーションが広く使われ、ウェブアプリケーションの使いやすさが業務効率やビジネスの成否に、大きく影響するようになってきた。そのため、ウェブアプリケーションを使ったサービスの提供者は、ウェブアプリケーションの使われ方に強い関心をもつようになった。
【０００４】
従来、ウェブアプリケーションは、個々の情報や作業に、それぞれ別のウェブページを割り当て、ウェブページの遷移によって、一連の情報提供や複数の作業からなる処理を実現してきた。そのため、ウェブアプリケーションを実行するウェブサーバへのアクセスログを解析することによって、ウェブページの遷移が分かり、ウェブアプリケーションの使われ方をある程度理解することができた。しかし、最近ではスクリプト言語などをウェブページに埋め込むなどの方法で、ウェブページ上の表示内容を動的に変化させ、1ページのウェブページで大量の情報を提供したり、複数の作業を可能とすることができるようになった。そのため、ウェブアプリケーションの使われ方は、より高度に、複雑になっている。ウェブページ単位での記録しか残らないウェブサーバのアクセスログでは、このような高度で、複雑なウェブアプリケーションの使われ方を十分に理解することができなくなっている。そこで、ウェブアプリケーションを、ウェブページの単位よりも細かく、ウェブページ上での操作の単位で記録、保存を行い、それを再生して確認する技術が求められている。
【０００５】
これに対して、従来技術としては、ビデオ撮影によりウェブアプリケーションの操作を撮影し、再生する方法が良く利用されてきた。しかしこの方法は、継続的かつ大量の記録・再生には向かないという問題があった。また、ウェブページを閲覧するウェブブラウザが動作しているクライアント装置上に、画面のキャプチャを行う動画キャプチャツールをインストールして記録・再生する方法も、再生に時間がかかる問題があった。動画キャプチャツールと類似の技術で、画面のキャプチャを行う代わりに、クライアント装置上での操作ログを記録するツールもあるが、動画キャプチャツールと同様に、クライアント装置へのインストール作業が必要で、インターネットなどの環境では導入しづらいという問題があった。さらに、軽量スクリプト言語を利用して、ウェブページ上の操作ログを記録することも可能であるが、動的にウェブページの文書構造が変化する場合には、操作の再現性を上げることが困難であった。
【０００６】
これに対して、特許文献１では、ウェブブラウザ画面上でフォームを操作することによってアクセス可能な動的なコンテンツに対するアクセス履歴を操作イベントと操作対象のオブジェクトのプロパティを組にして保存し、実際に操作イベントを実行して動的な変化を起こさせて再現する方法が開示されている。
【０００７】
また、特許文献２では、ウェブページでの操作者による入力操作手順をスクリプトファイルに記録し再生するイベント記録再生装置と、記録時と再生時のウェブページの差分抽出手段を持ち、差分抽出手段で抽出した差分とスクリプトファイルに基づき変更後のウェブページでも入力操作手順を再現して実行する方法が開示されている。
【０００８】
更に、特許文献３には、ユーザの操作に伴って動的に変化するようなコンテンツが端末に表示された場合にも、操作に伴って発生した通信時のパケットを収集しておき、それを元に当該端末の画面を再現する方法が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００１−０６０１７９号公報
【特許文献２】特開２００４−２８７９２９号公報
【特許文献３】特開２００９−１７６１２４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献１では、実際に実行することで再現できない時間依存のコンテンツや，振込み処理など実際には実行することができない場合に対応できない問題がある。また、特許文献２の方法の目的は、サーバからロードされるドキュメントが変化した場合にも、変化した後のドキュメント上で記録した操作を実行することであり、操作を記録したときの状況を再現することではない。また、差分抽出がドキュメント単位での差分抽出であり、クライアント側で動的に変化する場合には操作の再現ができない問題がある。さらに、特許文献３では、画面の変化がクライアント側だけで起こる場合にはパケットが発生せず、画面の再現ができない問題がある。
【００１１】
以上に基づき、本発明が解決しようとする課題は、以下の通りである。
【００１２】
クライアント側で動的に変化するコンテンツを含むウェブページの操作再現を精度良く実現することがひとつの課題である。さらに、このような精度の良い操作再現を、動的に変化するコンテンツのログを保存するのに大量の保存領域を必要とするような、拡張性の低い方法ではなく、効率的で拡張性の高い方法で実現することも課題である。また、ウェブ操作の再現時に、極力実際に操作を実行せずに再現を行うことも課題である。
【００１３】
クライアント側で動的に変化するコンテンツを含むウェブページの操作の再現性向上を実現するには、これまでは大量の保存領域を使って操作毎にすべてのコンテンツのログを保存したり、実際に操作を実行して動的な変化を実際に起こさせたりする必要があった。このため、大量のリソースを利用するために多数・継続的に記録を残していくことが困難であったり、実際に実行を行うことにより生じる副作用、例えばサーバ側の状態に対して不必要な変更が加えられるなどの問題が生じていた。これらを解決することが課題である。
【００１４】
すなわち、本発明においては、動的に変化するウェブページ上での操作の再現性を高めた、ウェブアプリケーションの操作再現方法およびシステムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記の目的を達成するため、本発明においては、ウェブサーバと、ウェブブラウザと、ウェブページ上の操作ログを保存するログ連携サーバと、それらを相互に結合するネットワークから構成されるシステムにおけるウェブアプリケーションの操作再現方法およびシステムであって、ウェブサーバは、生成したウェブページをウェブブラウザに送信する際に、ウェブブラウザ上で動作する操作ログ取得機能とウェブページの文書構造の変化を検出、保存する差分検出機能をウェブページに挿入して送信し、ウェブブラウザは、受信したウェブページに挿入された差分検出機能を実行して、ウェブページの文書構造を第１の文書構造として保存し、操作ログ取得機能を実行して、ウェブページ上での操作ログを生成、保存し、差分検出機能を実行して、ウェブページの文書構造を第１の文書構造と比較し、差異があった場合に当該差異を操作ログに関連付けて保存し、ログ連携サーバは、保存された操作ログと、関連付けて保存された差異を利用して操作の再現を行うウェブアプリケーションの操作再現方法およびシステムを提供する。
【００１６】
また、上記の目的を達成するため、本発明による好適な態様のウェブアプリケーションの操作再現方法およびシステムでは、ウェブアプリケーションが動作するウェブサーバにおいて、ウェブアプリケーションが生成したウェブページを要求したクライアント装置やユーザ、そのウェブページ固有の識別子を保存し、さらにウェブページに、ウェブブラウザ上での操作をクライアント装置上に操作ログとして保存し、外部からの要求の有無を判定して、要求に応じて保存した操作ログを送信する機能を挿入する。またウェブサーバ側に保存した識別子の一覧を表示して選択可能なインタフェースを設け、選択した識別子に関わる操作ログを持つクライアント装置が選択内容を判定可能とすることで、多数のユーザの操作ログから、選択的に操作ログを収集して再生することを実現する。動的に変化するコンテンツを含むウェブページに対しては、サーバ側で動的に変化する場合には、ウェブサーバにおいて、レスポンスに含まれるウェブページのコンテンツを、識別子と対応付けて保存しておき、操作の再生時に、保存してあるコンテンツを使うことで、ダイナミックコンテンツの正しい再生を実現する。
【００１７】
一方、クライアント装置側で動的に変化する場合には、ウェブブラウザ上での操作や、経過時間などに応じてウェブページの文書構造を確認し、サーバから送信されたウェブページの文書構造との差分を検出、操作ログと関連付けて保存する機能を持った差分検出機能をウェブページに挿入して保存する。また、このようにして保存されたウェブページ上での操作の再現は、操作の再生時に、操作に関連付けられて保存されているウェブページの文書構造の差分を、再現を行っているウェブページに反映させて操作の再現を行う。
【００１８】
更に、差分検出機能がウェブページの動的な変化を検出した際に、文書構造の差分を保存する代わりに、動的な変化があったことを示すフラグを操作と関連付けて保存し、そのようなウェブページ上での操作の再現時には、動的な変化がある操作の再生時に、その操作のみを実際に実行することで、操作の再現の精度を向上させる。
【発明の効果】
【００１９】
本発明により、動的に変化するウェブページ上での操作の再現を、大量のリソースを消費せずに精度良く実現することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】各種の実施例が対象とするウェブアプリケーションを実行するシステム構成図である。
【図２】各種の実施例によるウェブアプリケーションの操作再現処理フローの図である。
【図３】第１の実施例に係る、操作記録の処理フロー図である。
【図４】第１の実施例に係る、ウェブページの文書構造の例を示す図である。
【図５】第１の実施例に係る、操作ログの例を示す図である。
【図６】第２の実施例に係る、操作記録の処理フロー図である。
【図７】第３の実施例に係る、操作記録の処理フロー図である。
【図８】第４の実施例に係る、操作記録の処理フロー図である。
【図９】第５の実施例に係る、操作記録の処理フロー図である。
【図１０】第６の実施例に係る、操作記録の処理フロー図である。
【図１１】第１の実施例に係る、操作再生の処理フロー図である。
【図１２】第１の実施例に係る、操作再生のシーケンス図である。
【図１３】第１の実施例に係る、操作再現対象のウェブページを選択するウェブページの例を示す図である。
【図１４】第１の実施例に係る、操作再現対象の操作を選択するウェブページの例を示す図である。
【図１５】第１の実施例に係る、操作再現と操作再現を制御するウェブページの例を示す図である。
【図１６】第１の実施例の変形例に係る、操作再現と操作再現を制御するウェブページの例を示す図である。
【図１７】第７の実施例が対象とするウェブアプリケーションを実行するシステム構成例を示す図である。
【図１８】第７の実施例に係る、操作記録の処理フロー図である。
【発明を実施するための形態】
【００２１】
以下、本発明の種々の実施例を図面に従い説明する。本明細書において、サーバ装置、クライアント装置、外部再生装置、あるいは外部装置等、システム中の数々の装置が説明されるが、これらの装置は通常の計算機構成を備え、プロセッサなどの処理部、メモリやローカルディスクなどの記憶部、ディスプレイ、キーボードやマウスなどの入出力部、ネットワークインタフェースから構成される。各種のプログラムが処理部であるプロセッサ上で実行されるが、このプログラムが実行されている状態をモジュールと呼び、例えば、ウェブブラウザプログラムがプロセッサ上で実行されている場合、ウェブブラウザモジュールと呼ぶ。また、個々のプログラムは、コード、機能、機能モジュール等と称される場合がある。
【実施例１】
【００２２】
第１の実施例によるウェブアプリケーションの操作記録・再生方法を図１から図５を使って説明する。図１は、各種の実施例が対象とするウェブアプリケーションを実行するシステムのハードウェア構成と、ソフトウェア構成の例を示すシステム構成図である。
【００２３】
図１において、システムのハードウェアは、クライアント装置１０１、ウェブサーバ装置１２１、ログ連携サーバ装置１４１、外部再生装置１８１と、これらの装置を接続するネットワーク１６１から構成される。なお、各装置のハードウェアは同一のハードウェアで実現されても、複数台で構成されてもよい。
【００２４】
クライアント装置１０１、ウェブサーバ装置１２１、ログ連携サーバ装置１４１、外部再生装置１８１は、すべてプロセッサ１０３、１２３、１４３、１８４、メモリ１０７、１２６、１４７、１８５、入出力部１０２、１２５、１４６、１８３、ネットワークインタフェース１０６、１２２、１４２、１８２をもち、相互に接続されている。クライアント装置１０１、ウェブサーバ装置１２１、ログ連携サーバ装置１４１は、さらにローカルディスク１０４、１２４、１４４をもつ。但し、一部の装置ではこれらの構成要素の一部が欠けてもよい。
【００２５】
クライアント装置１０１のメモリ１０７には、ウェブブラウザプログラム１０８、及びそれに付随したスクリプトエンジンプログラム１０９が格納されている。なお、これらのプログラムは、プロセッサ１０３に読み込まれて実行される。ウェブブラウザプログラム１０８は、ウェブページをリクエストしたり、リクエストしたウェブページのレスポンスを受信し、解釈して表示画面を生成する機能などを持つ。スクリプトエンジンプログラム１０９は、ウェブページのレスポンスに含まれるスクリプトコードを解釈してスクリプトコードに書かれている処理をプロセッサ１０３で実行する機能を持つ。
【００２６】
なお、このウェブブラウザプログラム１０８に付随したスクリプトエンジンプログラム１０９は、ウェブブラウザプログラム１０８に内在される場合もあるので、本明細書にあって、ウェブブラウザプログラムやウェブブラウザモジュールという場合、スクリプトエンジンプログラムやスクリプトエンジンモジュールが内在する場合と付随する場合の何れかの意味を持つ点留意されたい。
【００２７】
入出力部１０２には、キーボードやマウス、モニタなどが接続され、プログラムの実行や停止の指示を行ったり、プログラムの実行結果をモニタに表示するために利用される。プロセッサ１０３は、メモリ１０５からプログラムを読み込んで処理を実行する。ネットワークインタフェース１０６は、クライアント装置１０１の外部の装置との間で、ネットワーク１６１を介してウェブサーバ装置とのリクエスト、レスポンスの送受信や、操作ログの送受信を行う。
【００２８】
ウェブサーバ装置１２１のメモリ１２６には、ウェブサーバプログラム１２７、機能挿入プログラム１２８、識別子送信プログラム１２９、コンテンツ送信プログラム１３３が格納されている。これらのプログラムは、お互いに包含関係にあってもよく、例えば、識別子送信プログラム１２９がウェブサーバプログラム１２７に含まれていてもよい。ウェブサーバプログラム１２７には、ウェブアプリコード１３０が含まれる、もしくは併設される。機能挿入プログラム１２８には、操作ログ取得コード１３１とコンテンツ改変コード１３２、差分検出コード１３３が含まれる。これらのプログラムは、プロセッサ１２３に読み込まれて実行される。
【００２９】
ウェブサーバプログラム１２８は、クライアント装置１０１などの外部の装置からのリクエストに応じてウェブページのレスポンスを生成して返信する機能を持つ。機能挿入プログラム１２８はウェブページのレスポンスに対して、レスポンスに含まれるコンテンツの追加や修正を行う機能を持つ。
【００３０】
識別子送信プログラム１２９は、ウェブサーバプログラム１２７で生成したウェブページに関連する識別子を生成もしくは取得して、外部の装置に送信する機能を持つ。ウェブページに関連する識別子としては、ウェブページのリクエスト毎にユニークな値をもつＩＤや、ウェブページのリクエスト元を特定できるようなＩＤなどが挙げられる。
【００３１】
コンテンツ送信プログラム１３４は、ウェブサーバプログラム１２７で生成したウェブページのコンテンツを外部の装置に送信する機能を持つ。ウェブサーバプログラム１２７も、ウェブページのコンテンツをリクエスト元のクライアント装置に送信する機能を持つが、コンテンツ送信プログラム１３４では、ログ連携サーバ装置１４１や、外部再生装置１８１などのリクエスト元以外の外部の装置にもコンテンツを送信でき、その際にそのウェブページに関連した識別子と関連付けて送信を行う。
【００３２】
入出力部１２５、プロセッサ１２３、ネットワークインタフェース１２２は、クライアント装置１０１にある同名の装置と同じ機能を持つ。ローカルディスク１２４には、ウェブページの全体や一部などが保管されている。
【００３３】
ログ連携サーバ装置１４１のメモリ１４７には、ログ連携サーバプログラム１４８、操作再生プログラム１４９が格納されている。これらのプログラムは、プロセッサ１４３に読み込まれて実行される。
【００３４】
ログ連携サーバプログラム１４８は、クライアント装置１０１やウェブサーバ装置１２１などから送信されたウェブページやウェブページのリクエスト元などを特定する識別子や操作ログなどのデータを受信し、それらをローカルディスク１４４のログ保存領域１４５に格納したり、ログ保存領域１４５やメモリ１４７上にあるそれらのデータを読み出して、一覧表示をしたり、特定の識別子や操作ログなどを選択させて、外部の装置に送信したりする。さらに、外部の装置に、特定の識別子に関連する操作ログを送信させたりする。操作再生プログラム１４９は、外部再生装置１８１からの要求に応じて、外部再生装置上でウェブページのコンテンツと操作ログから、ウェブページ上での操作の再生を行わせる機能を提供する。ローカルディスク１４４には識別子や操作ログを保存する操作ログ保存領域１４５がある。
【００３５】
入出力部１４６、プロセッサ１４３、ネットワークインタフェース１４２は、ウェブサーバ装置１２１にある同名の装置と同じ機能を持つ。
【００３６】
外部再生装置１８１のメモリ１８５には、表示プログラム１８６が格納されている。表示プログラム１８６は、プロセッサ１８４に読み込まれて実行される。
表示プログラム１８６は、クライアント装置１０１のウェブブラウザプログラム１０８、スクリプトエンジンプログラム１０９と同様に、ウェブページの表示を行う。ただし、ログ連携サーバ装置１４１の操作再生プログラム１４９により、操作ログと連携して、ウェブページ上での操作を再生したり、再生を一時的に停止したりする。入出力部１８３、プロセッサ１８４、ネットワークインタフェース１８２は、ウェブサーバ装置１２１にある同名の装置と同じ機能を持つ。
【００３７】
図２により、本システム構成における、ウェブアプリケーションの操作再現処理フローを説明する。
【００３８】
図１で説明したように、クライアント装置１０１、ウェブサーバ装置１２１、ログ連携サーバ装置１４１がネットワーク１６１で接続されたシステムで、クライアント装置１０１からウェブページのリクエストを送信し、ウェブサーバ装置１２１がリクエストされたウェブページのレスポンスを生成して返信し、クライアント装置１０１でウェブページの表示や、スクリプトコードの実行が行われ、ログ連携サーバ装置１４１には、ウェブページに関連する識別子や、ウェブページのコンテンツ、ウェブページ上での操作ログなどが蓄積される。また、ログ連携サーバ装置１４１と、クライアント装置１０１の間で、操作ログの送受信や、ログ操作の制御を実現するための問い合わせと制御内容を伝達するコマンドのやり取りも行われる。外部再生装置１８１は、ログ連携サーバ装置１４１からウェブページのコンテンツと、操作ログを受信してウェブページ上での操作の再生を行う。
【００３９】
以下、一連の処理を順に説明する。なお、図２以降の図においては、プログラムがプロセッサ上で実行されている状態をモジュールと呼び、例えば、ウェブブラウザプログラムがプロセッサ上で実行されている場合、ウェブブラウザモジュールと呼ぶ。
【００４０】
最初に、図２において、クライアント装置１０１のウェブブラウザモジュール２１１がウェブページのリクエストを、ネットワーク１６１を経由して、ウェブサーバ装置１２１に送信する。リクエスト２０１には、少なくともウェブページの存在する場所を指定するＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒｓ）が含まれる。ウェブサーバ装置１２１では、ウェブサーバモジュール２２１がリクエストを受信し、ウェブアプリコード１３０に従った処理を行うウェブアプリケーション２２２が要求されたウェブページのレスポンス２０２を生成する。
【００４１】
レスポンス２０２は、ウェブサーバ装置１２１に含まれる機能挿入モジュール２２３を経由してクライアント装置１０１のウェブブラウザモジュール２１１に送信される。機能挿入モジュール２２３の操作ログ取得機能モジュール２２４は、クライアント装置１０１に含まれ、ウェブブラウザモジュール２１１に付随するスクリプトエンジンモジュール２１２上で実行されるスクリプトコード２０６の形態で、ウェブブラウザモジュール２１１上での操作ログを取得する機能をレスポンス２０２に挿入する。コンテンツ改変機能モジュール２２５は、レスポンス２０２に含まれるコンテンツの一部を変更する機能を持ち、レスポンスに関連する識別子をコンテンツに挿入したりする。差分検出機能モジュール２２６は、クライアント装置１０１に含まれるスクリプトエンジンモジュール２１２上で実行されるスクリプトコード２０６の形態で、ウェブブラウザモジュール２１１上で画面表示や機能を提供するドキュメントの動的な変化を検出し、記録、保存する機能をレスポンス２０２に挿入する。
【００４２】
ウェブサーバ装置１２１では、さらに識別子送信モジュール２２７がウェブページのレスポンス２０２に関連した識別子２０４を生成もしくは取得してログ連携サーバ装置１４１に送信する。また、コンテンツ送信モジュール２２８が、レスポンス２０２に含まれるウェブページのコンテンツ２０５をログ連携サーバ装置１４１に送信する。これらの動作は、順次行っても、同時並行的に行ってもよい。
【００４３】
クライアント装置１０１では、ウェブブラウザモジュール２１１でレスポンス２０３に含まれるコンテンツが表示され、操作に応じて次のリクエストを送信したり、コンテンツに含まれるスクリプトコード２０６をスクリプトエンジンモジュール２１２で実行したりする。前記の操作ログ取得機能モジュール２２４で挿入されたスクリプトコードもスクリプトエンジンモジュール２１２で実行され、ウェブブラウザモジュール２１１上での操作ログを生成する。生成された操作ログは、クライアント装置１０１のメモリ１０７上やローカルディスク１０４上に識別子と共に保存される。操作ログ取得機能モジュール２２４には、ウェブブラウザモジュール２１１を介して、ログ連携サーバ装置１４１に対して、操作ログの送信要求や、ログ操作要求の有無を問い合わせる機能が含まれる。この問い合わせに対して、コマンド２０８が返された場合、コマンド２０８に応じて、メモリ１０７上やローカルディスク１０４上に保存されている操作ログをログ連携サーバ装置１４１に送信したり、操作ログを削除したりする。コマンド２０８には、これらのログ送信やログ削除以外の処理も含まれる。
【００４４】
ログ連携サーバ装置１４１では、ログ連携サーバモジュール２３１が、ウェブサーバ装置１２１から識別子２０４とコンテンツ２０５を受信し、ログ保存領域１４５に保存する。また、保存されている識別子２０４の一覧データを外部再生装置１８１などに表示して、選択された識別子に関連するウェブページの操作ログをクライアント装置から送信させるコマンドを生成し、クライアント装置１０１からのログ問合せ２０７に対して、ログ送信のコマンド２０８を送信して、操作ログ２０９をクライアント装置から受信し、ログ保存領域１４５に保存する。前記の通り、コマンド２０８には、ログ送信以外の処理を実行させるものも含まれる。操作再生モジュール２３２は、外部再生装置１８１に対して、ログ連携サーバ装置１４１のログ保存領域１４５に保存されているウェブページのコンテンツや操作ログ、操作ログに関連付けられた文書構造を送信して、外部再生装置１８１上で、ウェブページ上に操作ログに応じた操作状態を表示させる機能を持つ。
【００４５】
外部再生装置１８１では、表示モジュール２４１が、ログ連携サーバ装置１４１と通信を行い、ログ連携サーバ装置１４１に保存されている識別子の一覧を表示して、入出力部１８３からの入力により、特定の識別子を選択して、ログ連携サーバ装置１４１に通知したり、ログ連携サーバ装置１４１の操作再生モジュール２３２を介して、ウェブページ上の操作状態を表示したり、その表示状態を入出力部１８３からの指示に応じて変更したりする。図２では、外部再生装置１８１とログ連携サーバ装置１４１が直接接続されているが、ネットワーク１６１を介して接続されていてもよく、また、ウェブページのコンテンツや操作ログ、操作ログに関連付けられた文書構造などをウェブサーバ装置１２１などの他の装置から受信してもよい。
【００４６】
次に上述のシステム構成とウェブアプリケーションの操作再現を前提とし、実施例１におけるウェブアプリケーションの操作再現方法の処理フローを図３〜図５と図１１〜図１６を使って説明する。
【００４７】
図３は、操作記録の処理フローを示し、図１１は、操作再生の処理フローを示す。図３と図１１に示した処理フローは、順次切り替えて実施されても、同時並行的に実施されてもよい。
【００４８】
図３に示すように、まずクライアント装置のウェブブラウザモジュールがウェブアプリケーションへのリクエストをウェブサーバ装置に送信する（ステップ３０３）。ウェブサーバ装置は、ウェブサーバモジュールがクライアント装置からリクエストを受信してウェブアプリケーションのレスポンスを生成する（ステップ３２３）。そして、識別子送信モジュールがレスポンス生成毎に識別子をログ連携サーバ装置に送信する（ステップ３２４）。識別子は、レスポンス毎にユニークな値であり、そのレスポンスのウェブページのコンテンツや、そのウェブページ上で行われた操作の操作ログ、その操作ログに関連付けられた文書構造などを特定するのに利用される。
【００４９】
続いて、コンテンツ送信モジュールがログ連携サーバ装置にレスポンスのコンテンツを送信する（ステップ３２５）。さらに、機能挿入モジュールが操作ログ取得機能と差分検出機能、識別子を挿入し、コンテンツを改変する（ステップ３２６）。ステップ３２４〜３２６に関しては、図３に示した順序に限らず、逆順や、同時並行的に実行しても良い。最後にウェブサーバ装置からクライアント装置に対してレスポンスを送信する（ステップ３２７）。ステップ３２３〜３２７の一連の処理は、本実施例によるウェブサーバ装置がウェブページの生成を行う処理のフローであり、以下ではまとめてステップ３２２と呼ぶ。ウェブサーバ装置は、クライアント装置からのリクエストが終了したり、ウェブサーバ装置が終了されると処理を終了する（ステップ３２８、３２９）。
【００５０】
続いて、クライアント装置がウェブサーバ装置からレスポンスを受信する（ステップ３０４）。クライアント装置におけるステップ３０３、３０４の一連の処理は、クライアント装置におけるウェブページの表示を行う処理のフローであり、以下ではまとめてステップ３０２と呼ぶ。
【００５１】
図３の処理フローにおいて、ログ連携サーバ装置は、ウェブサーバ装置から識別子が送信されてきたかを判定し（ステップ３４３）、送信があった場合には、識別子とコンテンツを受信して保存する（ステップ３４４，３４５）。以下では、これらのウェブサーバ装置との通信処理をまとめてステップ３４２と呼ぶ。続いて、ログ連携サーバ装置では、保存されている識別子のリストを生成して、外部装置にリストを表示し、外部装置から指定された識別子に関連するウェブページ上での操作ログを送信させるコマンドの準備を行う（ステップ３４７）。
【００５２】
このコマンドを利用した操作ログの受信は以下の処理フローで行われる。まず、ステップ３０２を終えて、ウェブページの表示が完了したクライアント装置では、差分検出機能により、ウェブページの表示や機能の提供に利用されたレスポンスに含まれる文書構造がメモリ上もしくはローカルディスク上に一時保存される（ステップ３０６）。次に、レスポンスに含まれている操作ログ取得機能により、ウェブブラウザ上で行われた操作の操作ログが生成されメモリ上もしくはローカルディスクに保存される（ステップ３０７）。操作ログが生成される際に、現在の文書構造と、ステップ３０６で一時保存された文書構造との比較を行う（ステップ３０８）。比較の結果、文書構造に違い、差異がある場合は、ステップ３０７で保存された操作ログと関連付けて、現在の文書構造をメモリ上もしくはローカルディスク上に保存する（ステップ３０９）。ステップ３０８での比較の結果、文書構造に差異が無ければ、ステップ３０９は実行されない。
【００５３】
続いて、操作ログ取得機能は、ログ連携サーバ装置に、ログ送信要求の有無を問い合わせる（ステップ３１０）。この際、クライアント装置や、表示しているウェブページが特定できる識別子をログ連携サーバ装置に送信する。ログ連携サーバ装置は、クライアント装置からのログ送信要求有無の問い合わせを受けると、その問い合わせが、ステップ３４７で準備したコマンドを送信すべき対象からの問い合わせかを判定し（ステップ３２８）、該当する場合には、ステップ３４７で準備したコマンドをクライアント装置に送信する（ステップ３４９）。クライアント装置は、コマンドを受信すると、ログ連携サーバ装置へコマンドにて指定された操作ログや操作ログに関連付けられた文書構造を送信する（ステップ３１１）。ログ連携サーバ装置は、クライアント装置からログの送信があると（ステップ３５０）、受信して保存する（ステップ３５１）。これら一連の操作ログの受信処理のフローを、以下ではまとめてログ連携サーバ装置側での処理フローをステップ３４６、クライアント装置側の処理フローをステップ３０５と呼ぶ。
【００５４】
なお、ステップ３４８での判定処理は、クライアント装置から受信した識別子と、ステップ３４７で指定された識別子が一致しなくても、該当する問い合わせがあったと判定してステップ３４９が実施される場合がある。例えば、ログ連携サーバ装置が保存している識別子に、操作をしたユーザを特定可能なユーザの識別子があり、クライアント装置から送られてきた識別子にはユーザの識別子は含まれていないものの、ウェブページのリクエスト毎にユニークな値をもつリクエストの識別子が含まれており、ログ連携サーバ装置が保存している識別子のリストから、前記リクエストの識別子に関連して、そのリクエストを送信したユーザの識別子がある場合、同じユーザからの問い合わせであり、ステップ３４７で指定された識別子に関連した操作ログを問い合わせ元は持っていると判定して、コマンドを送信する。
【００５５】
このように、ログ連携サーバ装置において、識別子のリストを管理することで、過去に表示され、操作されたウェブページのコンテンツや操作ログをログ連携サーバ装置が取得することができる。なお、ステップ３４８の判定処理を省略して、クライアント装置からのログ送信要求有無の問い合わせに対して常にコマンドを送信し、クライアント装置側で、保存されている操作ログや操作ログに関連付けられた文書構造で、コマンドの対象に該当する操作ログや操作ログに関連付けられた文書構造があるかないかを判定して、操作ログや操作ログに関連付けられた文書構造をログ連携サーバ装置に送信する方法でも良い。
【００５６】
最後に、クライアント装置では、ページ遷移があればステップ３０２に、なければ、操作が終了もしくはクライアント装置が終了しなければステップ３０５に戻り、それ以外は処理を終了する（ステップ３１３）。
【００５７】
ログ連携サーバ装置も、ログ記録が終了しなければステップ３４２に戻り、それ以外は処理を終了する（ステップ３５３）。
【００５８】
なお、識別子の管理や、操作ログや操作ログに関連付けられた文書構造などの送信要求、送受信を行う方法は、以上で説明したログ連携サーバ装置による方法に限定されず、他の方法で実施されても良い。
【００５９】
次に、図４を用いて、操作ログと関連付けられて記録される文書構造について説明する。ウェブブラウザ４０１上にウェブページを表示し、機能が提供されている例が図４の上段に示されている。この例では、メッセージ「本文・・・」がパラグラフ４０２上に表示されており、インプット４０４としてボタン１が提供されている。この例では、ボタン１は、押下されるとパラグラフ上にメッセージ「ボタンが押されました」４０３が表示される機能を提供している。つまり、ボタン１のクリック操作によって、クライアント側で動的にウェブブラウザ４０１上の表示が変化する。
【００６０】
図４の下段には、このウェブページの文書構造４１０が示されている。ウェブページを構成する要素は、ツリー状に階層化されており、図４の例では、ＤＯＣＵＭＥＮＴ要素をトップに、その下にＨＴＭＬ、さらにその下にＨＥＡＤ，ＢＯＤＹと続く。ＨＥＡＤの下にはＴＩＴＬＥとＭＥＴＡがあり、ウェブブラウザのタイトルバー４０５にＴＩＴＬＥのテキスト要素である「ウェブブラウザ」という文字列が表示されている。ＭＥＴＡには、属性値“ｃｈａｒｓｅｔ＝ｕｔｆ−８”があり、ウェブページの文字コードがこれに従って設定されている。パラグラフ４０２に表示されているメッセージは、ＢＯＤＹの下にあるパラグラフのテキスト要素４１３となる。また、ボタン１は、ＢＯＤＹの下のＦＯＲＭの下のＩＮＰＵＴで文書構造としては表現される。図４の例では、ボタン１の押下によって、パラグラフのテキスト要素４１３が変化し、「本文・・・  ボタンが押されました」となる。図３で説明した処理フローにおいては、このような文書構造の相違を検出して、保存していくことで、クライアント側で動的に変化する状況を記録している。図４は文書構造の一例を示したに過ぎず、これ以外の方法で表現されていても良い。
【００６１】
図５は操作ログの例を示した図である。操作ログには、時刻やクライアントＩＤ、ユーザＩＤ、ページＩＤ，セッションＩＤ、操作内容、操作対象、属性値などが含まれる。この中で操作対象は、図４で説明した文書構造により記録されている。例えば、図４のボタン４０４を押下した時の操作ログは、図５の操作ログの例のインデックス３で示されるように、ＨＴＭＬ［０］．ＦＯＲＭ［０］．ＩＮＰＵＴ［０］と記録される。これは０番目のＨＴＭＬの下の０番目のＦＯＲＭの下の０番目のＩＮＰＵＴでクリック操作が行われたことを表現している。
【００６２】
次に、図１１を用いて、ウェブアプリケーションの操作再生処理のフローについて説明する。まず、外部再生装置が、操作再生対象を選択するために、ログ連携サーバ装置に識別子リストの送信を要求する（ステップ１１４３）。ログ連携サーバ装置は、外部再生装置からの識別子リストの送信要求を受けると、保存されている識別子のリストを生成して送信する（ステップ１１０２）。外部再生装置は、識別子リストを受信してそれを表示する（ステップ１１４４）。ステップ１１４３と１１４４は、以下ではまとめてステップ１１４２と呼ぶ。次に、外部再生装置で、操作の再生を行う部分を識別子のリストから選択して、ログ連携サーバ装置に送信する（ステップ１１４５）。識別子に含まれる情報によって選択方法は変わるが、例えば、特定のユーザの操作を選択的に再生対象としたり、特定のウェブページ上での操作を選択的に再生対象としたりすることができる。ログ連携サーバ装置は、外部再生装置からログやコンテンツの送信要求を受けると（ステップ１１０５）、ログ保存領域から、指定された識別子に街頭する操作ログや操作ログに関連付けられた文書構造、コンテンツを読み出し（ステップ１１０７）、それらを外部再生装置に送信する（ステップ１１０８）。
【００６３】
続いて操作再生モジュールが、外部再生装置に操作再生スクリプトなどのウェブページ上で操作状態を再生する機能を送信する（ステップ１１０９）。以下では、ステップ１１０７〜１１０９をまとめてステップ１１０６と呼ぶ。ログ連携サーバ装置は、操作再生が終了するまで、これらの処理を繰り返す。外部再生装置では、ログ連携サーバ装置から操作ログや操作ログに関連付けられた文書構造、コンテンツ、操作再生スクリプトなどを受信し（ステップ１１４７、１１４８）、操作再生スクリプトを利用して受信した操作ログと操作ログに関連付けられた文書構造、コンテンツからウェブページ上での操作状態を再生する（ステップ１１４９）。操作状態の再生は、コンテンツを表示し、その上に操作ログに従って操作を実行もしくは操作内容を表示していくことで実現する。その操作ログに記録された操作を実行する際に、コンテンツの文書構造を、操作ログに関連付けられて記録されている文書構造に従って更新もしくは置き換えることで、クライアント側で動的に変化するウェブページの状態を再生する。以下では、ステップ１１４７〜１１４９をまとめてステップ１１４６と呼ぶ。操作の再生が終わるまでこれらの処理を繰り返す。
【００６４】
以上、図３〜図５と図１１に示した処理により、ウェブページ上での操作の再現が実現できる。これらの処理は、クライアント装置のウェブブラウザプログラムとそれに内在、或いは付随したスクリプトエンジンプログラム以外に特別なプログラムを導入する必要がなく、識別子による選択で、再生したい操作の部分のログやコンテンツを選択的に収集して、再生でき、クライアント側で動的に変化するウェブページの状態を、文書構造の変化を記録し、それに基づいて再生を行うことで、操作の再現性を向上できる。
【００６５】
図１２は、図３、図１１で説明した処理フローのシーケンス１２０１を示す図である。ウェブページのリクエスト、レスポンスの生成・送受信・表示、操作ログ、文書構造の記録・再生の処理については、図３、図１１を使った説明の通りである。ここでは、識別子として設定する候補となるＩＤと、その他の説明していない事項についてのみ述べる。
【００６６】
識別子の候補としては、クライアントＩＤ、ページＩＤ，コンテンツＩＤ，リクエスト元ページＩＤ，セッションＩＤ, ユーザＩＤなどが挙げられる。
【００６７】
クライアントＩＤとは、ウェブページへのリクエストを出したクライアント装置を特定可能な識別子で、具体的には、クライアント装置のネットワークアドレスや、マシン名、ウェブブラウザのプロセス番号や、それらと関連するハッシュ値などが例として挙げられる。クライアントＩＤは、クライアント装置で生成・取得可能なので、リクエストにつけてウェブサーバ装置に送信することができる。
【００６８】
ページＩＤとは、ウェブサーバ装置で生成したウェブページ毎にユニークな識別子である。具体的には、ウェブサーバ装置が、ページのＵＲＬや、生成時刻、ウェブサーバ装置のネットワークアドレスなどを組み合わせて作った値などが例として挙げられる。ページＩＤは、同一のＵＲＬであっても、別のリクエストで生成されたウェブページの場合には、別のページＩＤであることが望ましい。
【００６９】
リクエスト元ページＩＤとは、ウェブページ上で、リンクやボタンによって次のウェブページへの遷移が起こった場合に、次のウェブページへのリクエストを生成したウェブページのページＩＤである。リクエスト元ページＩＤと新しいページＩＤとセットで記録することによって、ページ遷移状態を記録していくことができる。
【００７０】
コンテンツＩＤとは、ページＩＤと類似の識別子であるが、ページＩＤがウェブページ単位に付与される識別子であるのに対して、コンテンツＩＤは、ウェブページのＨＴＭＬドキュメントに限らず、画像やスクリプトコードなどのデータに対しても付与する識別子である。変化の無い静的な画像の場合には、別のリクエストで要求された画像であっても、同じ画像であれば同じコンテンツＩＤを付与することが望ましい。これにより、コンテンツを保存していく際に、静的で変化の無いコンテンツについては、同じコンテンツＩＤを持つので、重複して保存していく必要がなくなる。
【００７１】
セッションＩＤとは、一連のウェブページの遷移に対して、通常ウェブサーバ装置が設定する識別子である。図５では、ウェブページＡ，Ｂ，Ｃは一連のウェブページの遷移であるので、共通のセッションＩＤが与えられる。例えば、ウェブページＡ，Ｂ，Ｃの３ページで１つの作業が完結する場合に、これらの作業全体を選択して操作の再生をしたい場合には、セッションＩＤで再生対象を選択することが便利である。
【００７２】
ユーザＩＤとは、ウェブページへのリクエストを生成する操作をしたユーザを特定する識別子である。通常は、ユーザ認証を行う際に、ユーザが入力するか、認証後にウェブサーバ装置などが設定する識別子である。ユーザＩＤは、時間や場所をまたがって、同じユーザの操作を再生したい場合に、利用すると便利である。
【００７３】
図１２からも分かるように、識別子によっては、タイミングによって存在しないものがあるため、ウェブサーバ装置からログ連携サーバ装置に送信される識別子はタイミングによって様々であるし、必ずしも常にすべての識別子を送信していなくても計算可能な識別子もある。
【００７４】
外部再生装置とログ連携サーバ装置間で、操作の再生対象を選択する際には、まず、ログ連携サーバ装置が、保存している識別子のリストを送信するが、そのリストには、前記の識別子の候補のすべてもしくは一部が含まれ、その中から外部再生装置で選択をすることによって、該当する操作ログ、操作ログに関連付けられた文書構造とコンテンツを特定する。
【００７５】
図１２には記載していないが、クライアント装置で、ウェブページ上で操作が行われる毎に生成される操作ログ、条件によって記録される文書構造に対して、それぞれ識別子として操作ＩＤを付与して、これを他の識別子と同様にログ連携サーバ装置に送信して保存し、外部再生装置から選択可能とする方法も本実施例に含まれる。
【００７６】
図１３の１３０１は、本実施例における、操作再現対象のウェブページを選択するウェブページの一例である。
【００７７】
時刻や、クライアントＩＤ、ユーザＩＤ、セッションＩＤ、ページＩＤなどのウェブページを特定するための情報がリスト形式で表示されており、これらの中から操作再現対象のウェブページを選択することで、そのウェブページ上で行われた操作のリストを表示したり、操作の再現をしたりするために利用される。
【００７８】
図１４の１４０１は、本実施例における、操作再現対象の操作を選択するウェブページの一例である。図１３に示したウェブページを選択するウェブページ１３０１で指定されたウェブページ上で行われた操作のリストを表示している。このリストには、時刻、操作内容、操作対象、属性などが含まれる。また、操作の再現を開始するボタン１４０２などもこのウェブページ上で提供される。例えば、操作の再現を操作の途中から行いたい場合には、該当する操作の行の左端にある選択をクリックし、その後ボタンを押下することで実現する。リストには、変化フラグの項目があるが、これは操作ログに関連して文書構造が記録されている場合に１と表示される。これにより、どの操作でウェブページに動的な変化が起こったかを確認できる。
【００７９】
チェックボックス１４０３は、変化フラグが１である操作に関して、操作の再現時に実際に実行することを指定するチェックボックスである。操作の再現の方法には、実際に実行して再現する方法と、実際には実行せずに表示だけ再現する方法がある。前者の方法は、再現性の向上に有効であるが、実際に実行してしまうことにより、例えばサーバ側の状態に変更を加えてしまうなどの副作用を伴う可能性がある。一方、後者の方法は、例えばマウスの動きを、マウスポインタを模した画像を移動することで操作の再現を行うような方法であるが、この場合、実際に実行しなければ動的なウェブページの変化が起こらない場合に、再現性が低くなってしまう。そこで、後者の方法を基本的な操作の再現方法としつつ、動的なウェブページの変化が起こる操作のみを前者の方法で再現することにより、副作用を抑えつつ、再現性を高めることができる。
【００８０】
図１５は、操作の再現状況と操作再現を制御するウェブページの例である。同図の上段に示す、再生ウィンドウ１５０１では、マウスポインタ１５０４がボタン１５０２を押下している操作の再現を行っている。同図の下段に示す、再生コントローラ１５１１は、再現を行っているウェブページ上で行われた操作の一覧１５１２と、再現の開始・終了や一時停止などを行う制御機能をボタンで提供する。操作の再現方法としては、操作を１つずつ再現していくコマ送り再生１５１３や、自動的に順次操作を再現していく再生１５１４、それぞれの再現方法において、実際に実行を行って再現していく機能１５１５，１５１６などが提供される。操作の一覧１５１２には、図１４と同様に変化フラグが表示されており、このフラグが１の操作のみ実際に実行し、それ以外の再現を、実際には実行を行わず表示のみ再現する方法で行うことができる。具体的には、変化フラグが１の操作の再現をボタン１５１５、それ以外はボタン１５１３を利用することで実現できる。
【００８１】
図１６は、操作の再現状況と操作再現を制御する別のウェブページの例である上段の再生ウィンドウ１６０１や、下段の再生コントローラ１６１１は、図１５に示したものとほぼ同様であるが、再生コントローラ１６１１では、実際に実行する再現方法を指定する機能がないが、変化フラグが１の操作の再現時に、再生ウィンドウ１６０１上、もしくは再生ウィンドウとは別のウィンドウ上に操作を実際に実行してよいかを問い合わせるメッセージを表示し、ユーザによって再現方法を選択可能としている。
【００８２】
以上説明した実施例１の処理フローにより、クライアント装置上の操作と動的なウェブページの変化を継続的に記録でき、再現性の高い操作の再生ができる。
【実施例２】
【００８３】
第２の実施例を、図６を用いて説明する。ここでは実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【００８４】
図６は、差分検出機能による文書構造の差分検出方法に関する別の実施例を示した処理フロー図である。図６左側の処理６０１、右側の処理６１１は、いずれも図３の処理３０５部分に相当し、図３の処理３０５以外の部分は、図３と同じである。
【００８５】
処理６０１では、文書構造の変化の判定を、現在の文書構造が最新の一時保存されている文書構造と同じかどうかを判定している（ステップ６０２）。また、文書構造に変化があった場合には、変化した文書構造を一時保存し（ステップ６０３）、それを次の文書構造の変化の判定に利用する。これにより、クライアント側でのウェブページの動的な変化が多数起こる場合に、差分検出による文書構造の保存量を低減することができる。
【００８６】
処理６１１では、文書構造を指定時間ごとの一時保存する（ステップ６１３）ことで、文書構造の変化の判定を、現在の文書構造が指定時間ごとに一時保存された文書構造と同じかどうかを判定する（ステップ６１２）。これにより、クライアント側でのウェブページの動的な変化が操作に関係なく起こる場合にも操作の再現性を向上することができる。
【実施例３】
【００８７】
第３の実施例を、図７を用いて説明する。ここでは実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【００８８】
図７は、差分検出機能による文書構造の差分検出タイミングに関する別の実施例を示した処理フロー図である。図７左側の処理７０１、右側の処理７１１は、いずれも図３の処理３０５部分に相当し、図３の処理３０５以外の部分は、図３と同じである。
【００８９】
処理７０１では、文書構造の変化の判定を、特定のイベントが発生した場合にのみ行う（ステップ７０２）。例えば操作の再現において再現性が要求される動的なウェブページの変化が、マウスをクリックした際にのみ発生する可能性があることが事前に分かっている場合、すべての操作ログの生成時に文書構造の保存をマウスクリックのイベントが発生した場合に限定することで、保存に必要なリソース量を低減できる。これにより、動的に変化するバナー広告のように、ウェブページ上の基本機能とは関係のない部分にも関わらず、ウェブページに動的に変化してしまう部分が含まれる場合に、不要な文書構造の保存を防ぐことができる。
【００９０】
処理７１１では、文書構造の変化の判定を、指定時間ごとに行うことで、操作やイベントの有無に関わらず、動的なウェブページの変化を記録していくことができる。これにより、処理７０１とは逆に、一定時間ごとに動的に変化するバナー広告のようなコンテンツを含むウェブページの再現性を向上することができる。
【実施例４】
【００９１】
第４の実施例を、図８を用いて説明する。ここでは実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【００９２】
図８は、差分検出機能による文書構造の差分判定方法に関する別の実施例を示した処理フロー図である。図８左側の処理８０１、右側の処理８１１は、いずれも図３の処理３０５部分に相当し、図３の処理３０５以外の部分は、図３と同じである。
【００９３】
処理８０１では、文書構造の変化の判定を、操作ログに記録された操作対象のコンテンツが一時保存されている文書構造に含まれているかどうかを判定することで行う（ステップ８０２）。これにより、操作対象が動的に生成される場合に、操作対象が無く操作の再現ができない、もしくは操作の再現がエラーとなってしまうことを防ぐことができる。また、文書構造が大規模な場合でも、差分検出機能による文書構造の変化の判定を、少ない処理量で行うことが可能になる。
【００９４】
処理８１１では、文書構造の変化の判定を、操作対象のコンテンツの文書構造が変化しているかどうかを判定することで行う（ステップ８１２）。これにより、例えば操作対象が文書構造上は存在しているが、その属性がｈｉｄｄｅｎで可視化されていなかったものが可視化されて操作可能に変化したような場合に、文書構造の変化として判定可能となる。処理８０１と同様に、文書構造が大規模な場合でも、差分検出機能による文書構造の変化の判定を、少ない処理量で行うことが可能となる。
【実施例５】
【００９５】
第５の実施例を、図９を用いて説明する。ここでは実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【００９６】
図９は、差分検出機能による文書構造の差分保存方法に関する別の実施例を示した処理フロー図である。図９左側の処理９０１、右側の処理９１１は、いずれも図３の処理３０５部分に相当し、図３の処理３０５以外の部分は、図３と同じである。
【００９７】
処理９０１では、文書構造の差分を操作対象の文書構造、もしくは操作対象の文書構造の変化分のみ保存する（ステップ９０２）。これにより、操作の再現に直接関係する操作対象のコンテンツの再現性を確保しつつ、文書構造の保存に要するリソース量を軽減することが可能となる。
【００９８】
処理９１１では、文書構造に変化があった場合に、変化があった事実のみをフラグとして保存する（ステップ９１２）。これにより、文書構造の保存による留守リソース量を軽減することが可能となる。操作の再現時には、このフラグが立っている操作に対して、実際に操作を実行して再現を行うなどにより、操作の再現性を向上させることが可能である場合に有効な保存方法となる。
【実施例６】
【００９９】
第６の実施例を、図１０を用いて説明する。ここでは実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【０１００】
図１０は、差分検出機能による文書構造の差分の送信方法に関する別の実施例を示した処理フロー図である。図１０の処理１００１は、図３の処理３０５部分に相当し、図３の処理３０５以外の部分は、図３と同じである。
【０１０１】
処理１００１では、ログ連携サーバ装置からクライアント装置にログ送信要求が来た際に、操作ログと共に送信される文書構造を、同一コンテンツに対して保存されている文書構造の内、最後に記録された文書構造のみを送信する（ステップ１００２）。これにより、クライアント装置から、ログ連携サーバ装置に対して送信するデータ量を軽減できる可能性がある。操作の再現時には、一連の操作の途中状態では再現性が低下する可能性があるものの、最終的な状態の再現性は他の実施例とほぼ同等にすることができる。
【実施例７】
【０１０２】
第７の実施例を、図１７、図１８を用いて説明する。ここでは実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【０１０３】
図１７は、本実施例におけるウェブアプリケーションを実行するシステム構成の一例である。外部装置１７０１は、クライアント装置１０１やウェブサーバ装置１２１などと同様の機能をもったプロセッサ１７０３、メモリ１７０７、入出力部１７０２、ローカルディスク１７０４、ネットワークインタフェース１７０６などから構成される計算機構造を備える。
【０１０４】
メモリ１７０７上には文書構造提供プログラム１７０８が保存され、文書構造提供プログラム１７０８は、入出力部１７０２もしくはネットワークインタフェース１７０６を通して他の装置から指定されたレスポンス、もしくはクライアント上での操作途中での文書構造を、要求に応じてネットワークインタフェース１７０６を通して他の装置に送信する機能を提供するプログラムである。外部装置１７０１はウェブサーバ装置１２１やログ連携サーバ装置１４１などと同一でもよく、例えばウェブサーバ装置１２１のウェブサーバプログラム１２７上に文書構造提供プログラム１７０８が存在し、ウェブサーバ装置１２１が同等の機能を提供してもよい。
【０１０５】
図１８は、本実施例の文書構造提供プログラム１７０８を持つ外部装置１７０１が含まれるシステムで、操作の記録を行う処理の例を示したフロー図である。図１８の処理１８０１は、図３の処理３０５部分に相当し、図３の処理３０５以外の部分は、図３と同じである。
【０１０６】
処理１８０１では、ウェブページの文書構造を外部装置１７０１から読み込み一時保存する（ステップ１８０２）。この一時保存された文書構造を用いて、文書構造の変化や、文書構造の保存を行う。これにより、例えばクライアント装置がウェブサーバ装置からレスポンスを受信し、差分検出機能が動作する前にウェブページに動的な変化が生じるような場合に、文書構造提供プログラム１７０８がレスポンスに含まれる動的な変化が生じる前のウェブページの文書構造を送信することで、文書構造の動的な変化を精度高く記録することが可能となる。
【０１０７】
以上、本発明に種々の実施例を説明したが、この実施例１〜７の任意の組合せも本発明に含まれることは言うまでもない。例えば、クライアント装置ウェブブラウザが差分検出機能を実行して、ウェブページの文書構造を構成するコンテンツと第１の文書構造のコンテンツとを比較し、差異があった場合、操作ログに関連付けてその差異を保存し、差異があった文書構造を新たな第１の文書構造とし、保存した差異をログ連携サーバ装置に送信する際、最後に保存されたコンテンツの差異のみ送信するよう構成することができる。また、実際例１〜７はそれぞれ一例を示したに過ぎず、例えば、操作の再現をしつつ、操作の記録を行う場合なども本発明の実施例の組み合わせにて実現される。また、操作ログや操作ログに関連付けられた文書構造に含まれる可能性のある情報としては、ウェブブラウザ上で記録可能なすべての情報が対象となる。また、すべての装置が１台ずつの場合のみ説明したが、それぞれ複数台であったり、複数の装置が少ない台数にまとまっている場合も含まれる。
【産業上の利用可能性】
【０１０８】
本発明は、ウェブアプリケーションの操作を記録、保存し、再現する処理技術として有用である。
【符号の説明】
【０１０９】
１０１…クライアント装置
１０２、１２５、１４６、１８３、１７０２…入出力部
１０３、１２３、１４３、１８４、１７０３…プロセッサ
１０４、１２４、１４４、１７０４…ローカルディスク
１０６、１２２、１４２、１８２、１７０６…ネットワークインタフェース
１０７、１２６、１４７、１８５、１７０７…メモリ
１０８…ウェブブラウザプログラム
１０９…スクリプトエンジンプログラム
１２１…ウェブサーバ装置
１２７…ウェブサーバプログラム
１２８…機能挿入プログラム
１２９…識別子送信プログラム
１４１…ログ連携サーバ装置
１４５…ログ保存領域
１４８…ログ連携サーバプログラム
１４９…操作再生プログラム
１６１…ネットワーク
１８１…外部再生装置
１８６…表示プログラム
１７０１…外部装置
１７０８…文書構造提供プログラム。
【図１】
0005325169.tif 000002
【図２】
0005325169.tif 000003
【図３】
0005325169.tif 000004
【図４】
0005325169.tif 000005
【図５】
0005325169.tif 000006
【図６】
0005325169.tif 000007
【図７】
0005325169.tif 000008
【図８】
0005325169.tif 000009
【図９】
0005325169.tif 000010
【図１０】
0005325169.tif 000011
【図１１】
0005325169.tif 000012
【図１２】
0005325169.tif 000013
【図１３】
0005325169.tif 000014
【図１４】
0005325169.tif 000015
【図１５】
0005325169.tif 000016
【図１６】
0005325169.tif 000017
【図１７】
0005325169.tif 000018
【図１８】
0005325169.tif 000019