(57)【要約】【課題】クライアント装置とサーバ装置から構成されるコンピュータシステムでウェブアプリケーションのクライアント装置およびサーバ装置における処理の記録を行う際に、クライアント装置の処理記録をサーバ装置側に収集し、サーバ装置とクライアント装置の処理記録の照合によってウェブシステム全体の処理の流れを容易に確認すること。【解決手段】ウェブサーバ装置１０９がクライアント装置１０１へのレスポンスに、クライアント装置１０１の処理の記録を行うためのスクリプトコードと、ウェブページの識別子、さらにクライアント装置１０１で記録した処理記録をウェブサーバ装置１０９に送信するためのスクリプトコードを挿入して返信することで、クライアント装置１０１の処理記録の収集を実現する。【選択図】図２
2010128877.tif 000002
【特許請求の範囲】
【請求項１】
ウェブページを閲覧するウェブブラウザを有するクライアント装置と、前記ウェブページを生成し、ウェブアプリケーションを実行する少なくとも一つのサーバ装置とが通信可能に接続されるウェブシステムにおいて、
前記クライアント装置は、
前記ウェブブラウザによる処理をクライアント処理記録として記憶するクライアント装置用記憶部と、
前記サーバ装置へのウェブページのリクエストの送信および前記サーバ装置からの、前記リクエストに対するウェブページのレスポンスの受信をする制御と、
前記サーバ装置から受信するウェブページのレスポンスに含まれるスクリプトコードを解釈して実行する制御と、を行うクライアント装置用制御部と、を有し、
前記サーバ装置は、
前記クライアント装置からのウェブページのリクエストに対する処理をサーバ処理記録として記憶するサーバ装置用記憶部と、
前記ウェブページのレスポンスに含まれるスクリプトコードに、前記クライアント処理記録を前記サーバ装置に送信する旨を含む処理記録送信用スクリプトコードを挿入する制御と、
前記クライアント装置から前記クライアント処理記録を受信し、前記受信したクライアント処理記録と、前記サーバ処理記録とを照合する制御と、
を行うサーバ装置用制御部と、を有する
ことを特徴とするウェブシステム。
【請求項２】
前記処理記録送信用スクリプトコードは、一定時間内に前記クライアント装置のクライアント装置用入力部からの入力の有無を判定するコードを含み、
前記クライアント装置用制御部は、前記一定時間内に前記クライアント装置用入力部からの入力がない場合、前記クライアント処理記録を前記サーバ装置に送信する制御を行う
ことを特徴とする請求項１に記載のウェブシステム。
【請求項３】
前記サーバ装置用制御部は、
前記サーバ処理記録を一意に特定し、当該サーバ装置の固有情報を含むサーバ側トレース識別子を前記サーバ装置用記憶部に記憶させる制御と、
前記サーバ装置の固有情報に不可逆な演算を施して生成した当該サーバ装置の識別情報を含み、前記サーバ側トレース識別子に対応したクライアント側トレース識別子を生成し、前記生成したクライアント側トレース識別子を含めた前記ウェブページのレスポンスを前記クライアント装置に送信する制御と、を行う
ことを特徴とする請求項１または請求項２に記載のウェブシステム。
【請求項４】
前記サーバ装置には、各サーバ装置から前記処理記録送信用スクリプトコードが含まれたウェブページのレスポンスに対する、前記クライアント装置から受信したクライアント処理記録を収集する記録収集サーバ装置が含まれている
ことを特徴とする請求項１に記載のウェブシステム。
【請求項５】
前記クライアント装置用制御部は、
前記クライアント処理記録を含めた前記ウェブページのリクエストを前記サーバ装置に送信する制御を行う
ことを特徴とする請求項１に記載のウェブシステム。
【請求項６】
ウェブページを閲覧するウェブブラウザを有するクライアント装置と、前記ウェブページを生成し、ウェブアプリケーションを実行する少なくとも一つのサーバ装置とが通信可能に接続されるウェブシステムにおける処理記録収集方法において、
前記クライアント装置のクライアント装置用記憶部は、前記ウェブブラウザによる処理をクライアント処理記録として記憶しており、
前記クライアント装置のクライアント装置用制御部は、
前記サーバ装置へのウェブページのリクエストの送信および前記サーバ装置からの、前記リクエストに対するウェブページのレスポンスの受信をするステップと、
前記サーバ装置から受信するウェブページのレスポンスに含まれるスクリプトコードを解釈して実行するステップと、を行い、
前記サーバ装置のサーバ装置用記憶部は、
前記クライアント装置からのウェブページのリクエストに対する処理をサーバ処理記録として記憶しており、
前記サーバ装置のサーバ装置用制御部は、
前記ウェブページのレスポンスに含まれるスクリプトコードに、前記クライアント処理記録を前記サーバ装置に送信する旨を含む処理記録送信用スクリプトコードを挿入するステップと、
前記クライアント装置から前記クライアント処理記録を受信し、前記受信したクライアント処理記録と、前記サーバ処理記録とを照合するステップと、を行う
ことを特徴とする処理記録収集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント装置とサーバ装置から構成されるコンピュータシステムでウェブアプリケーションを実行する際に、ウェブアプリケーションのクライアント装置およびサーバ装置における処理の記録を実現する技術に関する。
【背景技術】
【０００２】
ウェブアプリケーションは、スクリプトコードを利用したリッチクライアント技術などの技術進歩と、クライアント装置にウェブブラウザがインストールされていれば簡単に実行できる簡便さから、ビジネス用途を含め、さまざまな分野で利用されるようになってきた。用途によっては、高い可用性や、早い応答速度、使いやすさに対する強いニーズがある。また、リッチクライアント技術などにより、サーバ装置だけでなく、クライアント装置での処理量が増大している。ウェブアプリケーションは、クライアント装置とサーバ装置がネットワークで接続された、クライアント・サーバ型のウェブシステム上で動作するため、前記のニーズを満たすには、サーバ装置だけでなく、クライアント装置やネットワークの可用性や性能などを考慮する必要がある。
【０００３】
これに対して、よく行われているウェブシステムの管理では、サーバ装置において、サーバ装置の動作ログやエラーログを取得し、サーバ装置側での問題の発生や性能の測定が行われている。クライアント側では、人がユーザの操作性やユーザから見た性能の測定を行う方法や、クライアント装置に性能測定用のツールをインストールして行う性能測定が行われている。
【０００４】
特許文献１では、ＪＡＶＡ（登録商標）アプレットおよびＪＡＶＡＳＣＲＩＰＴ（登録商標）を利用してユーザのウェブブラウザ上での操作を記録・再生する方法が開示されている。この技術は、クライアント装置側に特別なツールをインストールすることなく、クライアント側の操作性や性能の測定を可能とする。
【特許文献１】特開２０００−７６２６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ただし、特許文献１に開示されているような技術では、記録される情報はクライアント装置のウェブブラウザ上での動作や操作に限られ、ウェブシステム全体として処理がどのように行われたかを知るのに必要なサーバ装置等の処理の記録と連携してウェブシステム全体の処理の記録を取る手段は提供されていない。
【０００６】
前記事情を鑑みて、本発明の目的は、クライアント装置での処理の記録を容易にサーバ装置に収集でき、また、クライアント装置の処理記録とサーバ装置の処理記録を照合してウェブシステムでの一連の処理の内容を容易に確認することができることである。
【課題を解決するための手段】
【０００７】
本発明では、クライアント装置からのウェブページのリクエストに対して、クライアント装置のウェブブラウザ上で処理の記録を行うためのスクリプトコードと、ウェブページの識別子、さらにクライアント装置で記録した処理記録をサーバ装置に送信するためのスクリプトコードを、サーバ装置がクライアント装置へのレスポンスに挿入して返信することで、クライアント装置の処理記録の収集を実現する。
【０００８】
クライアント装置の処理記録の収集は、ウェブアプリケーションが動作するウェブサーバとは別の、記録収集サーバで行う。記録収集サーバはウェブサーバと同一のサーバ装置で稼働させることも、別のサーバ装置で稼働させることもできる。記録収集サーバでは複数のウェブサーバ装置を一意に特定する識別情報と、その情報を隠蔽しクライアント装置に公開可能なサーバ識別子との対応関係を保持する。記録収集サーバにより、クライアント装置の処理記録の収集と、収集した処理記録に含まれる識別子から複数のウェブサーバ装置のうちアクセスしていたウェブサーバ装置の特定を実現することができる。
【０００９】
ウェブブラウザ上で処理の記録を行うスクリプトコードは、ウェブブラウザがウェブサーバからレスポンスを受け取った際や、レスポンスのウェブブラウザ上への描画が終了した際や、マウスやキーボード操作、次のウェブページへのリクエストを送信した際などに発生させるイベントを記録する機能を持つ。
一方、クライアント装置の処理記録を収集するためのスクリプトコードは、前記のウェブブラウザ上でのイベントの記録から、一定時間内のユーザ操作の有無を判定する機能を持ち、一定時間ユーザ操作がない場合には記録収集サーバへ処理記録を送信する。
これにより、障害時やユーザからの入力がなく放置された場合にも、クライアント装置の処理記録を定期的にサーバ装置（記録収集サーバ）へ収集させることができる。また、クライアント装置の処理記録を収集するためのスクリプトコードには、クライアント装置からウェブページへのリクエストが送信される時にリクエストに処理記録を挿入する機能を有するものもあり、これにより通常時はリクエストの際にクライアント装置の処理記録が収集できる。
【００１０】
クライアント装置の処理記録に含まれる、クライアント装置側の識別子は、サーバ装置を一意に特定できる識別情報を隠蔽しクライアント装置に公開可能なように、サーバ装置のトレース識別子を変換した値とする。これにより、複数サーバ装置で構成されたウェブシステムにおいても、サーバ装置の内部情報を公開することなく、クライアント装置での処理記録とサーバ装置でのトレース記録をリクエスト単位に関連付けることができる。ここで行うトレース識別子からサーバ識別子への変換には不可逆演算を用い、クライアント装置側では復元不可能とすることで、サーバ識別子からサーバ装置を特定するような内部情報を入手されることを防ぐことができる。一方、サーバ装置側では記録収集サーバにサーバ識別子とトレース識別子との対応関係を記録させておくことで、サーバ装置側でのみサーバ識別子からトレース識別子への復元を可能とする。
詳細は後記する。
【発明の効果】
【００１１】
本発明によれば、クライアント装置での処理の記録を容易にサーバ装置に収集できる効果がある。また、クライアント装置の処理記録とサーバ装置の処理記録を照合してウェブシステムでの一連の処理の内容を確認することができる。
【発明を実施するための最良の形態】
【００１２】
［実施の形態１］
本発明によるウェブアプリケーションの処理記録方法と、クライアント装置の処理記録をサーバ装置に収集する方法の実施の形態を、図１〜図１１を使って説明する。
まず、図１〜図２では、本発明が対象とするウェブシステム（単に、システムと称する場合がある）に関する基本的な構成を説明する。
【００１３】
図１は、本発明が対象とするウェブシステムのハードウェアに関する基本的な構成を示したシステム構成図である。
ウェブシステムは大きく分けて、クライアント装置１０１とウェブサーバ装置１０９とその間を結ぶネットワーク１１０で構成される。図１ではクライアント装置１０１、ウェブサーバ装置１０９それぞれ１台ずつ記載しているが、それぞれ複数台で構成されてもよい。ウェブサーバ装置１０９が複数台存在する場合は、負荷分散装置１１１を用いて負荷分散構成とすることもできる。本発明が対象とするウェブシステムではウェブサーバ装置１０９の他に記録収集サーバ装置１１２を加えて構成される場合もあり、図１ではそのような構成にしている。
【００１４】
クライアント装置１０１は、マウスやキーボードなどで実装される入力装置（クライアント装置用入力部）１０２、ディスプレイなどで実装される出力装置１０３、ローカルディスク（クライアント装置用記憶部）１０４、ネットワークインタフェース１０５、ＣＰＵ(Central Processing Unit：クライアント装置用制御部)１０６、メモリ（クライアント装置用記憶部）１０７とそれらをつなぐバス１０８から構成される。ウェブサーバ装置１０９、負荷分散装置１１１、記録収集サーバ装置１１２も基本的な構成はクライアント装置１０１と同様であるため、これらの説明は省略する。なお、ウェブサーバ装置１０９と記録収集サーバ装置１１２は装置上で稼働するサーバが異なるだけであり、サーバ装置としては同一の機器構成（サーバ装置用記憶部、サーバ装置用制御部を構成する）でもよい。
【００１５】
ネットワーク１１０は、例えばインターネットやイントラネットであり、クライアント装置１０１、ウェブサーバ装置１０９、負荷分散装置１１１、記録収集サーバ装置１１２のネットワークインタフェース１０５とつながっている。
【００１６】
図２は、本発明が対象とするウェブシステム上で動作するソフトウェアに関する基本的なシステム構成図である。
クライアント装置１０１では、オペレーティングシステム２０１上で、ウェブブラウザ２０３とスクリプトエンジン２０２を実行する。ウェブブラウザ２０３は、リクエストをウェブサーバ装置１０９に送信したり、リクエストしたウェブページのレスポンスをウェブサーバ装置１０９から受信し、レスポンスに含まれるＨＴＭＬ文書を解釈して表示画面を生成してウェブページを閲覧したりする機能を持つ。
スクリプトエンジン２０２はウェブページのレスポンスに含まれるスクリプトコードを解釈して実行する機能を持つ。スクリプトコードの例としてはＪＡＶＡＳＣＲＩＰＴなどが挙げられる。
【００１７】
ウェブサーバ装置１０９では、オペレーティングシステム２０１上でウェブサーバ２０４を実行する。本実施の形態では、ウェブサーバ２０４とは別のプログラムとしてのトレース記録２０８を実行しているが、トレース記録２０８はウェブサーバ２０４上で動作してもよい。また図２では１つのオペレーティングシステム２０１上で１つのウェブサーバ２０４を実行している例を記載しているが、複数のオペレーティングシステム２０１上で別々の複数のウェブサーバ２０４を実行していてもよい。また、ウェブシステムではウェブサーバ２０４の他にアプリケーションサーバやデータベースサーバを実行していてもよく、これらのサーバも１つに限らない。図２では、簡単のためにアプリケーションサーバやデータベースサーバを省略し、まとめてウェブサーバとした。
【００１８】
ウェブサーバ２０４にはサーブレットフィルタ２０６を含むウェブアプリケーション２０５とサーバＩＤ(Identifier)管理アプリケーション（サーバＩＤ管理アプリと表記する場合もある）２０７がある。ウェブアプリケーション２０５はサーブレットフィルタ２０６の他に、サーブレット、ＪＳＰ（登録商標）、リスナなどを含む。一般的なウェブアプリケーションの構成要素はそれぞれ複数でもよく、また、一部を省略することもできる。ウェブサーバ２０４はネットワーク１１０を介して、ウェブブラウザ２０３からのリクエストを受け取り、サーブレットフィルタ２０６で設定されたフィルタ処理を実行した後、ウェブアプリケーション２０５に含まれるサーブレットやＪＳＰにリクエストを渡す。
【００１９】
サーブレットフィルタ２０６は、サーブレットやＪＳＰなどの処理の結果として生成されたレスポンスを受け取り、設定されたフィルタ処理を実行した後、ネットワーク１１０を介して、ウェブブラウザ２０３へレスポンスを返す。複数のウェブサーバ装置１０９と図１で示した負荷分散装置１１１で構成されたシステムでは、ウェブブラウザ２０３からのリクエストをまず負荷分散装置１１１で受信し、それぞれのウェブサーバ装置１０９上で動作する各ウェブサーバ２０４のうち、負荷の少ないものを必要に応じて選択し、リクエストを振り分けることができる。図２では簡単のため負荷分散装置１１１は省略し、ウェブサーバ装置１０９は１台だけ記載している。
【００２０】
トレース記録２０８は、ウェブサーバ２０４での処理の記録を行う。ウェブサーバ装置１０９の処理記録（サーバ処理記録）ともいえる。処理の記録の例としては、リクエストを受けた時刻、リクエストごとの識別子、ウェブアプリケーション２０５で実行された処理の内容、処理にかかった時間、レスポンスが送信された時刻などが挙げられる。トレース記録２０８を用いて、クライアント装置１０１の処理記録（クライアント処理記録）との照合を行い、ウェブシステム全体の処理の流れが確認される。両者の処理記録の照合としては、例えばリクエストやレスポンスが送受信された時刻、識別子の一致・不一致、リクエストしたウェブページとレスポンスしたウェブページの一致・不一致等があげられる。
【００２１】
サーバＩＤ管理アプリケーション２０７は、トレース記録２０８に記録された処理記録に含まれる識別子のうち、ウェブサーバ装置１０９を一意に特定する固有の情報を管理し、記録収集サーバ２０９とのやり取りを行う。ウェブサーバ装置１０９を一意に特定する固有情報の例としてはＩＰアドレスなどが挙げられる。サーバＩＤ管理アプリケーション２０７は、ウェブサーバ装置１０９を一意に特定する固有情報を元に、外部からはウェブサーバ装置１０９の固有情報が容易に推測できない形式の識別子（サーバＩＤ）を生成し、サーバＩＤとサーバＩＤの元となったウェブサーバ装置１０９の固有情報の対を、記録収集サーバ２０９上の記録収集アプリケーション２１０に送信し、サーバＩＤ管理テーブル２１１に登録する。
【００２２】
記録収集サーバ装置１１２では、オペレーティングシステム２０１上で記録収集サーバ２０９を実行する。記録収集サーバ２０９は、記録収集アプリケーション２１０の実行機能と、ウェブサーバ２０４やウェブブラウザ２０３とネットワーク１１０を介して通信を行う機能を備えたサーバプログラムである。記録収集サーバ２０９の例としては、ウェブサーバやアプリケーションサーバが挙げられるが、ウェブサーバ装置１０９上のウェブサーバ２０４と区別するために、記録収集サーバと記載する。また、記録収集サーバ２０９はウェブサーバ２０４と同一のサーバ装置で動作させることもできるが、本実施の形態では別のサーバ装置である記録収集サーバ装置１１２で動作させる例を記載する。
【００２３】
記録収集アプリケーション２１０は、クライアント装置１０１やウェブサーバ装置１０９から送信された処理記録を、記録収集サーバ装置１１２のローカルディスク１０４に保存する。また、サーバＩＤとウェブサーバ装置１０９の固有情報を管理し、サーバＩＤからウェブサーバ装置１０９の固有情報を復元する機能を持つ。前記機能を用いて、クライアント装置１０１に蓄積されるウェブブラウザ２０３の処理の記録に含まれる識別子を、ウェブサーバ装置１０９上のトレース記録２０８に記録されたウェブサーバ２０４の処理の記録に含まれる識別子に復元した後に、記録収集サーバ装置１１２のローカルディスク１０４に保存する。
【００２４】
次に、図３〜図９を使って、本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録と収集を行う方法（処理）を説明する。
以下に述べる処理は、クライアント装置１０１やウェブサーバ装置１０９（負荷分散装置１１１や記録収集サーバ装置１１２も同様）などのメモリ１０７に格納されたプログラムが記憶領域にロードされ、ＣＰＵ１０６が実行することにより、クライアント装置１０１やウェブサーバ装置１０９などの上に具現化される処理による実行とされるものである。また、各プログラムは予めメモリ１０７に格納されても良いし、他の記憶媒体または通信媒体（ネットワークまたはネットワークを伝搬する搬送波）を介して、必要なときに導入されても良い。
なお、処理の説明において、図１、図２の各装置、各機能を説明するときに用いた符号と同一の符号を用いることにするが、簡単のためその符号を省略する場合がある。
【００２５】
図３は本発明の背景技術となるウェブアプリケーションの処理記録方法における、クライアント装置の処理の記録を行う方法を示したシーケンス図である。
まず、ウェブブラウザがリクエストを送信する。ウェブサーバ装置１０９では、ウェブブラウザからリクエストを受信すると、ウェブサーバ２０４のサーブレットフィルタで、リクエストに対する前処理を実行し、ウェブアプリケーションはリクエストされたウェブページのレスポンスを生成する。この際にウェブサーバ２０４ではウェブサーバ装置１０９での処理の記録をトレースとしてトレース記録に記録し、このトレースに識別子（トレースＩＤ）を付加する。トレースの識別子は、ウェブページのリクエスト毎に異なるユニークな値であり、ウェブサーバ装置１０９に固有の情報を含む。
【００２６】
次にサーブレットフィルタは、トレース記録からこのレスポンスを生成した際のトレース識別子を受信する。そして、レスポンスにクライアント装置１０１で処理の記録を行う処理記録用スクリプトコード（単に、処理記録用スクリプト、またはスクリプトと表記する場合がある）と、リクエスト発行元のクライアント装置１０１側の識別子と、このレスポンスを生成した際のウェブサーバ側のトレース識別子とを挿入する。
その後、サーブレットフィルタがレスポンスに対する後処理を実行し、クライアント装置１０１にレスポンスを送信する。なお、この後処理の後に、スクリプトコードや識別子の挿入を行い、その後にクライアント装置１０１にレスポンスを送信する方法でもよい。
【００２７】
クライアント装置１０１では、ウェブサーバ装置１０９からレスポンスを受信すると、ウェブブラウザがレスポンスを解釈し、処理を実行して、処理結果を例えば、クライアント装置１０１の出力装置に表示する。さらに、スクリプトエンジンは、ウェブサーバ装置１０９でレスポンスに挿入された処理記録用スクリプトを解釈して実行する。このスクリプトの実行には、ウェブブラウザでの処理の記録と、処理の記録をクライアント装置１０１のローカルディスクへの保存の２つの処理が含まれる。
【００２８】
最後に、次のウェブページへのリクエストをウェブサーバ装置１０９に送信する必要があれば、次のリクエストを送信する。
【００２９】
図４は、本発明によるウェブアプリケーションの処理記録方法における、クライアント装置の処理の記録と収集を行う方法を示したシーケンス図であり、図５は本発明におけるウェブサーバ装置の処理フロー図である。図４のウェブサーバ装置１０９が行うシーケンスは、図５の処理フローがなされることにより実現される。
【００３０】
まず、ウェブサーバ装置１０９が開始した（ステップ５０１）後に、サーバＩＤ管理アプリケーションを実行し、サーバＩＤの生成を行う（ステップ５０２）。サーバＩＤは、ウェブサーバ装置１０９を一意に特定する固有情報（ＩＰアドレスなど）を元にし、かつ外部からはウェブサーバ装置１０９の固有情報が容易に推測されない形式の識別子である。
【００３１】
次に、生成されたサーバＩＤと、サーバＩＤの元となったウェブサーバ装置１０９の固有情報の対を、記録収集サーバ装置１１２の記録収集サーバに送信し、サーバＩＤ管理テーブルに登録する（ステップ５０３）。ステップ５０２とステップ５０３については図６でも説明する。
【００３２】
次に、ウェブサーバ装置１０９は、ウェブブラウザからリクエストを受信すると、図３と同様にサーブレットフィルタでリクエストに対する前処理を実行する。サーブレットフィルタで行う前処理では、リクエストにクライアントの処理記録が含まれるかの判定（ステップ５０５）を行うが、ステップ５０５とステップ５０６については、実施の形態２で説明する。ちなみに、クライアントの処理記録が含まれていれば（ステップ５０５でＹｅｓ）、ステップ５０６に進み、その後ステップ５０７に進み、そうでなければ（ステップ５０５でＮｏ）、ステップ５０６をスキップしてステップ５０７に進む。
【００３３】
リクエスト受信後、ウェブサーバ２０４では図３と同様にウェブサーバ装置１０９での処理の記録をトレースとしてトレース記録に記録し、このトレースに識別子（トレースＩＤ）を付加する（ステップ５０７）。ウェブサーバ装置１０９の処理記録に付加するトレースＩＤをサーバ側トレースＩＤ（サーバ側トレース識別子）とする。
【００３４】
次に、ウェブアプリケーションがレスポンスを生成した（ステップ５０８）際、サーバＩＤ管理アプリケーションはトレース記録からトレースＩＤを受信し、ステップ５０２で生成したサーバＩＤを用いて、トレースＩＤをクライアント側トレースＩＤ（クライアント側トレース識別子）に変換する（ステップ５０９）。クライアント側トレースＩＤと区別するために、ウェブサーバ装置１０９のトレース記録に記録されているウェブサーバの処理記録に付加されたトレースＩＤをサーバ側トレースＩＤとする。サーバ側トレースＩＤからクライアント側トレースＩＤへの変換処理（ステップ５０９）については、図７でも説明する。
【００３５】
次に、サーブレットフィルタは、サーバＩＤ管理アプリケーションからクライアント側トレースＩＤを受信し、レスポンスに、クライアント装置１０１で処理の記録を行う処理記録用スクリプトコード、クライアント装置１０１で記録した処理記録を収集するための処理記録送信用スクリプトコード、リクエスト発行元のクライアント側トレースＩＤと、このレスポンスを生成した際のクライアント側トレースＩＤとを挿入する（ステップ５１０）。この時に挿入するスクリプトコードについては、図８で説明する。
【００３６】
その後、サーブレットフィルタがレスポンスに対する後処理を実行し、クライアント装置１０１にレスポンスを送信する（ステップ５１１）。なお、図３と同様、この後処理の後に、スクリプトコードや識別子の挿入を行い、その後にクライアント装置１０１にレスポンスを送信する方法でもよい。
【００３７】
クライアント装置１０１では、ウェブサーバ装置１０９からレスポンスを受信すると、ウェブブラウザがレスポンスを解釈し、処理を実行して、処理結果を例えば、クライアント装置１０１の出力装置に表示する。さらに、スクリプトエンジンは、ウェブサーバ装置１０９でレスポンスに挿入された処理記録用スクリプトを解釈して実行する。このスクリプトの実行には、ウェブブラウザでの処理の記録と、処理の記録をクライアント装置１０１のローカルディスクへの保存の２つの処理が含まれる。
【００３８】
以上で、ウェブサーバ装置１０９の処理を終了する（ステップ５１２）。
なお、説明の便宜上、ステップ５０２およびステップ５０３の処理をまとめたものを処理５１３とし、ステップ５０４〜ステップ５１１の処理をまとめたものを処理５１４と称する。
【００３９】
図６は、本発明におけるウェブサーバ装置にて生成され、記録収集サーバ装置に登録される識別子の例である。
ステップ５０２で行うサーバＩＤの生成と、ステップ５０３で行うサーバＩＤの登録について図６を用いて説明する。
【００４０】
図６ではウェブサーバ装置を一意に特定する固有情報との例としてＩＰアドレス６０１を用いる。ウェブサーバを起動した後、ウェブアプリケーションでリクエストを受け付ける状態になる前に、まずサーバＩＤ管理アプリケーション２０７を開始する。そしてウェブサーバ装置１０９のＩＰアドレス６０１に不可逆な演算を施して、サーバＩＤ６０２を生成する。図６では例としてＩＰアドレス６０１をハッシュ演算した後、末尾に通番（「０」）を付加した値を記載している。
【００４１】
次に、記録収集サーバ装置１１２上の記録収集アプリケーションにＩＰアドレス６０１とサーバＩＤ６０２を送信し、サーバＩＤ管理テーブル２１１に、サーバＩＤ６０２をキー(key)、ＩＰアドレス６０１を値(value)として登録する。
【００４２】
図７は、本発明におけるウェブサーバ装置にて変換される識別子の例である。
ステップ５０９について、図７の例を用いて説明する。図７ではサーバ側トレースＩＤ７０１の例として、ＩＰアドレス／プロセスＩＤ／通番で表される値を用いる。このサーバ側トレースＩＤ７０１はリクエスト単位に一意であり、ウェブサーバ装置１０９のトレース記録２０８に付加される。
【００４３】
サーバＩＤ管理アプリケーション２０７は、図６でサーバＩＤ生成を行った変換と同一の変換を行って、サーバ側トレースＩＤ７０１のＩＰアドレスの部分をサーバＩＤに変換し、クライアント側トレースＩＤ７０２を生成する。図７の例では、クライアント側トレースＩＤ７０２はサーバＩＤ／プロセスＩＤ／通番の形式となる。
【００４４】
クライアント側トレースＩＤ７０２はサーブレットフィルタ２０６に渡され、スクリプトコード７０３と共にレスポンス７０４に挿入され、クライアント装置へ送信される（ステップ５１１参照）。クライアント側トレースＩＤ７０２はクライアント側では復元できないため、負荷分散構成装置やプロキシ装置を用いたウェブシステム構成で、ウェブサーバ装置の内部ＩＰアドレスを隠蔽したい場合に効果がある。
【００４５】
図８は、本発明におけるウェブサーバ装置にて、生成されるレスポンスとレスポンスに挿入されるスクリプトコードの例である。
スクリプトコード７０３は、例えばＪＡＶＡＳＣＲＩＰＴで記述したプログラムコードで、レスポンスボディ８０２のＨＴＭＬに、＜ＳＣＲＩＰＴ＞タグを利用して挿入する。スクリプトコード７０３には、ウェブブラウザ上の処理の記録をクライアント装置のメモリ上に行う処理記録用スクリプトコード８０３と、クライアント装置のローカルディスクへ、メモリ上の処理の記録を保存する処理記録保存用スクリプトコード８０４、クライアント装置から記録収集サーバへクライアント装置の処理記録を送信するための処理記録送信用スクリプトコード１（８０５）、クライアント装置からウェブサーバ装置へ、リクエストと共にクライアント装置の処理記録を送信するための処理記録送信用スクリプトコード２（８０６）がある。
【００４６】
処理記録用スクリプトコード８０３が記録するウェブブラウザ上の処理の例としては、ウェブブラウザがレスポンスを受信した時、レスポンスのウェブブラウザ上への描画が終了した時、マウスやキーボード操作、次のウェブページへのリクエストを送信した時などの処理がある。
【００４７】
処理記録保存用スクリプトコード８０４でローカルディスクに保存されるクライアント装置の処理記録の例としては、前記ウェブブラウザ上の処理の発生時刻とクライアント側トレースＩＤがある。
【００４８】
処理記録送信用スクリプトコード１（８０５）は、ウェブブラウザ上の処理が発生しないまま一定時間が経過したかどうかをクライアント装置の処理記録から判断し、記録収集サーバへクライアント装置の処理記録を送信する機能を持つ。処理記録送信用スクリプトコード１（８０５）によって行われる処理については図９でも説明する。
【００４９】
処理記録送信用スクリプトコード２（８０６）は、リクエスト送信時に、クライアント側の処理記録をリクエストに付加（付与）する機能を持つ。処理記録送信用スクリプトコード２（８０６）については実施の形態２で説明する。
【００５０】
図９は、本発明におけるクライアント装置の処理フロー図である。
クライアント装置では、まず、開始した（ステップ９０１）後に、ウェブブラウザがリクエストを送信する（ステップ９０２）。ウェブサーバ装置で処理５１４（図５参照）が行われた後、レスポンスを受信する（ステップ９０３）と、ウェブブラウザがレスポンスを解釈し処理を実行して処理結果を表示する。この時、スクリプトエンジンは、ウェブサーバ装置でレスポンス（のレスポンスボディ）に挿入されたスクリプトコードの有無を判定し（ステップ９０４）、スクリプトコードがあれば（ステップ９０４でＹｅｓ）それを解釈して処理を実行する。スクリプトコードがなければ（ステップ９０４でＮｏ）、クライアント装置の処理を終了する（ステップ９１１）。
【００５１】
スクリプトコードの解釈による処理の実行は次のようにして行われる。まず、処理記録用スクリプトコード８０３を実行し、ウェブブラウザ上の処理の記録をメモリ上に行う（ステップ９０５）。次に処理記録保存用スクリプトコード８０４を実行し、クライアント装置のローカルディスクへメモリ上の処理の記録を保存する（ステップ９０６）。ステップ９０５とステップ９０６はＨＴＭＬ文書中のスクリプトコードの記述箇所や、ウェブブラウザ上での処理の実行のタイミングにより、同時並行的に実行することもある。
【００５２】
その間、処理記録送信用スクリプトコード１（８０５）の実行により、ウェブブラウザ上の処理を指示するユーザの操作が一定時間内にあるかどうかを判定する（ステップ９０７）。そして、一定時間内にウェブブラウザ上の処理を指示するユーザの操作がない場合は（ステップ９０７でＮｏ）、記録収集サーバにクライアント装置の処理記録を送信する（ステップ９１０）。一定時間内にウェブブラウザ上の処理がない場合に処理記録を送信するというスクリプトコードを実行することで、ユーザの操作に依存せずクライアント側の処理記録を自動的に収集できるという効果がある。また、ウェブブラウザ上の処理が行われていない時に処理記録を送信することで、ウェブブラウザの処理に負荷をかけず、効率的に処理記録を収集できるという効果もある。記録収集サーバにクライアント装置の処理記録を送信した後、クライアント装置の処理を終了する（ステップ９１１）。
【００５３】
一方、ステップ９０７でウェブブラウザ上の処理を指示するユーザの操作があった場合は（ステップ９０７でＹｅｓ）、ＵＲＬ入力やリンククリックなどリクエストの契機になる処理があったか否かを判定する（ステップ９０８）。ＵＲＬ入力やリンククリックなどがあった場合は（ステップ９０８でＹｅｓ）、処理記録送信用スクリプトコード２（８０６）によるリクエストへの処理記録の挿入が行われ（ステップ９０９）、ステップ９０２に戻り、リクエストを送信する。一方、ＵＲＬ入力やリンククリックなどがなかった場合は（ステップ９０８でＮｏ）、ステップ９０５に戻り、ユーザの操作によるウェブブラウザ上の処理をメモリ上に記録する。
【００５４】
なお、処理記録送信用スクリプトコード２（８０６）によるリクエストへの処理記録の挿入（ステップ９０９）については実施の形態２で説明する。
また、説明の便宜上、ステップ９０２〜ステップ９１０の処理をまとめたものを処理９１２と称する。
【００５５】
次に、図１０〜１１を用いて、本発明によるウェブアプリケーションの処理記録収集方法における、記録収集サーバでのクライアント側の処理記録の管理方法について説明する。
図１０は、本発明におけるクライアント装置、ウェブサーバ装置、記録収集サーバ装置の処理フロー図である。クライアント装置、ウェブサーバ装置、記録収集サーバ装置はそれぞれ処理を開始する（ステップ９０１、５０１、１００１）。
【００５６】
まず、ウェブサーバ装置は処理５１３でサーバＩＤの生成と記録収集サーバ装置への登録を行う。記録収集サーバ装置は、サーバＩＤとウェブサーバ装置を一意に特定する固有情報（ＩＰアドレスなど）の対をサーバＩＤ管理テーブルに登録する（ステップ１００２）。記録収集サーバでウェブサーバ装置のサーバＩＤを管理することで、複数のウェブサーバ装置で構成されるシステムでも記録収集サーバを使って各ウェブサーバ装置を特定できる。
【００５７】
次に、クライアント装置は処理９１２において、リクエストを送信し、レスポンスを受信する。ウェブサーバ装置は処理５１４において、リクエストを受信し、スクリプトコードとクライアント側トレースＩＤを挿入したレスポンスを送信する。この際、それぞれクライアント装置からはステップ９１０で、ウェブサーバ装置からはステップ５０６で、記録収集サーバにクライアント側の処理記録が送信される（ステップ１００３）。ステップ５０６については実施の形態２で説明し、本実施の形態ではクライアント装置から送信された処理記録について説明する。
【００５８】
記録収集サーバでは、クライアント装置の処理記録を受信した（ステップ１００３）後、処理記録に含まれているクライアント側トレースＩＤを取得する（ステップ１００４）。次に、記録収集サーバ上の記録収集アプリケーションでは、クライアント側トレースＩＤに含まれるサーバＩＤの値から、ステップ１００２でサーバＩＤ管理テーブルに登録されたウェブサーバ装置を一意に特定する固有情報を取得する（ステップ１００５）。
【００５９】
そして、クライアント側トレースＩＤに含まれていたサーバＩＤと置き換えることで、サーバ側のトレースＩＤを復元する（ステップ１００６）。ステップ５０９でウェブサーバ装置の固有情報を隠蔽し、外部に公開できる形式に変換したトレースの識別子を、処理記録収集の際に復元しておくことでウェブサーバ装置上のトレース記録との照合をより容易に行うことができる効果がある。
以上で、クライアント装置、ウェブサーバ装置、記録収集サーバ装置はそれぞれ処理を終了する（ステップ９１１、５１２、１００７）。
【００６０】
図１１は、本発明における記録収集サーバ装置にて復元される識別子の例である。図７と同様、ウェブサーバ装置の固有情報の例としてウェブサーバ装置のＩＰアドレスを記載し、サーバ側トレースＩＤの例として、ＩＰアドレス／プロセスＩＤ／連番の形式で記載している。
【００６１】
記録収集サーバがステップ１００３で受信したクライアント側の処理記録１１０１には、クライアント側トレースＩＤ７０２が含まれている。記録収集アプリケーション２１０は、クライアント側トレースＩＤ７０２と、さらにそれに含まれるサーバＩＤを取得し、サーバＩＤ管理テーブル２１１を使用して、ウェブサーバ装置のＩＰアドレスを得る。ＩＰアドレスとサーバＩＤを置き換えることで、サーバ側トレースＩＤ７０１が復元できる。
【００６２】
≪実施の形態１のまとめ≫
以上に述べたとおり、本実施の形態では、クライアント装置の処理を記録し、ローカルディスクに保存するスクリプトコードと、クライアント装置の処理記録を収集するためのスクリプトコードをウェブサーバからのレスポンスに挿入し、記録収集サーバ装置によってクライアント装置の処理記録を収集する。その際、クライアント装置の処理記録を収集するためのスクリプトコードに、一定時間内のユーザ操作の有無を判定する機能（コード）を持たせることで、障害時やユーザからの入力がなく放置された場合にも、クライアント装置の処理記録を定期的に記録収集用サーバ装置へ収集することができる。
【００６３】
また、記録収集用サーバでは複数のウェブサーバ装置を一意に特定する識別情報と、その情報を隠蔽しクライアント側に公開可能なサーバ識別子との対応関係を保持し、クライアント装置の処理記録の収集と、複数のウェブサーバ装置のうちアクセスしていたウェブサーバ装置の特定を同時に実現することができる。
【００６４】
［実施の形態２］
次に、本発明によるウェブアプリケーションの処理記録方法と、クライアント装置の処理記録をサーバ装置に収集する方法の別の実施の形態を、図１２〜図１３を使って説明する。実施の形態１と共通の部分は同一の符号を付し、共通の部分の説明は省略して記述する。
【００６５】
図１２は、本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録と収集を行う別の方法を示したシーケンス図である。
本実施の形態では、実施の形態１と同様に、まずウェブサーバ装置１０９でサーバＩＤの生成と記録収集サーバへのサーバＩＤの登録を行う（処理５１３、ステップ１００２）。ウェブサーバ装置１０９が初回のリクエストをクライアント装置１０１から受信し、サーブレットフィルタがレスポンスにスクリプトコードとクライアント側トレースＩＤを挿入してクライアント装置１０１へ送信するまでは実施の形態１と共通である。
【００６６】
クライアント装置１０１では、ウェブサーバ装置１０９からのレスポンスを受信すると、ウェブブラウザがレスポンスを解釈し処理を実行して処理結果を表示する。この時、スクリプトエンジンは、レスポンスにスクリプトコードがあればそれを解釈して実行する。具体的には、図８の処理記録用スクリプトコード８０３と処理記録保存用スクリプトコード８０４を実行し、ウェブブラウザ上の処理の記録とローカルディスクへの保存を行う。そして、次のリクエストがある場合は、ウェブサーバ装置１０９へリクエストを送信する。
【００６７】
この際、処理記録送信用スクリプトコード２（８０６）により、リクエストへの処理記録の挿入が行われる（ステップ９０９参照）。処理記録送信用スクリプトコード２（８０６）は、リクエストの契機となるウェブブラウザ上の処理が発生すると、ローカルディスクからクライアント装置１０１の処理記録を読み込む。そして、その処理記録を一定サイズごとに分割し、リクエストに付与して何度かに分けてウェブサーバ装置１０９に送信する。
【００６８】
ウェブサーバ装置１０９では、サーブレットフィルタがリクエストを受信した後、リクエストにクライアント装置の処理記録が含まれているかを判定する（ステップ５０５）。リクエストにクライアント装置の処理記録が含まれている場合は、サーブレットフィルタが記録収集サーバ装置１１２に、クライアント装置１０１の処理記録を送信する。その後、必要な前処理を行い、ウェブアプリケーションがレスポンスを生成する。この際、このリクエストに対するトレースがトレース記録に記録される。
【００６９】
図１３は、本発明におけるリクエストに挿入されるウェブブラウザの処理記録の例である。
ウェブブラウザが前回のレスポンスを受け取ってから、リクエスト１３０１を送信するまでのウェブブラウザ上の処理の記録をクライアント側トレースＩＤと共にリクエスト１３０１に付加して送信する。具体的には、リクエスト１３０１は、当該クライアント装置のＵＲＬ(Uniform Resource Locator)１３０２およびクライアントの処理記録１１０１を含むデータ領域１３０３から構成されている。クライアントの処理記録１１０１には、ページ（Ｗｅｂページ）のＵＲＬ、クライアント側トレースＩＤ、１つ前のページのクライアント側トレースＩＤ、処理（１）の時刻・内容、…、処理（ｎ）の時刻・内容等が含まれている。
【００７０】
≪実施の形態２のまとめ≫
以上に述べたとおり、本実施の形態では、クライアント装置の処理を記録し、ローカルディスクに保存するスクリプトコードと、クライアント装置の処理記録を収集するためのスクリプトコードをウェブサーバからのレスポンスに挿入し、ウェブサーバ装置を介してクライアント装置の処理記録を収集するとともに、クライアント装置の処理記録を収集するためのスクリプトコードに、クライアント装置の処理記録のリクエストへの挿入を行う機能を持たせる。これにより、通常のクライアント装置とウェブサーバ装置の間のリクエスト、レスポンスのやり取りのたびにクライアント装置の処理記録を収集することができる。
【００７１】
≪その他≫
以上本発明の実施形態についての一例を示したが、本発明は、これに限定されず、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【００７２】
例えば、ハードウェア、ソフトウェア、各シーケンスなどの具体的な構成について、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【００７３】
【図１】本発明が対象とするウェブシステムに関するハードウェアに関する基本的なシステム構成図である。
【図２】本発明が対象とするウェブシステム上で動作するソフトウェアに関する基本的なシステム構成図である。
【図３】本発明の背景技術となるウェブアプリケーションの処理記録方法における、クライアント装置の処理の記録を行う方法を示したシーケンス図である。
【図４】本発明によるウェブアプリケーションの処理記録方法における、クライアント装置の処理の記録と収集を行う方法を示したシーケンス図である。
【図５】本発明におけるウェブサーバ装置の処理フロー図である。
【図６】本発明におけるウェブサーバ装置にて生成され、記録収集サーバ装置に登録される識別子の例である。
【図７】本発明におけるウェブサーバ装置にて変換される識別子の例である。
【図８】本発明におけるウェブサーバ装置にて、生成されるレスポンスとレスポンスに挿入されるスクリプトコードの例である。
【図９】本発明におけるクライアント装置の処理フロー図である。
【図１０】本発明におけるクライアント装置、ウェブサーバ装置、記録収集サーバ装置の処理フロー図である。
【図１１】本発明における記録収集サーバ装置にて復元される識別子の例である。
【図１２】本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録と収集を行う別の方法を示したシーケンス図である。
【図１３】本発明におけるリクエストに挿入されるウェブブラウザの処理記録の例である。
【符号の説明】
【００７４】
１０１  クライアント装置
１０２  入力装置（クライアント装置用入力部）
１０３  出力装置
１０４  ローカルディスク（クライアント装置用記憶部、サーバ装置用記憶部）
１０５  ネットワークインタフェース
１０６  ＣＰＵ（クライアント装置用制御部、サーバ装置用制御部）
１０７  メモリ（クライアント装置用記憶部、サーバ装置用記憶部）
１０８  バス
１０９  ウェブサーバ装置（サーバ装置）
１１０  ネットワーク
１１１  負荷分散装置
１１２  記録収集サーバ装置
２０１  オペレーティングシステム
２０２  スクリプトエンジン
２０３  ウェブブラウザ
２０４  ウェブサーバ
２０５  ウェブアプリケーション
２０６  サーブレットフィルタ
２０７  サーバＩＤ管理アプリケーション
２０８  トレース記録（サーバ処理記録）
２０９  記録収集サーバ
２１０  記録収集アプリケーション
２１１  サーバＩＤ管理テーブル
６０１  ＩＰアドレス（固有情報）
６０２  サーバＩＤ（サーバ装置の識別情報）
７０１  サーバ側トレースＩＤ（サーバ側トレース識別子）
７０２  クライアント側トレースＩＤ（クライアント側トレース識別子）
７０３  スクリプトコード
７０４  レスポンス
８０１  レスポンスヘッダ
８０２  レスポンスボディ
８０３  処理記録用スクリプトコード
８０４  処理記録保存用スクリプトコード
８０５  処理記録送信用スクリプトコード１
８０６  処理記録送信用スクリプトコード２
１１０１  クライアント側の処理記録（クライアント処理記録）
１３０１  リクエスト
１３０２  ＵＲＬ
１３０３  データ領域
【図１】
2010128877.tif 000003
【図２】
2010128877.tif 000004
【図３】
2010128877.tif 000005
【図４】
2010128877.tif 000006
【図５】
2010128877.tif 000007
【図６】
2010128877.tif 000008
【図７】
2010128877.tif 000009
【図８】
2010128877.tif 000010
【図９】
2010128877.tif 000011
【図１０】
2010128877.tif 000012
【図１１】
2010128877.tif 000013
【図１２】
2010128877.tif 000014
【図１３】
2010128877.tif 000015