(57)【特許請求の範囲】
【請求項１】
クライアント装置とサーバ装置およびそれらを接続するネットワークから構成されるコンピュータシステムで、ウェブアプリケーション実行時のクライアント装置とサーバ装置での処理の記録をとる方法であって、
クライアント装置での処理の記録を行うスクリプトコードを前記サーバ装置がウェブページに挿入し、
前記サーバ装置は、前記クライアント装置からリクエストされたウェブページを生成する際に、前記サーバ装置での処理をトレースして記録し、トレース毎に識別子を付加し、この識別子もしくは、該識別子と一対一に対応する値をこのウェブページの識別子として、リクエストされたウェブページのレスポンスに該値を挿入し、
前記クライアント装置は、ウェブページを前記サーバ装置にリクエストする際に、リクエスト元のウェブページの識別子をサーバ装置に送信し、前記サーバ装置はリクエスト元のウェブページの識別子をリクエストされたウェブページのレスポンスに挿入し、
前記クライアント装置は挿入されたスクリプトコードをウェブブラウザで実行して、前記クライアント装置のローカルディスクに、ウェブページで処理の行われた時刻と、該ウェブページの識別子と、該ウェブページのリクエスト元である１つ前のウェブページの識別子とが含まれる処理の記録を保存することを特徴とするウェブアプリケーションの処理記録方法。
【請求項２】
請求項１に記載の処理記録方法であって、前記クライアント装置がローカルディスクに保存した処理の記録が、該処理の記録を行ったスクリプトコードが含まれていたウェブページと同一のディレクトリにあるウェブページからのみ、該処理の記録の読み込み、書き込みができることを特徴とするウェブアプリケーションの処理記録方法。
【請求項３】
請求項２に記載の処理記録方法であって、前記サーバ装置は前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページを生成し、前記クライアント装置は前記サーバ装置に該ウェブページをリクエストして取得し、該ウェブページをウェブブラウザで実行して処理の記録を読み込み、ウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
【請求項４】
請求項３に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページには、処理の記録を行うウェブページが存在するディレクトリのリストと、処理の記録を読み込むスクリプトコードをロードするフレームがあり、ウェブブラウザは、該ディレクトリのリストから順次ディレクトリを選択して、そのディレクトリにある処理の記録を読み込むスクリプトコードを該フレームにロードし、該ディレクトリのウェブページの処理の記録を読み込み、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページの識別子をウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
【請求項５】
請求項３に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページの処理の記録の詳細内容を表示、もしくは処理の記録の削除、もしくは処理の記録内容のサーバ装置への送信を行う手段のうち、少なくとも１つを該ウェブページに備えていることを特徴とするウェブアプリケーションの処理記録方法。
【請求項６】
請求項３に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページの処理の記録の時刻、もしくは各ウェブページへのリクエストをウェブブラウザが送信してからレスポンスを受信するまでの時間、もしくは各ウェブページをウェブブラウザ上に表示するのに要した時間、もしくは各ウェブページのレスポンスを受信してから次のリクエストを送信するまでに要した時間のうち、少なくとも１つをウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
【請求項７】
請求項３に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページがウェブブラウザ上に表示された回数、もしくは各ウェブページが最初に表示された時刻、もしくは各ウェブページが最後に表示された時刻、もしくは各ウェブページへのリクエストをウェブブラウザが送信してからレスポンスを受信するまでの時間の平均値または最大値または最小値、もしくは各ウェブページをウェブブラウザ上に表示するのに要した時間の平均値または最大値または最小値、もしくは各ウェブページのレスポンスを受信してから次のリクエストを送信するまでに要した時間の平均値または最大値または最小値のうち、少なくとも1つをウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
【請求項８】
請求項３に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録に異常が含まれるか否かを判定するスクリプトコードを含み、処理の記録を読み込んだ後に、該スクリプトコードの実行により、異常があった場合に、ウェブブラウザ上に異常があったことを表示、もしくはサーバ装置に異常があったことを通知する機能を有することを特徴とするウェブアプリケーションの処理記録方法。
【請求項９】
請求項３に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、処理記録方法の設定について前記サーバ装置へ問合せる機能を持ったスクリプトコード、もしくは前記サーバ装置から処理記録方法の設定を受信する機能をもったスクリプトコードのうち、少なくとも1つを含み、前記サーバ装置との通信により前記サーバ装置から受信した処理記録方法の設定に従って、該ウェブページでの処理の方法を変更することを特徴とするウェブアプリケーションの処理記録方法。
【請求項１０】
クライアント装置とプロキシ装置とサーバ装置およびそれらを接続するネットワークから構成されるコンピュータシステムで、ウェブアプリケーション実行時のクライアント装置とサーバ装置での処理の記録をとる方法であって、
前記クライアント装置での処理の記録を行うスクリプトコードを前記プロキシ装置が前記サーバ装置から前記クライアント装置に送信されるウェブページに挿入し、
前記サーバ装置は前記クライアント装置からリクエストされたウェブページを生成する際に前記サーバ装置での処理をトレースして記録し、トレース毎に識別子を付加し、この識別子もしくは、該識別子と一対一に対応する値をこのウェブページの識別子とし、前記クライアント装置はウェブページを前記サーバ装置にリクエストする際に、リクエスト元のウェブページの識別子を前記サーバ装置に送信し、前記サーバ装置はリクエスト元のウェブページの識別子と、リクエストされたウェブページの識別子を前記プロキシ装置に通知し、前記プロキシ装置は、前記サーバ装置から前記クライアント装置に送信されるウェブページに前記通知された識別子を挿入し、
前記クライアント装置は挿入されたスクリプトコードをウェブブラウザで実行して、前記クライアント装置のローカルディスクに、ウェブページで処理の行われた時刻と、該ウェブページの識別子と、該ウェブページのリクエスト元である1つ前のウェブページの識別子とが含まれる処理の記録を保存することを特徴とするウェブアプリケーションの処理記録方法。
【請求項１１】
請求項１０に記載の処理記録方法であって、前記クライアント装置がローカルディスクに保存した処理の記録が、該処理の記録を行ったスクリプトコードが含まれていたウェブページと同一のディレクトリにあるウェブページからのみ、該処理の記録の読み込み、書き込みができることを特徴とするウェブアプリケーションの処理記録方法。
【請求項１２】
請求項１１に記載の処理記録方法であって、前記サーバ装置もしくは前記プロキシ装置は前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページを生成し、前記クライアント装置は前記サーバ装置もしくは前記プロキシ装置に該ウェブページをリクエストして取得し、該ウェブページをウェブブラウザで実行して処理の記録を読み込み、ウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
【請求項１３】
請求項１２に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページには、処理の記録を行うウェブページが存在するディレクトリのリストと、処理の記録を読み込むスクリプトコードをロードするフレームがあり、ウェブブラウザは、該ディレクトリのリストから順次ディレクトリを選択して、そのディレクトリにある処理の記録を読み込むスクリプトコードを該フレームにロードし、該ディレクトリのウェブページの処理の記録を読み込み、ウェブブラウザに表示することを特徴とするウェブアプリケーションの処理記録方法。
【請求項１４】
請求項１２に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページの識別子、もしくは各ウェブページの処理の記録の時刻、もしくは各ウェブページへのリクエストをウェブブラウザが送信してからレスポンスを受信するまでの時間、もしくは各ウェブページをウェブブラウザ上に表示するのに要した時間、もしくは各ウェブページのレスポンスを受信してから次のリクエストを送信するまでに要した時間のうち、少なくとも１つをウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント装置とサーバ装置もしくはプロキシ装置から構成されるコンピュータシステムでウェブアプリケーションを実行する際に、ウェブアプリケーションのクライアント装置およびサーバ装置における処理の記録を実現するために、クライアント装置のウェブブラウザ上で処理の記録を行うスクリプトコードを、サーバ装置もしくはプロキシ装置でウェブページに挿入して処理の記録および記録の表示を行う技術に関する。
【背景技術】
【０００２】
ウェブアプリケーションは、スクリプトコードを利用したリッチクライアント技術などの技術進歩と、クライアント装置にウェブブラウザがインストールされていれば簡単に実行できる簡便さから、ビジネス用途を含め、さまざまな分野で利用されるようになってきた。用途によっては、高い可用性や、早い応答速度、使いやすさに対する強いニーズがある。また、リッチクライアント技術などにより、サーバ装置だけでなく、クライアント装置での処理量が増大している。ウェブアプリケーションは、クライアント装置とサーバ装置がネットワークで接続された、クライアント・サーバ型のウェブシステム上で動作するため、前記のニーズを満たすには、サーバ装置だけでなく、クライアント装置やネットワークの可用性や性能などを考慮する必要がある。
【０００３】
これに対して、よく行われているウェブシステムの管理では、サーバ装置において、サーバ装置の動作ログやエラーログを取得し、サーバ装置側での問題の発生や性能の測定が挙げられる。ネットワークについては、平均的なスループットの測定などが行われているものの、個々のトランザクションについての測定は難しい。クライアント装置では、ストップウォッチ法と呼ばれる人がユーザの操作性やユーザから見た性能の測定が行われている。最近では、クライアント装置に性能測定用のツールをインストールして、性能測定を行うこともある。
しかし、これらの方法については多くの問題がある。
・ サーバ装置側については、クライアント装置側で問題の発生を認識しても、サーバ装置のどの部分に問題があるかを探るために、サーバ装置側で取得されているログのどの部分に必要な情報があるのかを探すこと自体が大変である。
・ ネットワークについては、多数の通信が同時に行われているため、個々のトランザクションについての性能測定は困難である。
・ クライアント装置側については、多数のクライアントで長時間測定を行うことは、ストップウォッチ法のような人を介して行う測定ではコスト面、工数面などで困難である。また、クライアントが不特定多数の場合には、性能測定用のツールをクライアント装置にインストールすることも困難である。さららに、多数のクライアントの測定結果をサーバに集めるのは、ネットワークやサーバに負荷をかけてしまう問題がある。
・ 個々の装置での性能測定だけでは、ウェブシステム全体として、どこに問題の発生の原因があるのかを知ることはできない。
これに対して、いくつかの特許や非特許文献にて部分的な解決策が開示されている。
【０００４】
特許文献１では、ＪＡＶＡアプレットおよびJＡＶＡ  ＳＣＲＩＰＴ（登録商標）を利用してユーザのウェブブラウザ上での操作を記録・再生する方法が開示されている。この技術は、クライアント装置側に特別なツールをインストールすることなく、クライアント側の操作性や性能の測定を可能とする。ただし、記録される情報はクライアント装置のウェブブラウザ上での動作や操作に限られ、ウェブシステム全体として処理がどのように行われたかを知るのに必要なサーバ装置等の処理の記録と連携してウェブシステム全体の処理の記録を取る手段は提供されない。また、処理の記録をローカルディスクに保存する方法についても、Javaアプレットと電子署名を利用した方法が開示されているが、よりセキュリティや利便性が高い方法の提供が望まれる。
特許文献２では、ウェブアプリケーションにおけるユーザの操作を記録・再生し、ＡＪＡＸアプリケーションを含めて、ユーザの行動をログから推定できる方法が開示されている。本技術も、ウェブシステム全体としての処理がどのように行われたかを知る手段は提供されず、処理の記録についてもローカルディスクへ保存する方法については提供されていない。
【０００５】
特許文献３では、ＤＨＴＭＬ（登録商標）を利用するウェブページの挙動の確認、あるいはウェブブラウザ間でのウェブページの挙動の相違の確認、あるいはウェブページにおけるアクセシビリティに関わる情報の付与または妥当性確認を、テスト実施者が効果的に実施できる方法が開示されている。ＤＨＴＭＬを利用するウェブアプリケーションの内部状態の解析を実現する一手法であるが、本技術も、ウェブシステム全体としての処理がどのように行われたかを知る手段は提供されず、処理の記録についてもローカルディスクへ保存する方法については提供されていない。
特許文献４では、クライアント側の性能を測定するコードをサーバ装置がクライアント装置へ送信し、測定結果をサーバに通知する方法が開示されている。本技術では、測定結果を一時的にクライアント装置のメモリもしくは永続的記憶装置に記憶される方法として開示されているが、ウェブシステム全体としての処理がどのように行われたかを知る手段は提供されず、処理の記録のセキュリティの高いローカルディスクへの保存、ローカルディスクからの記録読み出し・表示を行う方法については提供されていない。
【０００６】
非特許文献１では、ＡＪＡＸを利用したウェブアプリケーションのエラーチェックや性能プロファイリングなどを実現する方法が開示されている。この技術は、プロキシを利用した実装例が示されており、ウェブアプリケーションに変更を加えずにログを取得する一手法である。本技術も、ウェブシステム全体としての処理がどのように行われたかを知る手段は提供されず、処理の記録についてもローカルディスクへ保存する方法については提供されていない。
非特許文献２では、ＪＡＶＡ  ＳＣＲＩＰＴを利用してウェブブラウザ上で発生するイベントの記録を取得する方法が開示されている。この技術は、クライアント装置での処理の記録を作成する際に利用できる。
【０００７】
非特許文献３では、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）が備えるウェブブラウザ用永続的データファイルへのデータの保存・読み出し方法が開示されている。この技術は、ウェブブラウザがデータをローカルディスクに記録する際に利用できる。
【０００８】
【特許文献１】特開２０００−７６２６６ 公報
【特許文献２】特願２００６−２９８３５３ 公報
【特許文献３】特開２００７−１７２３７７ 公報
【特許文献４】特表２００４−５３７０９７ 公報
【非特許文献１】Emre Kiciman and Helen Wang、 “Live Monitoring: Using Adaptive Instrumentation and Analysis to Debug and Maintain Web Applications”、 11th Workshop on Hot Topics in Operating Systems （HotOS XI）、 San Diego、 May 2007.
【非特許文献２】大津真、 “JavaScriptプログラミング入門[第2版]”、 オーム社.
【非特許文献３】Introduction to Persistence、 http://msdn2.microsoft.com/en-us/library/ms533007.aspx
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明が対象とする、クライアント装置とサーバ装置もしくはプロキシ装置から構成されるコンピュータシステムでウェブアプリケーションを実行する際に、ウェブアプリケーションのクライアント装置およびサーバ装置における処理の記録を実現するために、クライアント装置のウェブブラウザ上で処理の記録を行うスクリプトコードを、サーバ装置もしくはプロキシ装置でウェブページに挿入して処理の記録および記録の表示を行う技術において、前記公知技術およびその組み合わせでは解析する手段が提供されない以下の課題を本発明では解決する。
・ ウェブシステム全体としての処理がどのように行われたかを記録・表示する。ウェブシステム全体とは、サーバ装置だけでなく、クライアント装置やネットワークを含むことを意味する。さらに、ウェブアプリケーションの動作は、クライアント装置からのウェブページへのリクエスト、サーバ装置でのウェブページの生成、クライアント装置でのウェブページの表示およびウェブページ上での操作、ネットワーク上での前記リクエストおよびウェブページの送受信からなるため、これらの処理の記録を一連の記録として解釈できる方法が必要である。この課題の解決により、ウェブアプリケーションで問題が発生した際に、どの部分に問題があるかを把握することが容易になる。
・ クライアント装置へのツールのインストールや、サーバ装置でのウェブアプリケーションの改変など利便性を損なう作業無く、サーバ装置やネットワークに負荷をかけずに、セキュリティの高いクライアント装置のローカルディスク領域にクライアント装置の処理の記録を行うことで、クライアント装置の数が増大したときにもスケーラブルに処理の記録および記録の表示を行う。
【課題を解決するための手段】
【００１０】
本発明は、クライアント装置からのウェブページのリクエストに対して、サーバ装置がクライアント装置のウェブブラウザ上で処理の記録を行うスクリプトコードと、リクエスト元のウェブページの識別子およびリクエストされたウェブページの識別子を、クライアント装置に対するウェブページのレスポンスに挿入して返信することで、クライアント装置へのツールのインストール無しに、クライアント装置で処理の記録を実現する。また、識別子を処理の記録と共に保存することで、ウェブページのアクセスの履歴をたどることもできる。さらに、前記識別子は、サーバ装置でウェブページを生成する際の処理を記録したトレースの識別子もしくは、トレースの識別子と一対一対応する値とすることで、そのウェブページのクライアント装置での処理の記録と、そのウェブページの生成時のサーバ装置での処理の記録を関連付けられる。これらにより、ウェブシステム全体として処理がどのように行われたかを記録することができる。
【００１１】
ウェブブラウザ上で処理の記録を行うスクリプトコードは、ウェブブラウザがサーバ装置からレスポンスを受け取った際や、レスポンスのウェブブラウザ上への描画が終了した際や、マウスやキーボード操作、次のウェブページへのリクエストを送信した際などに発生させるイベントを記録する機能を持ち、これらの記録から、ウェブページのリクエストからレスポンスまでの通信時間や、ウェブページ上への描画に要した描画時間、描画終了から次のリクエストの送信までに要した閲覧・操作時間などの他に、ウェブページ上でのマウスのクリック回数などの統計量も記録することができる。これはウェブアプリケーションで問題が発生した際に、どの部分に問題があるかを切り分ける際の最初の判断材料となる。さらに、例えば通信時間に問題があると判断した場合、本発明の前記の手段により、サーバ装置でウェブページを生成した際の処理の記録であるトレースの識別子がクライアント装置に保存されている処理の記録に含まれているので、関連するサーバ装置のトレースを参照して通信時間の問題の詳細化を行うことができる。
【００１２】
本発明では、さらにクライアント装置での処理の記録方法についても、前記課題である、クライアント装置の数が増大したときにもスケーラブルかつ高いセキュリティを維持して処理の記録および記録の表示を行う方法についても示す。クライアント装置での処理の記録は、クライアント装置のローカルディスクに保存する。保存先は、ローカルディスク上の任意の場所ではなく、ウェブブラウザが保存・読み込みを許可された限定された領域で、かつ情報の保存をしたウェブページと同一ディレクトリにあるウェブページからのみ情報の保存や読み込みが可能な領域を利用してセキュリティを高める。しかし、処理の記録をまとめて閲覧する際には、閲覧するためのウェブページから、そのままではこれらの処理の記録の読み出しが出来ないので、閲覧用のウェブページには、フレームを用意し、処理の記録が行われたディレクトリ毎にローカルディスクの該当箇所から処理の記録を読み出すスクリプトを順次フレームにロードして、フレーム内から処理の記録を読み出し、これを閲覧用のウェブページに蓄積することで、複数のディレクトリにまたがったウェブページの処理の記録をまとめて表示することを実現する。
【発明の効果】
【００１３】
本発明によれば、クライアント装置へのツールのインストールや、サーバ装置のウェブアプリケーションの改変が不要で、簡便な方法でクライアント装置での処理の記録を実行できる効果がある。また、処理の記録から、ウェブシステムでの一連の処理の内容を確認することができる。
【実施例１】
【００１４】
本発明によるウェブアプリケーションの処理記録方法の実施例を図１から図１５を使って説明する。
【００１５】
まず、最初に図１から図３では、本発明が対象とするウェブシステムと、ウェブアプリケーションの構成や、基本的な処理のフローについて説明する。
【００１６】
図１は、本発明が対象とするウェブシステムに関する基本的な構成を示すブロック図である。
【００１７】
ウェブシステムは大きく分けてクライアント装置１０１とサーバ装置１１１とその間を結ぶネットワーク１２１から構成される。図１ではクライアント装置１０１、サーバ装置１１１共に１台ずつ記載してあるが、それぞれ複数台で構成されても良い。クライアント装置１０１は、ＣＰＵ１０２、メモリ１０３、ローカルディスク１０４、外部インタフェース１０６、ネットワークインタフェース１０９とそれらをつなぐバス１０５から構成される。外部インタフェース１０６は、さらに表示装置１０７、入力装置１０８とつながる。表示装置１０７とは、ＣＲＴモニタや液晶モニタなどである。入力装置１０８とは、キーボードやマウスなどである。サーバ装置１１１も基本的な構成はクライアント装置１０１と同様である。ネットワーク１２１は、インターネットやイントラネットで、クライアント装置１０１、サーバ装置１１１のネットワークインタフェース１０９、１１９とつながっている。
【００１８】
クライアント装置１０１では、ローカルディスク１０４上に保存されているオペレーティングシステムとウェブブラウザの実行コードがメモリ１０３上に展開され、ＣＰＵ１０２で実行される。ウェブブラウザは入力装置１０８からの指示を、外部インタフェース１０６を介して受け、ウェブページのリクエストを生成し、ネットワークインタフェース１０９を介してネットワーク１２１にリクエストを送信する。サーバ装置１１１からのウェブページのレスポンスを、ネットワークインタフェース１０９を介して受信すると、外部インタフェース１０６を介して表示装置１０７にウェブページを表示する。
【００１９】
サーバ装置１１１では、ローカルディスク１１４に保存されているオペレーティングシステムとウェブサーバ、データベースサーバなどのサーバプログラムの実行コードがメモリ１１３上に展開され、ＣＰＵ１１２で実行される。サーバプログラムはクライアント装置１０１からのウェブページのリクエストを、ネットワークインタフェース１１９を介して受信し、サーバプログラムがウェブページを生成して、レスポンスを、ネットワークインタフェース１１９を介してネットワーク１２１に送信する。サーバ装置１１１の表示装置１１７は、サーバプログラムの処理状況や、設定内容を表示し、入力装置１１８は、サーバプログラムを起動・終了したり、サーバプログラムの設定を変更したりするのに利用する。
【００２０】
図２は、本発明が対象とするウェブシステム上で動作するソフトウェアに関する基本的な構成を示すブロック図である。
【００２１】
クライアント装置１０１では、オペレーティングシステム２０１上でウェブブラウザ２０２が実行される。ウェブブラウザ２０２には、ＨＴＭＬインタプリタ２０３、スクリプトインタプリタ２０４、レンダリングエンジン２０５、ユーザインタフェース２０６が含まれる。ＨＴＭＬインタプリタ２０３は、サーバ装置１１１から送信されてくるウェブページのレスポンスに含まれるＨＴＭＬ文書を解釈する。スクリプトインタプリタ２０４は、ウェブページのレスポンスに含まれるスクリプトコードを解釈して実行する。スクリプトコードの例としては、ＪＡＶＡＳＣＲＩＰＴが挙げられる。レンダリングエンジン２０５は、ＨＴＭＬインタプリタ２０３、スクリプトインタプリタ２０４の実行結果に基づいてウェブページの表示画面を作成する。通常、作成されたウェブページの表示画面は、図１の表示装置１０７に表示される。ユーザインタフェース２０６は、図１の入力装置１０８から入力されたデータを受信して、ＨＴＭＬインタプリタ２０３やスクリプトインタプリタ２０４にデータを渡して次のウェブページのリクエストの生成や、画面の更新などを実行させる。
【００２２】
クライアント装置での処理とは、上記のような、HTML文書の解釈や、スクリプトコードの実行、ウェブページの表示画面の生成、入力データの受信、リクエストの生成や、画面の更新などを含む。クライアント装置での処理の記録とは、上記の処理の種類、発生時刻や、入力データの値などの処理内容に関係する情報が含まれる。
【００２３】
サーバ装置１１１では、オペレーティングシステム２０１上でウェブサーバ２０７とデータベースサーバ２１１が実行される。図２では、１つのオペレーティングシステム２０１上でウェブサーバ２０７とデータベースサーバ２１１が実行されているが、オペレーティングシステム２０１が複数あり、それぞれ別のオペレーティングシステム２０１でサーバプログラムが実行されていても良い。また、一部のサーバが実行されていない、もしくは別の例えばアプリケーションサーバが実行されていても良く、ウェブサーバ２０７やデータベースサーバ２１１も１つに限らない。図２では、簡単のためアプリケーションサーバを省略し、ウェブサーバに含まれるとした。
【００２４】
本実施例では、ウェブサーバ２０７上に、トレース記録２０８、サーブレットフィルタ２０９、ウェブアプリケーション２１０がある。サーブレットフィルタ２０９は、ウェブブラウザ２０２からネットワーク１２１を介してウェブページのリクエストを受信し、設定されたフィルタ処理をリクエストに対して行い、ウェブアプリケーション２１０に渡す。また、ウェブアプリケーションから受けたウェブページのレスポンスに対して、設定されたフィルタ処理を行い、ネットワーク１２１を介してウェブブラウザ２０２に返信する。図２では簡単のために、省略したが、詳細にはネットワーク１２１とサーブレットフィルタ２０９の間にコンテナと呼ぶウェブブラウザとの通信を管理する機能モジュールが存在する。ウェブアプリケーション２１０は、リクエストされたウェブページの生成を行う。ウェブアプリケーション２１０は、サーブレットやＪＳＰ、ＥＪＢ（登録商標）などのプログラムで構成される。図２では簡単のために、ウェブアプリケーション２１０を実行する個々のエンジンは省略し、単にウェブアプリケーション２１０と記載した。ウェブアプリケーション２１０は必要に応じてデータベースサーバ２１１と通信をして必要なデータの授受を行う。トレース記録２０８は、ウェブサーバ２０７での処理の記録を行う。処理の記録としては、ネットワーク１２１からリクエストを受けた時刻や、ウェブアプリケーション２１０で実行された処理の内容、データベースサーバ２１１との通信時に割り当てた識別子や、データベースサーバ２１１との通信内容、ウェブアプリケーションの終了コード、サーブレットフィルタ２０９からネットワーク１２１にレスポンスが送信された時刻などが例として挙げられる。データベースサーバ２１１は、データベースを保有し、ウェブアプリケーション２１０からの検索や更新の要求に応じてデータベースからデータを返したり、データベースの内容を書き換えたりする。
【００２５】
図３は本発明が対象とするウェブシステム上でウェブアプリケーションが動作する際の基本的な処理フロー図である。図３では、クライアント装置の処理フローと、サーバ装置の処理のフローとを並列させて示している。
【００２６】
まずクライアント装置の基本的な処理のフローを説明する。クライアント装置では、ウェブブラウザにリクエストを出したいウェブページのＵＲＬを入力するか、そのウェブページへのリンクをクリックすることにより、サーバ装置に送信するリクエストを生成する（ステップ３０２）。次に生成したリクエストをサーバ装置に送信する（ステップ３０３）。サーバ装置からのリクエストしたウェブページのレスポンスを受信する（ステップ３０４）と、ウェブブラウザのＨＴＭＬインタプリタがレスポンスを解釈し（ステップ３０５）、レスポンスにスクリプトコードが含まれているかを確認して（ステップ３０６）、含まれていればスクリプトインタプリタがスクリプトコードを解釈して処理を実行する（ステップ３０７）。その後レンダリングエンジンが処理結果をウェブブラウザに表示する（ステップ３０８）。さらに、次のウェブページへのリクエストをサーバ装置に送信する必要があれば、ステップ３０２に戻る。次のウェブページへのリスエストがなくウェブブラウザを終了するならばステップ３１０になる。
【００２７】
次にサーバ装置の基本的な処理のフローを説明する。サーバ装置を開始する（ステップ３２０）と、まずサーバ装置は処理のトレース記録を開始する（ステップ３２１）。その後、クライアント装置からウェブページのリクエストを受信する（ステップ３２２）と、まずサーブレットフィルタがリクエストに対する前処理を実行する（ステップ３２３）。前処理の内容としては、例えばリクエストに含まれる情報の一時的な保存や、リクエストを受信した時刻の記録などが例として挙げられる。続いて、ウェブアプリケーションの処理（ステップ３３１）が行われる。ウェブアプリケーションの処理（ステップ３３１）では、まずウェブアプリケーションがリクエストを解釈し（ステップ３２４）、データべースへのアクセスの要否を判定し（ステップ３２５）、データベースへのアクセスが必要ならば、データベースサーバにアクセスしてデータを取得もしくは更新し（ステップ３２６）、その後ウェブアプリケーションがリクエストに対するレスポンスを生成する（ステップ３２７）。次に、サーブレットフィルタがレスポンスに対する後処理を実行し、クライアント装置にレスポンスを送信する（ステップ３２８）。後処理の内容としては、例えばレスポンスに対して情報を追加挿入や、レスポンスをクライアント装置に向けて送信する時刻を記録するなどが例として挙げられる。サーバ装置では次のリクエストが有ればステップ３２２に戻り、次のリクエストが無く、サーバ装置を終了してよければステップ３３０になる。
【００２８】
クライアント装置とサーバ装置の処理のフローの関係としては、クライアント装置がリクエストをサーバ装置に送信するステップ３０３の後で、サーバ装置がクライアント装置からリクエストを受信し（ステップ３２２）、レスポンスを生成して、クライアント装置にレスポンスを送信するステップ３２８の後で、クライアント装置がサーバ装置からレスポンスを受信して（ステップ３０４）、ウェブブラウザにウェブページが表示される。
【００２９】
次に、図４から図１５を使って、本発明によるウェブアプリケーションの処理記録方法について説明する。
【００３０】
図４と図５は、本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う方法を示したシーケンス図と処理フロー図である。
【００３１】
まず、ウェブブラウザでウェブページへのリクエストを生成する際に、リクエストを生成するウェブページに含まれるスクリプトコードにより、サーバ装置との間で少量のデータのやり取りを可能とするｃｏｏｋｉｅに、リクエストを生成したウェブページの識別子（図中ではＩＤ）を設定する（ステップ５０２）。この識別子は、後述するサーバ装置での処理の記録であるトレースの識別子もしくは、それと一対一対応する値である。ウェブブラウザにウェブページが表示されておらず、リクエスト先のウェブページのＵＲＬを直接入力してリクエストを生成した場合は、ｃｏｏｋｉｅには値が設定されない。また、リクエスト元のウェブページが本発明によるクライアントの処理の記録を行うウェブページでない場合や、図４で説明するクライアントの処理の記録を行うためのスクリプトコードをサーバ装置からのレスポンスに挿入する機能が稼動する前にクライアント装置に送信されたウェブページである場合には、ｃｏｏｋｉｅには値が設定されない。その後リクエストをサーバ装置に送信する（ステップ３０３）。
【００３２】
サーバ装置では、クライアント装置からリクエストを受信する（ステップ３２２）と、ウェブサーバのサーブレットフィルタで、クライアント装置より送信されたリクエストのｃｏｏｋｉｅからリクエスト発行元のウェブページの識別子を読み出し、一時的にメモリ上に記録する（ステップ５２１）。続いてサーブレットフィルタがリクエストに対する前処理を実行し（ステップ３２３）、ウェブアプリケーションでは必要に応じてデータベースサーバとの通信を行いリクエストされたウェブページのレスポンスを生成する（ステップ３３０）。この際にウェブサーバではサーバ装置での処理の記録をトレースとして記録し、このトレースに識別子（図中ではＩＤ）を付加する。トレースの識別子は、ウェブページのリクエスト毎に異なるユニークな値である。識別子に関しては図９でも説明する。次にサーブレットフィルタは、トレース記録からこのレスポンスを生成した際のサーバの処理の記録であるトレースの識別子を受信する。そして、レスポンスにクライアント装置で処理の記録を行うモニタリング用スクリプトコードと、一時的にメモリ上に記録していたリクエスト発行元のウェブページの識別子と、このレスポンスを生成した際のサーバの処理の記録であるトレースの識別子とを挿入する。なおこのサーバ処理のトレースの識別子に代えて、その識別子と一対一対応する値をリクエストされたウェブページの識別子として挿入してもよい（ステップ５２２）。
【００３３】
モニタリング用スクリプトコードは、例えばＪＡＶＡＳＣＲＩＰＴで記述したプログラムコードで、レスポンスのＨＴＭＬに、＜ＳＣＲＩＰＴ＞タグを利用して挿入する。モニタリング用スクリプトコードは、ウェブブラウザがサーバ装置からレスポンスを受け取った際や、レスポンスのウェブブラウザ上への描画が終了した際や、マウスやキーボード操作、次のウェブページへのリクエストを送信した際などに発生させるイベントを記録する機能を持ち、イベントの発生時刻や、ウェブページの識別子などと共にクライアント装置のローカルディスクへ処理の記録を保存する機能も含まれる。また、ウェブページの識別子をレスポンスに挿入する方法としては、モニタリング用スクリプトコード中に、変数の値として設定する方法が例として挙げられる。
【００３４】
次に、サーブレットフィルタがレスポンスに対する後処理を実行し、クライアント装置にレスポンスを送信する（ステップ３２８）。なお、この後処理の後に、ステップ５２２の処理を行い、その後にクライアント装置にレスポンスを送信する方法でもよい。サーバ装置のリクエスト受信前およびレスポンス送信後の処理は、図３と同じである。また、上記説明からも分かるように、ウェブアプリケーションの処理（ステップ３３０）についても、図３と図５では同じで、つまり本発明によるウェブアプリケーションの処理記録方法を適用しても、ウェブアプリケーションの処理には変更がない。
【００３５】
クライアント装置では、サーバ装置からレスポンスを受信する（ステップ３０４）と、ＨＴＭＬインタプリタがレスポンスを解釈し（ステップ３０５）、スクリプトインタプリタがスクリプトを解釈して処理を実行して（ステップ３０７）、レンダリングエンジンが処理結果を表示する（ステップ３０８）。さらに、スクリプトインタプリタは、サーバ装置でレスポンスに挿入されたモニタリング用スクリプトを解釈して実行する（ステップ５０３）。ステップ５０３は、ウェブブラウザでの処理の記録（ステップ５０４）と、処理の記録をローカルディスクに保存（ステップ５０５）の２つの処理が含まれる。ステップ５０３とステップ３０７、ステップ３０８については、レスポンスのＨＴＭＬ中でスクリプトコードが記述されている場所や、ウェブブラウザでの処理の実行タイミングやイベントの発生タイミングにより、ステップ５０３とステップ３０７、ステップ３０８が同時並行的に処理されることもある。
最後に、次のウェブページへのリクエストをサーバ装置に送信する必要があれば、ステップ５０２に戻る。次のウェブページへのリクエストがなくウェブブラウザを終了するならばステップ５０６になる。
【００３６】
図６は、本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が処理の記録を保存するローカルディスクの構成図である。
【００３７】
クライアント装置のローカルディスク１０４には、複数の種類のファイルが存在する。システムファイル６０４は、例えばオペレーティングシステムのファイルや、スワップファイル、アプリケーションの設定ファイルなどが含まれる。通常、ウェブブラウザ２０２上のウェブページから、システムファイル６０４へはアクセスせず、本発明による処理の記録の保存先としても利用できない。ウェブブラウザ用ページキャッシュファイル６０２は、ウェブブラウザ２０２がウェブページの表示を高速化するために、ウェブページのキャッシュとして利用するファイルである。通常、ウェブブラウザ２０２上のウェブページからウェブブラウザ用ページキャッシュファイル６０２へはアクセスせず、本発明による処理の記録の保存先としても利用できない。通常ファイル６０３は、文章ファイルや、アプリケーションファイルなどである。通常、ウェブブラウザ２０２上のウェブページから通常ファイル６０３へはアクセスせず、本発明による処理の記録の保存先としても利用できない。ウェブブラウザ用永続的データファイル６０１は、ウェブブラウザ２０２上のウェブページからデータをローカルディスク１０４に保存するために用意されている領域である。この領域に保存したデータは、ウェブブラウザ２０２を終了しても一定の条件でデータが保存されるので、永続的なデータファイルである。ウェブブラウザ用永続的データファイル６０１の例としては、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒから利用できるｕｓｅｒＤａｔａ領域が挙げられる。ウェブブラウザ用永続的データファイル６０１は、通常、ウェブブラウザ２０２上のウェブページから、条件付でデータの読み書きをできるので、本発明による処理の記録の保存先として利用できる。ウェブブラウザ用永続的データファイル６０１以外のファイルに対しても、ウェブブラウザ２０２にプラグインソフトウェアを組み込んで利用するなどの方法で、ファイルの読み書きが可能になる場合もあるが、オペレーティングシステムの動作や、アプリケーションの動作、文章ファイルの内容などに影響を与える可能性があるため、セキュリティ面での問題がある。そのため、通常、ウェブブラウザ２０２からこのようなファイルにアクセスする場合には、セキュリティに関する警告が表示されるなどの動作が起こる。そのため、本発明による処理の記録の保存先として利用するには、適切ではない。
【００３８】
図７は、本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が処理の記録を保存するウェブブラウザ用永続的データファイルの制約に関する説明図である。ウェブブラウザ用永続的データファイル６０１は、通常、ウェブブラウザ２０２上のウェブページからデータの読み書きをできるが、無条件にデータの読み書きができるわけではない。これは無制限にローカルディスク１０４を利用できると、ローカルディスク１０４の空き容量をなくすことや、他のウェブアプリケーションや、他のユーザが保存したデータを読み出す不正アクセスができることになり、セキュリティ面での問題があるためである。そのため、ウェブブラウザ用永続的データファイル６０１の利用には、使用可能な容量の制限の他に、読み書きできるのは、データを保存したウェブページと同じディレクトリに存在するウェブページだけという制約が存在する。また、ウェブブラウザ用永続的データファイル６０１へのデータの保存時には、アクセスキーと呼ぶ鍵を設定し、データの読み出し時には、保存時に設定したアクセスキーが必要である。図７で、ウェブページ（１）７０１がデータを保存したウェブブラウザ用永続的データファイル（１）７０５は、ウェブページ（１）７０１と別ディレクトリにあるウェブページ（２）７０２からは読み書きできない。一方、ウェブページ（２）７０２が２つの別のアクセスキーを使ってウェブブラウザ用永続的データファイル（２Ａ）７０６、ウェブブラウザ用永続的データファイル（２Ｂ）７０７にデータを保存した場合、ウェブページ（２）７０２は、どちらのウェブブラウザ用永続的データファイルに対してもそれぞれのアクセスキーを使ってアクセスすることでデータを読み書きができる。また、ウェブページ（３）７０３とウェブページ（４）７０４は別のウェブページであるが、同一のディレクトリにあるので、共通のアクセスキーを利用すれば、ウェブブラウザ用永続的データファイル（３）７０８に、どちらのページからもアクセスしてデータの読み書きができる。
ウェブブラウザ用永続的データファイル７０９は、データの読み書きに必要なアクセスキーの他に、複数のアトリビュートとデータの組で構成される。アトリビュートは、各データのインデックスとして利用する値で、例えば、アトリビュートに”time”を指定し、データに”10:00:00.000”を指定してデータを保存した場合、アトリビュートに”time”を指定してデータを読み出すことで、データ”10:00:00.000”を読み出すことができる。
つまり、ウェブブラウザ用永続的データファイルからデータを読み出すには、データを保存したウェブページと同じディレクトリにあるウェブページの読み出し用のスクリプトコードが、データを保存した時と同じアクセスキーでアトリビュートを指定してデータを読み出すことになる。本実施例では、アクセスキーはウェブページの識別子である。ウェブページの識別子は、サーバ装置でのウェブページ生成時のトレースの識別子と一対一対応するリクエスト毎に異なるユニークな値であるので、ウェブページのアクセス毎に異なるアクセスキーが利用され、ウェブブラウザ用永続的データファイルがウェブページへの別のアクセスによって上書きされる危険がない。
【００３９】
このように、本発明では、クライアント装置での処理の記録先を、ローカルディスクの限定的にアクセスできる領域とすることで、クライアントの数が増大したときにも、サーバ装置やネットワークに過大な負荷をかけずにスケーラブルに処理の記録を実現し、さらに、ローカルディスク上のファイルの破壊や、情報の不正な流出を起こす危険性を低下し、セキュリティを高めた処理の記録および記録の読み出しを行える効果がある。
【００４０】
図８は、本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が保存する処理の記録の内容に関する説明図である。
【００４１】
ウェブブラウザ用永続的データファイルに保存されるウェブページ毎のクライアントの処理の記録の内容の例は、図８に示すとおりである。つまり、処理の記録を行ったウェブページのＵＲＬ、識別子（ＩＤ）、このウェブページのリクエスト元のウェブページの識別子（ＩＤ）、このウェブページで行われた処理の時刻とその内容などである。２つの識別子を処理の記録に含めるのは、クライアント装置のウェブページへのアクセス履歴を記録するためである。つまり、あるウェブページでのクライアントの処理の記録を見れば、そのウェブページに対するリクエストを発行した1つ前のウェブページの識別子を取得できるので、その1つ前のウェブページの識別子をアクセスキーとして利用してウェブブラウザ用永続的データファイルにアクセスすれば、1つ前のウェブページでのクライアントの処理の記録が得られる。これを繰り返すことで、順次1つ前のウェブページでのクライアントの処理の記録をたどることが可能となる。
【００４２】
処理の記録に保存されている、ウェブページで行われた処理とは、例えばこのウェブページのactivateイベントが発生した時などである。図８の８０２に示す例について、具体的に説明する。
【００４３】
activateイベントとは、ウェブページ上のオブジェクトがアクティブになった際に発生するイベントである。ここでは、ウェブページの表示内容が記述されているＨＴＭＬ文章のデータ構造を表すオブジェクト階層構造で最上位にあるｄｏｃｕｍｅｎｔオブジェクトのａｃｔｉｖｅイベントを記録することで、このウェブページを受信したことが分かる。
loadイベントとは、ウェブブラウザ上にオブジェクトが表示されたもしくはウェブブラウザ上でオブジェクトが利用可能になった際に発生するイベントである。ここでもｄｏｃｕｍｅｎｔオブジェクトのｌｏａｄイベントを記録することで、このウェブページのウェブブラウザ上にウェブページが表示されたことが分かる。
【００４４】
ｂｅｆｏｒｅｕｎｌｏａｄイベントは、ウェブブラウザを閉じたり、次のページに遷移したりする際に発生するウェブページのアンロードに先立って発生するイベントである。ウェブブラウザの実装方法によるが、通常はｂｅｆｏｒｅｕｎｌｏａｄイベントが発生した後に次のウェブページへのリクエストがサーバ装置に対して送信される。類似のイベントとしてｕｎｌｏａｄイベントがあるが、ウェブブラウザの実装方法によるが、通常、ｕｎｌｏａｄイベントは次のウェブページへのリクエストを送信後に、ウェブブラウザ上に現在表示されているウェブページを消す直前に発生するイベントであり、ウェブページのリクエスト送信からレスポンス受信までの通信時間を測定するには、ウェブページへのリクエスト発行元のウェブページにおけるｂｅｆｏｒｅｕｎｌｏａｄイベントの発生時刻と、リクエストされたウェブページのａｃｔｉｖａｔｅイベントの発生時刻を記録すればよい。ただし、例外的に、ｂｅｆｏｒｅｕｎｌｏａｄイベント発生後に次のウェブページへのリクエスト送信をキャンセルすることができる。ｂｅｆｏｒｅｕｎｌｏａｄイベント後にｕｎｌｏａｄイベントが発生していることを確認することにより、次のウェブページへのリクエスト送信がキャンセルされずに送信されていることが分かる。
【００４５】
イベントの発生時刻だけでなく、例えばｃｌｉｃｋイベントの発生回数なども処理の記録とすることが可能である。ｃｌｉｃｋイベントは、ウェブページ上でマウスをクリックすると発生するイベントで、ラジオボタンやチェックボックスのクリックやボタンなどのクリック時に発生する。通常バブリングと呼ばれる仕組みにより、ウェブページ内にあるボタンなどのオブジェクトをクリックした際に発生するｃｌｉｃｋイベントは、ウェブページのオブジェクト階層構造で上位にあるｄｏｃｕｍｅｎｔオブジェクトでこれらのｃｌｉｃｋイベントを記録することができる。つまり、ｄｏｃｕｍｅｎｔオブジェクトでｃｌｉｃｋイベントの発生回数を数えれば、このウェブページ内でマウスをクリックした回数を取得できる。この他にも、マウスポインタの動きに合わせて発生するmousemoveイベントで、マウスポインタのウェブブラウザ上での位置座標を取得すれば、マウスが動いた距離を測定することなどもできる。図８に示した処理の記録以外にも、ウェブブラウザ上で発生するさまざまなイベントの発生時刻や、内容などを処理の記録とすることができる。
【００４６】
図９は、本発明によるウェブアプリケーションの処理記録方法における、ウェブページの識別子に関する説明図である。
【００４７】
図９を使って、クライアント装置１０１がウェブページ（１）・（２）・（３）の順にアクセスする際に各ウェブページでのクライアントの処理の記録に保存されるウェブページの識別子に関し、クライアント装置１０１とサーバ装置１１１間で識別子を引き継ぐ方法を説明する。なお、図９では簡単のためにネットワークや、クライアント装置１０１、サーバ装置１１１内部の構成は省略している。
【００４８】
まずクライアント装置１０１からウェブページ（１）のリクエストをサーバ装置１１１に送信する。図９では、ウェブブラウザにウェブページがロードされておらず、ウェブページ（１）のＵＲＬを直接ウェブブラウザのアドレスバーに直接入力してリクエストを発行した場合を示している。そのため、ウェブページ（１）のリクエストの発行元は「なし」となる。サーバ装置１１１では、クライアント装置１０１からリクエストを受信すると、まずｃｏｏｋｉｅからリクエスト発行元のウェブページ、つまりリクエストされたウェブページの前のページの識別子（ＩＤ）を取得する。しかし、この場合は「なし」となる。その後、サーバ装置１１１ではウェブページ（１）を生成するが、その時のサーバ装置での処理の記録であるトレース９０１には、このトレースの識別子“ＩＤ（１）”が与えられる。サーバ装置１１１は、ウェブページ（１）のレスポンスをクライアント装置１０１に送信する前に、このウェブページへのリクエストを受信した際に取得した前のページの識別子と、今回このページを生成する際に記録されたトレースの識別子を、このウェブページの識別子としてレスポンスに挿入する。クライアント装置１０１では、ウェブページ（１）のレスポンスに含まれるモニタリング用コードにより、ウェブページ（１）でのクライアントの処理の記録７０１がクライアント装置１０１のローカルディスクに保存される。ウェブページ（１）でのクライアントの処理の記録７０１には、レスポンスに含まれる、1つ前のウェブページの識別子（ＩＤ）と、このウェブページの識別子（ＩＤ）が保存される。図９の例では、ウェブページ（１）の1つ前のウェブページはないので、識別子としても「なし」が保存される。一方、ウェブページ（１）生成時のトレース記録の識別子は“ＩＤ（１）”で、この識別子がレスポンスに挿入されているので、ウェブページ（１）の処理の記録７０１には、このウェブページの識別子（ＩＤ）として、“ＩＤ（１）”が保存される。
【００４９】
次にウェブページ（１）がウェブページ（２）をリクエストする場合について説明する。ウェブページ（１）では、ウェブページ（２）へのリクエストをサーバ装置１１１に送信する前に、ｃｏｏｋｉｅにウェブページ（１）の識別子（“ＩＤ（１）”）を設定する。サーバ装置１１１は、クライアント装置１０１からウェブページ（２）のリクエストを受信すると、まずｃｏｏｋｉｅからリクエスト発行元であるウェブページ（１）の識別子を取得する。図９の例では、“ＩＤ（１）”をｃｏｏｋｉｅから取得し、一時的に記憶する。続いてウェブページ（１）を生成するときと同様にして、トレース記録９０２を生成し、その識別子（ＩＤ）として“ＩＤ（２）”が与えられる。よって、ウェブページ（２）のレスポンスには、1つ前のページの識別子（ＩＤ）として“ＩＤ（１）”が、このページの識別子（ＩＤ）として“ＩＤ（２）”が挿入される。同様にウェブページ（２）がウェブページ（３）をリクエストする場合、ｃｏｏｋｉｅにウェブページ（２）の識別子（“ＩＤ（２）”）を設定し、サーバ装置１１１は、ウェブページ（３）のレスポンスに、1つ前のウェブページの識別子“ＩＤ（２）”と、ウェブページ（３）を生成する際のトレース記録９０３の識別子“ＩＤ（３）”を挿入してクライアント装置１０１にレスポンスを送信する。そして、ウェブページ（３）でのクライアントの処理の記録７０３には1つ前のウェブページの識別子（ＩＤ）として“ＩＤ（２）”が、このウェブページの識別子として“ＩＤ（３）”が保存される。以下同様にウェブページの識別子を処理の記録に保存していくことで、ウェブページのアクセスの履歴を順次たどることができる。また、各ウェブページでのクライアントの処理の記録には、そのウェブページの識別子として、サーバ装置１１１での処理の記録であるトレース記録の識別子が保存されているので、クライアント装置１０１とサーバ装置１１１の両方の処理の記録を順次たどることが可能である。
以上から、ウェブページでのクライアントの処理の記録の識別子として、サーバ装置での処理の記録であるトレースの識別子と一対一対応した値を利用し、これをクライアント装置の処理の記録と共に保存することで、クライアント装置の処理の記録と、サーバ装置の処理の記録を関連付けることができ、ウェブシステム全体での処理の記録を行える効果がある。さらに、クライアント装置での処理の記録に、処理の記録を行うウェブページのリクエスト元のウェブページの識別子も記録することで、ウェブページのアクセスの履歴を保存することができ、ウェブシステムでの一連の処理の記録を行える効果がある。
【００５０】
図１０は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧方法に関する説明図である。
【００５１】
クライアント装置１０１のローカルディスク１０４に保存された処理の記録から、ウェブページのアクセス履歴や、各ウェブページでのクライアントの処理の記録を閲覧するには、ローカルディスク１０４に保存された処理の記録を順次読み出す必要がある。先に述べたように、処理の記録は、ローカルディスク１０４上にあるウェブブラウザ用永続的データファイルに保存されており、その処理の記録を保存したウェブページと同じディレクトリにあるウェブページからのみ処理の記録を読み出せる。そのため、複数のディレクトにあるウェブページでのクライアントの処理の記録を順次読み出すには、それぞれのウェブページのディレクトリと同じディレクトリにある処理の記録を読み出すウェブページから処理の記録を読み出さなければならない。これを実現する処理記録閲覧ページ１００２について図１０を使って説明する。
【００５２】
クライアント装置１０１は、クライアントの処理の記録を閲覧するページ（以下、処理記録閲覧ページ１００２）をサーバ装置１１１にリクエストし、サーバ装置は処理記録閲覧ページ１００２の生成１００１を行ってクライアント装置１０１に返す。処理記録閲覧ページ１００２は、大きく分けて５つの部分で構成される。まず、モニタリング対象ディレクトリ情報１００８は、クライアントの処理の記録を保存したウェブページがあるディレクトリのリストである。このリストは、本発明によるモニタリング用スクリプトをレスポンスに挿入するウェブページがあるディレクトリのリストである。よって、モニタリング用スクリプトをレスポンスに挿入することになっているディレクトリであるが、実際にはアクセスされてなく、そのディレクトリにあるウェブページでのクライアントの処理の記録がローカルディスク１０４に保存されていないディレクトリが含まれていてもよい。
処理記録読み出し用スクリプト・ロード用スクリプト１００７は、モニタリング対象ディレクトリ情報１００８からクライアントの処理の記録を保存したウェブページがあるディレクトリのリストを取得し、そのリストにあるディレクトリ用の処理記録読み出し用スクリプト１００６をサーバ装置１１１にリクエストするスクリプトコードである。処理記録読み出し用スクリプト・ロード用スクリプト１００７は、処理記録読み出し用スクリプト１００６から、ディレクトリのリストにある別のディレクトリ用の処理記録読み出し用スクリプト１００６のサーバ装置１１１へのリクエストを要求されると、それに従って次のリクエストをサーバ装置１１１に送信する。
【００５３】
ディレクトリ用の処理記録読み出し用スクリプト１００６を生成するサーバ装置１１１での処理、処理記録読み出し用スクリプトの生成１００９では、モニタリング対象の各ディレクトリに、ディレクトリ用の処理記録読み出し用スクリプト１００６を含むウェブページを配置し、処理記録閲覧ページ１００２でそのウェブページを読み込む実現方法がある。別の実現方法としては、処理記録読み出し用スクリプト１００６をサーブレットとして実装し、スクリプトコードの実体としては１つであるが、モニタリング対象の各ディレクトリに、このサーブレットをサーバ装置１１１の設定によりマッピングする方法がある。
【００５４】
ディレクトリ用の処理記録読み出し用スクリプト１００６は、処理記録読み出し用スクリプト・ロード用スクリプト１００７がサーバ装置１１１にリクエストして処理記録閲覧ページ１００２の中のフレーム１００５に読み込まれるスクリプトコードである。フレーム１００５は、例えば＜ＩＦＲＡＭＥ＞タグを使って、処理記録閲覧ページ１００２の中に挿入されている。別の方法としては、処理記録閲覧ページ１００２の全体を＜ＦＲＡＭＥＳＥＴ＞タグでフレーム構成とし、フレーム１００５部分を＜ＦＲＡＭＥ＞タグを使って１つの子フレームとしてもよい。処理記録読み出し用スクリプト１００６は、ｃｏｏｋｉｅに設定されているウェブページの識別子や先に読み込んだクライアントの処理の記録に含まれる1つ前のウェブページの識別子をアクセスキーとしてローカルディスク１０４にアクセスし、そのアクセスキーに該当する処理の記録があれば、その処理の記録に保存されているデータを読み込む。該当する処理の記録がない場合には、処理記録読み出し用スクリプト・ロード用スクリプト１００７に対して、別のディレクトリの処理記録読み出し用スクリプト１００６をサーバ装置１１１にリクエストするように指示をする。
【００５５】
処理記録情報蓄積用スクリプト１００４は、処理記録読み出し用スクリプト１００６が読み出したクライアントの処理の記録を蓄積するスクリプトコードである。
【００５６】
処理記録情報整形・表示用スクリプト１００３は、処理記録情報蓄積用スクリプト１００４が蓄積したクライアントの処理の記録から、処理記録閲覧ページの使用目的にあわせて、情報を整形して、ウェブブラウザ上に表示する。
【００５７】
図１１は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧方法の処理フロー図である。クライアント装置とサーバ装置で２つの処理フローがある。それぞれ説明をする。
【００５８】
クライアント装置で、クライアントの処理の記録を閲覧するには、まず処理記録閲覧ページへのリクエストをサーバ装置に送信する（ステップ１１０２）。サーバ装置から処理記録閲覧ページのレスポンスを受信する（ステップ１１０３）と、最初にｃｏｏｋｉｅもしくはローカルディスクなどから、閲覧したいウェブページの識別子を取得する（ステップ１１０４）。これは閲覧する処理の記録の最初の記録を指定する意味がある。ｃｏｏｋｉｅには、クライアントの処理の記録をとっていた最新もしくは１つ前のウェブページの識別子が設定されている。またローカルディスクに保存されている処理の記録で、閲覧可能な記録のウェブページの識別子のリストをローカルディスクなどに保存しておき、その中から閲覧する処理の記録を指定する方法も考えられる。このステップで取得した識別子は、最初にローカルディスクからクライアントの処理の記録を読み出す際のアクセスキーとなる。次に、モニタリング対象ディレクトリ情報に登録されているディレクトリの最初の１つを指定する（ステップ１１０５）。そして、処理記録読み出し用スクリプト・ロード用スクリプトが、指定したディレクトリ用の処理記録読み出し用スクリプトをサーバ装置にリクエストする（ステップ１１０６）。サーバ装置から処理記録読み出し用スクリプトが、処理記録閲覧ページのフレームにロードされると、処理記録読み出し用スクリプトがステップ１１０４で読み込んだアクセスキーを使ってローカルディスクからクライアントの処理の記録の読み出しを試みる（ステップ１１０７）。該当する記録がない場合には、モニタリング対象ディレクトリ情報から次のディレクトリを指定（ステップ１１０９）してステップ１１０６に戻る。該当する記録があった場合は、処理記録情報蓄積用スクリプトが処理記録をメモリ上に蓄積する（ステップ１１１０）。さらに続けて処理の記録を読み出したい場合には、読み込んだ処理の記録から1つ前のウェブページの識別子を読み出す（ステップ１１１２）。この識別子が「なし」でなければ、１つ前のウェブページがあることを意味するので、この識別子を次に読み出したい処理の記録のアクセスキーとして設定（ステップ１１１４）しステップ１１０５に戻る。識別子が「なし」であったならば、最後に読み出した処理の記録が、ウェブページへのアクセス履歴の先頭であることになるので、処理記録情報整形・表示用スクリプトによりメモリ上に蓄積された処理の記録を整形してウェブブラウザ上に表示（ステップ１１１５）して終了する。なお、ステップ１１１１で、処理の記録の読み込みを終了した場合にも、次にステップ１１１５を実行して終了する。
【００５９】
なお、図１１には記載していないが、ステップ１１０９は、モニタリング対象ディレクトリ情報に登録されているディレクトリを順次指定していくが、すべてのディレクトリを指定した後にもステップ１１０９に処理がきた場合、該当記録がローカルディスクに存在しないことになるので、その場合にはステップ１１１５に処理を移す。
また、アクセスキーと共にディレクトリ情報も一緒に保存しておくことで、図１１のステップ１１０５、ステップ１１０８、ステップ１１０９を省略することもできるが、保存するデータ量の増加が問題となる可能性がある。
【００６０】
次に、ライアントの処理の記録を閲覧する際にサーバ装置で行われる処理のフローを説明する。
【００６１】
サーバ装置は、クライアント装置からリクエストを受信する（ステップ１１２１）と、処理記録閲覧ページへのリクエストかどうかを判定し（ステップ１１２２）、処理記録閲覧ページへのリクエストならば、それを生成してクライアント装置に送信する（ステップ１１２３）。処理記録閲覧ページへのリクエストでなく、処理記録読み出し用スクリプトへのリクエストであったならば、処理記録読み出し用スクリプトを生成しクライアント装置に送信する（ステップ１１２５）。それ以外のページへのリクエストならば、リクエストされたページを生成してクライアント装置に送信する（ステップ１１２６）。
【００６２】
図１２は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページの例である。
【００６３】
クライアントの処理の記録を表示する処理記録閲覧ページ１２０２を、クライアント装置１２０１の画面に表示した例である。処理記録閲覧ページには、クライアント装置がアクセスした順にウェブページのＵＲＬが表示され、さらに各ウェブページにアクセスした時刻、識別子（ＩＤ）を一覧表示（１２０３）する。また、各ウェブページでのクライアントの処理の記録の詳細を表示するためのボタンや、記録をサーバに送信するためのボタンや、記録を削除するためのボタンなども用意される。また、処理記録閲覧ページの制御部１２０４に、記録のファイルへの保存や、複数の記録の統計値の表示や、別の記録の読み込みや、閲覧の終了を行うボタンが用意される。このような処理記録閲覧ページにより、ウェブページへのアクセス履歴が確認できるだけでなく、識別子（ＩＤ）を使って、処理内容に問題があったウェブページのサーバ装置での処理の記録を参照することも可能となる。なお、図１２に示した表や数値、ボタンなどは、その一部だけでもよく、さらに別の配置や別の書式などでもよい。
【００６４】
図１３は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページに表示される情報の別の例である。
ここでは一覧表示部分１３０１だけを抜き出して示している。図１３では、クライアント装置がアクセスした順にウェブページのＵＲＬが表示され、さらに各ウェブページにアクセスした時刻、識別子（ＩＤ）を表示している点は図１２と変わらない。図１３では、各ウェブページについて、クリック回数、通信時間、描画時間、閲覧・操作時間を表示している点が図１２と異なる。
【００６５】
クリック回数は、ウェブブラウザでの処理を記録するスクリプトにおいて、ｃｌｉｃｋイベントの発生回数をカウントし、処理の記録に保存しておき、これを読み込めば表示できる。
【００６６】
通信時間は、ウェブページのａｃｔｉｖａｔｅイベントの発生時刻と、1つ前にアクセスしたウェブページのｂｅｆｏｒｅｕｎｌｏａｄイベントの発生時刻をそれぞれ処理の記録に保存しておき、これを読み込んで時刻の差分を取ることで表示できる。
描画時間は、ウェブページのａｃｔｉｖａｔｅイベントの発生時刻と、ｌｏａｄイベントの発生時刻を処理の記録に保存しておき、これを読み込んで両者の差分を取ることで表示できる。
【００６７】
閲覧・操作時間は、通信時間と描画時間以外の時間で、ウェブページのｌｏａｄイベントの発生時刻と、ｂｅｆｏｒｅｕｎｌｏａｄイベントの発生時刻を処理の記録に保存しておき、これを読み込んで両者の差分を取ることで表示できる。
このような一覧表示１３０１を行うことで、各ウェブページのレスポンス性能や使いやすさなどに問題があった場合に、問題の原因が、通信時間の増大、つまりネットワークやサーバ装置に問題あるのか、描画時間の増大、つまりクライアント装置に問題があるか、ウェブページのコンテンツに問題があるのか、閲覧・操作時間の増大、つまりウェブページのコンテンツが使いにくいもしくは、内容が豊富すぎることに問題があるのかなどの切り分けができる。
【００６８】
なお、図１３に示した表や数値などは、その一部だけでもよく、さらに別の配置や別の書式などでもよい。
【００６９】
図１４は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページに表示される情報のさらに別の例である。
【００７０】
図１２、図１３の例は、個々のウェブページへのアクセスについて表示をしていたが、図１４の例では、複数のクライアントの処理の記録から統計処理を行い、統計値を表示している。一覧表示１４０１では、アクセス回数の多いウェブページのＵＲＬが順に表示されている。アクセス回数は、複数のクライアントの処理の記録を読み込み、同一のＵＲＬのウェブページの数をカウントすることで求められる。また、それらの中で最古・最新の時刻を検索すれば、そのウェブページにアクセスしていた期間が分かる。さらに、図１３の説明で述べた方法により、それぞれの処理の記録から、通信時間、描画時間、閲覧・操作時間を求め、これの平均や最大値、最小値を求めて表示することも、ウェブページの利用状況や、問題のあるウェブページの抽出などに役に立つ。
なお、図１４に示した表や数値などは、その一部だけでもよく、さらに別の配置や別の書式などでもよい。
【００７１】
図１５は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の異常を通報する方法と処理の設定を変更する方法を含む処理の説明図である。
図１５の例では、図１０に示した処理記録閲覧ページの機能に加えて、処理異常検出用スクリプト１５０２と処理設定用スクリプト１５０３が加わっている。処理異常検出用スクリプト１５０２は、処理の異常を定義するルールを持ち、ローカルディスク１０４から読み出されたクライアントの処理の記録に対して、例えば通信時間が一定の閾値よりも大きい値になっている場合や、ウェブページのアクセス順に不正な順番がある場合などに、処理の異常を定義するルールに従って異常の発生を検出し、処理異常検出情報をサーバ装置１１１に送信する機能を持つ。サーバ装置１１１では、処理異常検出情報を受信し、これをサーバ装置１１１の表示装置に表示したり、ローカルディスクに保存したりする。処理異常検出用スクリプト１５０２では、サーバ装置１１１に処理異常検出情報を送信せずに、処理記録閲覧ページ１５０１の処理記録情報整形・表示用スクリプト１００３に対して、処理異常を検出した記録の表示を他の記録の表示とは別の色で行うなどの方法によって、異常の発生を表示することも含まれる。
処理設定用スクリプト１５０３は、例えば処理記録情報整形・表示用スクリプト１００３による処理の記録の整形や表示において、整形方法や表示方法を変更したり、処理異常検出用スクリプト１５０２に対して、処理の異常を定義するルールを変更したりする機能を持つ。処理設定用スクリプト１５０３は、一定時間ごともしくは、ローカルディスク１０４から読み込んだ処理の記録の内容が一定条件に当てはまったときにサーバ装置１１１に処理設定の変更の有無を問い合わせるリクエストを送信する。サーバ装置１１１は、処理設定変更指示情報の生成１５０５を行い、クライアント装置１０１に送信することで、処理記録閲覧ページの処理設定を定期的に更新することができる。別の方法としては、サーバ装置１１１の処理設定変更指示情報の生成１５０５により、必要に応じてクライアント装置１０１に対し処理設定の変更指示情報を送信する方法もある。この場合、サーバ装置１１１の都合により、任意の時間にクライアント装置１０１における処理記録閲覧ページの処理設定を変更することができる。
【００７２】
以上に述べたとおり、本実施例におけるサーバ装置は、クライアント装置のウェブブラウザが実行するための、処理の記録をローカルディスクに保存するスクリプトコードを、このクライアント装置からのリクエストのレスポンスであるウェブページに挿入する。さらにサーバ装置は、ウェブページに、そのリクエスト元の識別子、およびそのウェブページを生成する際のサーバ装置の処理を記録したトレースの識別子を挿入し、もってウェブアプリケーションの動作にかかわるクライアント装置、サーバ装置両者の処理記録を一連の処理の記録として解釈可能とする。その意味でサーバ装置はの処理記録装置としての機能も果たす。
【実施例２】
【００７３】
本発明によるウェブアプリケーションの処理記録方法の別の実施例を図１６から図１８を使って説明する。
【００７４】
図１６は、本発明が対象とするウェブシステムに関する別の基本的な構成を示すブロック図である。
【００７５】
ウェブシステムは大きく分けてクライアント装置１０１とサーバ装置１１１とその間を結ぶネットワーク１２１さらに、ネットワーク間を結ぶプロキシ装置１６０１から構成される。図１６ではクライアント装置１０１、サーバ装置１１１、プロキシ装置１６０２共に１台ずつ記載してあるが、それぞれ複数台で構成されても良い。
【００７６】
クライアント装置１０１では、オペレーティングシステム２０１上でウェブブラウザ２０２が実行される。ウェブブラウザ２０２には、ＨＴＭＬインタプリタ２０３、スクリプトインタプリタ２０４、レンダリングエンジン２０５、ユーザインタフェース２０６が含まれる。ＨＴＭＬインタプリタ２０３は、サーバ装置１１１から送信されてくるウェブページのレスポンスに含まれるＨＴＭＬ文書を解釈する。スクリプトインタプリタ２０４は、ウェブページのレスポンスに含まれるスクリプトコードを解釈して実行する。スクリプトコードの例としては、ＪＡＶＡＳＣＲＩＰＴが挙げられる。レンダリングエンジン２０５は、ＨＴＭＬインタプリタ２０３、スクリプトインタプリタ２０４の実行結果に基づいてウェブページの表示画面を作成する。
【００７７】
サーバ装置１１１では、オペレーティングシステム２０１上でウェブサーバ２０７とデータベースサーバ２１１が実行される。図１６では、１つのオペレーティングシステム２０１上でウェブサーバ２０７とデータベースサーバ２１１が実行されているが、オペレーティングシステム２０１が複数あり、それぞれ別のオペレーティングシステム２０１でサーバプログラムが実行されていても良い。また、一部のサーバが実行されていない、もしくは別の例えばアプリケーションサーバが実行されていても良く、ウェブサーバ２０７やデータベースサーバ２１１も１つに限らない。図１６では、簡単のためアプリケーションサーバを省略し、ウェブサーバに含まれるとした。
【００７８】
本実施例では、ウェブサーバ２０７上に、トレース記録２０８、サーブレットフィルタ２０９、ウェブアプリケーション２１０がある。サーブレットフィルタ２０９は、ウェブブラウザ２０２からネットワーク１２１およびプロキシ装置１６０１を介してウェブページのリクエストを受信し、設定されたフィルタ処理をリクエストに対して行い、ウェブアプリケーション２１０に渡す。また、ウェブアプリケーションから受けたウェブページのレスポンスに対して、設定されたフィルタ処理を行い、ネットワーク１２１およびプロキシ装置１６０１を介してウェブブラウザ２０２に返信する。図１６では簡単のために、省略したが、詳細にはネットワーク１２１とサーブレットフィルタ２０９の間にコンテナと呼ぶウェブブラウザとの通信を管理する機能モジュールが存在する。ウェブアプリケーション２１０は、リクエストされたウェブページの生成を行う。ウェブアプリケーション２１０は、サーブレットやＪＳＰ、ＥＪＢ（登録商標）などのプログラムで構成される。図１６では簡単のために、ウェブアプリケーション２１０を実行する個々のエンジンは省略し、単にウェブアプリケーション２１０と記載した。ウェブアプリケーション２１０は必要に応じてデータベースサーバ２１１と通信をして必要なデータの授受を行う。トレース記録２０８は、ウェブサーバ２０７での処理の記録を行う。処理の記録としては、ネットワーク１２１からリクエストを受けた時刻や、ウェブアプリケーション２１０で実行された処理の内容、データベースサーバ２１１との通信時に割り当てた識別子や、データベースサーバ２１１との通信内容、ウェブアプリケーションの終了コード、サーブレットフィルタ２０９からネットワーク１２１にレスポンスが送信された時刻などが例として挙げられる。データベースサーバ２１１は、データベースを保有し、ウェブアプリケーション２１０からの検索や更新の要求に応じてデータベースからデータを返したり、データベースの内容を書き換えたりする。
プロキシ装置１６０１は、ネットワーク１２１間の接続機能を持つ装置である。通常は、インターネットとイントラネットの間を接続するのに利用されるが、本実施例ではこれによらず、インターネット間やイントラネット間の接続などでもよい。プロキシ装置１６０１は、サーバ装置１１１上のウェブサーバ２０７で動作しているトレース記録２０８から、トレースの識別子を受信することができる。図１６では、トレース記録２０８からプロキシ装置１６０１に対して専用の通信路が用意されているが、ネットワーク１２１を介してトレースの識別子を受信する方法でもよい。
【００７９】
図１７と図１８は、本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う別の方法を示したシーケンス図と処理フロー図である。
まず、ウェブブラウザでウェブページへのリクエストを生成する際に、リクエストを生成するウェブページに含まれるスクリプトコードにより、サーバ装置との間で少量のデータのやり取りを可能とするｃｏｏｋｉｅに、リクエストを生成したウェブページの識別子（図中ではＩＤ）を設定する（ステップ５０２）。この識別子は、後述するサーバ装置での処理の記録であるトレースの識別子もしくは、それと一対一対応する値である。ウェブブラウザにウェブページが表示されておらず、リクエスト先のウェブページのＵＲＬを直接入力してリクエストを生成した場合は、ｃｏｏｋｉｅには値が設定されない。また、リクエスト元のウェブページが本発明によるクライアントの処理の記録を行うウェブページでな  い場合や、図１７で説明するクライアントの処理の記録を行うためのスクリプトコードをプロキシ装置においてレスポンスに挿入する機能が稼動する前にクライアント装置に送信されたウェブページである場合には、ｃｏｏｋｉｅには値が設定されない。その後リクエストを、ネットワークを介してプロキシ装置に送信する（ステップ１８０２）。
プロキシ装置では、クライアント装置からリクエストを受信する（ステップ１８２１）と、クライアント装置より送信されたリクエストのｃｏｏｋｉｅからリクエスト発行元のウェブページの識別子を読み出し、一時的にメモリ上に記録する（ステップ１８２２）。続いてサーバ装置にリクエストを送信する（ステップ１８２３）。サーバ装置で実行されているウェブアプリケーションでは、プロキシ装置からネットワークを介してウェブページへのリクエストを受信すると、必要に応じてデータベースサーバとの通信を行いリクエストされたウェブページのレスポンスを生成し、プロキシ装置に送信する。プロキシ装置は、ネットワークを介してサーバ装置からのレスポンスを受信する（ステップ１８２４）。サーバ装置では、サーバ装置での処理の記録をトレースとして記録し、このトレースに識別子を付加している。トレースの識別子は、ウェブページのリクエスト毎に異なるユニークな値である。プロキシ装置は、トレース記録からこのレスポンスを生成した際のサーバの処理の記録であるトレースの識別子を取得する（ステップ１８２５）。そして、レスポンスにクライアント装置で処理の記録を行うモニタリング用スクリプトコードと、一時的にメモリ上に記録していたリクエスト発行元のウェブページの識別子と、このレスポンスを生成した際のサーバの処理の記録であるトレースの識別子もしくはその識別子と一対一対応する値をリクエストされたウェブページの識別子として挿入する（ステップ１８２６）。
【００８０】
モニタリング用スクリプトコードは、例えばＪＡＶＡＳＣＲＩＰＴで記述したプログラムコードで、レスポンスのＨＴＭＬに、＜ＳＣＲＩＰＴ＞タグを利用して挿入する。モニタリング用スクリプトコードは、ウェブブラウザがサーバ装置からレスポンスを受け取った際や、レスポンスのウェブブラウザ上への描画が終了した際や、マウスやキーボード操作、次のウェブページへのリクエストを送信した際などに発生させるイベントを記録する機能を持ち、イベントの発生時刻や、ウェブページの識別子などと共にクライアント装置のローカルディスクへ処理の記録を保存する機能も含まれる。また、ウェブページの識別子をレスポンスに挿入する方法としては、モニタリング用スクリプトコード中に、変数の値として設定する方法が例として挙げられる。
【００８１】
次に、クライアント装置にレスポンスを送信する（ステップ１８２７）。クライアント装置では、プロキシ装置からネットワークを介してレスポンスを受信する（ステップ１８０３）と、ＨＴＭＬインタプリタがレスポンスを解釈し（ステップ３０５）、スクリプトインタプリタがスクリプトを解釈して処理を実行して（ステップ３０７）、レンダリングエンジンが処理結果を表示する（ステップ３０８）。さらに、スクリプトインタプリタは、プロキシ装置でレスポンスに挿入されたモニタリング用スクリプトを解釈して実行する（ステップ５０３）。ステップ５０３は、ウェブブラウザでの処理の記録（ステップ５０４）と、処理の記録をローカルディスクに保存（ステップ５０５）の２つの処理が含まれる。ステップ５０３とステップ３０７、ステップ３０８については、レスポンスのＨＴＭＬ中でスクリプトコードが記述されている場所や、ウェブブラウザでの処理の実行タイミングやイベントの発生タイミングにより、ステップ５０３とステップ３０７、ステップ３０８が同時並行的に処理されることもある。
最後に、次のウェブページへのリクエストをプロキシ装置に送信する必要があれば、ステップ５０２に戻る。次のウェブページへのリクエストがなくウェブブラウザを終了するならばステップ１８０４になる。
【００８２】
実施例２において、クライアント装置での処理の記録方法、ローカルディスクへの保存方法、識別子の付け方、処理の記録の閲覧・表示方法については、実施例１と同様である。
【００８３】
以上のとおり、実施例２では、サーバ装置からのレスポンスであるウェブページに、クライアント装置が実行するための、処理の記録をローカルディスクに保存するスクリプトコードを挿入し、またウェブページのリクエスト元の識別子、ウェブページのサーバの処理を記録したトレースの識別子を挿入するのはプロキシ装置が行なう。したがって、本実施例におけるプロキシ装置は処理記録装置と言える。
【産業上の利用可能性】
【００８４】
本発明により、クライアント装置へのツールのインストールや、サーバ装置のウェブアプリケーションの改変が不要で、サーバ装置の設定の変更など、簡便な方法でクライアント装置での処理の記録を実行できるので、問題発生時にウェブシステム全体での原因究明が容易化される。特に、サーバ装置での処理の記録であるトレースの識別子と一対一対応した値を、クライアント装置での処理の記録と共に保存することで、クライアント装置で発生した問題が、サーバ装置のどの処理に関連しているかを容易に確認できるため、ウェブシステムの高可用運用を実現する基盤技術となる。また、本発明では、処理の記録をクライアント装置のローカルディスクに保存する方法により、クライアント数が増大したときにも、サーバ装置やネットワークに負荷をかけずに処理の記録を行える。これにより大規模なシステムの運用管理にも適用可能である。
【図面の簡単な説明】
【００８５】
【図１】本発明が対象とするウェブシステムに関する基本的な構成を示すブロック図である。
【図２】本発明が対象とするウェブシステム上で動作するソフトウェアに関する基本的な構成を示すブロック図である。
【図３】本発明が対象とするウェブシステム上でウェブアプリケーションが動作する際の基本的な処理フロー図である。
【図４】本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う方法を示したシーケンス図である。
【図５】本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う方法を示した処理フロー図である。
【図６】本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が処理の記録を保存するローカルディスクの構成図である。
【図７】本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が処理の記録を保存するウェブブラウザ用永続的データファイルの制約に関する説明図である。
【図８】本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が保存する処理の記録の内容に関する説明図である。
【図９】本発明によるウェブアプリケーションの処理記録方法における、ウェブページの識別子に関する説明図である。
【図１０】本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧方法に関する説明図である。
【図１１】本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧方法の処理フロー図である。
【図１２】本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページの例である。
【図１３】本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページに表示される情報の別の例である。
【図１４】本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページに表示される情報のさらに別の例である。
【図１５】本発明によるウェブアプリケーションの処理記録方法における、処理記録の異常を通報する方法と処理の設定を変更する方法を含む処理の説明図である。
【図１６】本発明が対象とするウェブシステムに関する別の基本的な構成を示すブロック図である。
【図１７】本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う別の方法方法を示したシーケンス図である。
【図１８】本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う別の方法を示した処理フロー図である。
【符号の説明】
【００８６】
１０１ クライアント装置
１０２、１１２ ＣＰＵ
１０３、１１３ メモリ
１０４、１１４ ローカルディスク
１０５、１１５ バス
１０６、１１６ 外部インタフェース
１０７、１１７ 表示装置
１０８、１１８ 入力装置
１０９、１１９ ネットワークインタフェース
１１１ サーバ装置
１２１ ネットワーク
２０１ オペレーティングシステム
２０２ ウェブブラウザ
２０３ ＨＴＭＬインタプリタ
２０４ スクリプトインタプリタ
２０５ レンダリングエンジン
２０６ ユーザインタフェース
２０７ ウェブサーバ
２０８ トレース記録
２０９ サーブレットフィルタ
２１０ ウェブアプリケーション
２１１ データベースサーバ
６０１ ウェブブラウザ用永続的データファイル
６０２ ウェブブラウザ用ページキャッシュファイル
６０３ 通常ファイル
６０４ システムファイル
１６０１ プロキシ装置。
【図１】
0004906672.tif 000002
【図２】
0004906672.tif 000003
【図３】
0004906672.tif 000004
【図４】
0004906672.tif 000005
【図５】
0004906672.tif 000006
【図６】
0004906672.tif 000007
【図７】
0004906672.tif 000008
【図８】
0004906672.tif 000009
【図９】
0004906672.tif 000010
【図１０】
0004906672.tif 000011
【図１１】
0004906672.tif 000012
【図１３】
0004906672.tif 000013
【図１４】
0004906672.tif 000014
【図１５】
0004906672.tif 000015
【図１６】
0004906672.tif 000016
【図１７】
0004906672.tif 000017
【図１８】
0004906672.tif 000018
【図１２】
0004906672.tif 000019