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