リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出し、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入する、ことを特徴とするアプリケーションコードの変換方法。前記アプリケーションコードの実行履歴から前記リクエスト毎の前記メソッドの呼び出しの一連のシーケンスを分類したメソッド呼び出しシーケンスを取得し、前記各メソッド呼び出しシーケンス同士で呼び出し回数毎のメソッド呼び出しを比較し、前記各メソッド呼び出しシーケンスの先頭のメソッドの呼び出しから順に、共通なメソッドの呼び出しをノードとしてまとめ、その後、共通でないメソッドの呼び出しをノードにし、木構造データである処理種別分化木を作成し、前記処理種別分化木を構成する各ノードのうち分岐したノードを前記アプリケーションコードの処理種別を確定する重要呼び出しとしてマークした後、前記マークした各重要呼び出しから前記処理種別分化木に沿って開始ノード方向に向かって前記各ノードをトラバースし、前記重要呼び出しと同じメソッドのノードと前記開始ノードについても重要呼び出しとしてさらにマークし、前記アプリケーションコードに前記コードを挿入することにより前記重要呼び出しに基づいて前記処理種別の判断を行う、ことを特徴とする請求項1に記載のコード変換方法。現在のメソッド呼び出し回数を判別するコードを前記アプリケーションコードに挿入する、ことを特徴とする請求項1または2記載のコード変換方法。リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出し、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入し、実行中のスレッドの処理の残り時間の問い合わせ要求を受け付け、現在のメソッド呼び出し回数を判別するコードを自動生成して前記アプリケーションプログラムに埋め込み、前記識別情報毎に前記メソッド呼び出し回数と前記メソッドの残時間との関係を見積もった結果に基づいて、処理の残り時間を取得し前記問い合わせ要求に応答する、ことを特徴とするリクエストの残り時間応答方法。前記リクエスト毎に実行履歴を取得し、前記残時間として前記リクエスト毎にメソッド開始からそのメソッドを含むスレッドの完了するまでの時間を求め、前記呼び出し順序パターンに対応したメソッド呼び出しシーケンスの出現回数をカウントし、前記残時間の平均時間を求め、前記メソッド呼び出しシーケンスに基づいて処理種別分化木を作成し、前記処理種別分化木において処理種別を確定するメソッド呼び出しを重要呼び出しとしてマークしたのち、メソッド呼び出しシーケンスを呼び出し元方向にトラバースし同じメソッドについても重要呼び出しとし、前記処理種別分化木の重要呼び出しに前記識別情報に対応するモデル番号を付し、前記平均時間をモデル表へ登録し、前記処理種別分化木に基づいて前記メソッド毎にモデル番号遷移表を作成し、前記モデル番号遷移表に基づいて前記コードとして処理種別判別コードを前記アプリケーションコードに挿入し、メソッド呼び出し回数をカウントするコードを前記アプリケーションコードに挿入し、前記処理種別と、前記メソッド呼び出し回数とに基づいて前記モデル表の前記平均時間から各処理種別毎の残時間を求める、ことを特徴とする請求項4記載のリクエストの残り時間応答方法。前記アプリケーションプログラムに、前記メソッドの実行開始時刻と実行終了時刻を更新して記録するコードを自動生成して埋め込む、ことを特徴とする請求項4または5のいずれかに記載のリクエストの残り時間応答方法。リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出する検出手段と、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入するコード挿入手段と、を具備することを特徴とするコード変換装置。コンピュータに、リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出し、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入する処理を実行させることを特徴とするコード変換プログラム。しかし、上記従来技術では、Webサービス毎に、リクエスト種別に対応するURLユニフォームリソースロケータ:統一資源位置指定子の文字列や、呼び出しシーケンスなどの事前知識が必要になり、新規システムへの対応に時間がかかるという問題点を有していた。近年のWebサービスは、複雑化しており処理種別が多くなっているため、処理種別を事前に知ることは、困難になりつつある。そこで、1つの側面では、本発明は、処理種別を自動的に判別できるようにすることを目的とする。他の側面では、本発明は、この処理種別の自動判別に基づいて、仕掛の処理の残り時間を正しく認識可能とすることを目的とする。態様の一例では、リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出し、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入する。1態様では、処理種別を自動的に判別することが可能となる。。また、1態様では、この処理種別の自動判別に基づいて、仕掛の処理の残り時間を正しく認識することが可能となる。以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図1は、残り時間問い合わせシーケンスの利用シーンの例の説明図である。例えばユーザが操作するクライアントコンピュータ101が、http://aaa.bbb.ccc/loginというURLをアクセスアドレスとして指定して、システムにログインする。その結果、サーバコンピュータ102からクライアントコンピュータ101に、CookieID=reqid12345として例示されるパラメータにより、リクエストIDreqid12345が返される。サーバコンピュータ102では、Webサーバのシステムが稼働している。そして、Webサーバは、クライアントコンピュータ101からリクエストを受信すると、サーバコンピュータ102と同一の異なってもよいアプリケーションサーバコンピュータ上で稼働するアプリケーションプログラムに受信したリクエストを発行する。この結果、アプリケーションサーバコンピュータ上では、上記リクエストIDreqid12345に対応してスレッドが確保され、そのスレッド上でアプリケーションプログラムの一連のメソッドのシーケンスが実行される。アプリケーションプログラムは、例えば上記サーバコンピュータ102やアプリケーションサーバコンピュータと同一または異なるデータベースサーバコンピュータ上のデータベースにアクセスする。このような処理においては、データベースに対する操作において多くの処理時間が必要となるような場合がある。図1において、クライアントコンピュータ101から例えばhttp://aaa.bbb.ccc/heavytaskCookieID=reqid12345というような時間がかかる処理がリクエストされた場合を考える。この場合、アプリケーションサーバコンピュータ上で該当するアプリケーションプログラムを実行するスレッドでは、処理に多くの時間を要し、クライアントコンピュータ101になかなか応答を返すことができない。クライアントコンピュータ101を操作するユーザは、なかなか応答が返ってこないため、システムがフリーズしたと思ってしまったり、途中で諦めて操作を中止してしまったりする可能性がある。このような状況は、ユーザに対して、サービス性の低下を招く結果となる。そこで、クライアントコンピュータ101から例えば、http://aaa.bbb.ccc/inquirestatusCookieID=reqid12345というような残り時間を問い合わせるリクエストを発行できたとする。これを受けて、サーバコンピュータ102がリクエストIDreqid12345に対応するスレッドの処理の残り時間を算出し、例えばあと10秒で終わりますというような応答をクライアントコンピュータ101に返すことができる。これにより、クライアントコンピュータ101を操作するユーザは、現在のリクエストの処理状況を適切に把握することができるようになり、操作を諦めてしまうというような事態を避けることができるようになり、サービス性が向上する。以下に説明する各実施形態は、このような処理の残り時間の問い合せサービスを提供することができるシステムである。以下の説明では、説明の便宜上、アプリケーションサーバのシステムは、図1のサーバコンピュータ102上で動作しているものとして説明するが、別のサーバコンピュータ上で動作する場合であっても実行場所が違うだけで、同様に実施できる。図2は、第1の実施形態のシステム構成図であり、図1のサーバコンピュータ102上で動作する。このシステムは、特には図示しないWebサーバのシステムが図1のクライアントコンピュータ101から受信したリクエストに基づいて、アプリケーションプログラムを実行するアプリケーションサーバのシステムである。発明が解決しようとする課題において前述したように、従来技術では、リクエストの処理種別を事前に知る必要があった。これに対して、第1の実施形態のシステムは、実行履歴の解析によって、自動的に処理種別を判断するプログラムコードをアプリケーションプログラムに挿入することができる技術である。図2において、Webアプリコード201は、クライアントコンピュータ101からのリクエストに基づいてWebサービスを提供するアプリケーションプログラムであり、特には図示しないデータベースシステムなどにアクセスして処理を実行する。Webアプリコード201は、例えばJavaプログラミング言語により記述されるアプリケーションプログラムである。ここで、Javaは、OracleCorporation及びその子会社、関連会社の米国及びその他の国における登録商標である。Webアプリコード201は、図1のサーバコンピュータ102内のハードディスク記憶装置などの外部記憶装置に記憶される。そして、実行時に、サーバコンピュータ102内のCPU中央演算処理装置によって、外部記憶装置からメモリ主記憶装置にロードされて実行される。この際、CPUによって、リクエストが受け付けられたときには、そのリクエストIDに対応するスレッドが使用するメモリ領域が、メモリ上で確保される。実行履歴取得コード変換部202は、Webアプリコード201の実行時に、そのコードに含まれる各メソッドの実行開始時刻と実行終了時刻を実行履歴204として記録できるようにするためのプログラムコードを、Webアプリコード201に埋め込む。この結果、Webアプリコード201は、実行履歴取得Webアプリコード203に変換される。そして、Webアプリコード201の代わりに実行履歴取得Webアプリコード203が実行される毎に、実行履歴204が記録されてゆく。実行履歴取得コード変換部202の処理は、サーバコンピュータ102図1の内のCPUが、外部記憶装置からメモリにロードされた制御プログラムを実行する処理である。以上の実行履歴204を記録する機能は、Webベースのアプリケーションプログラムのために、通常的に実装される処理である。履歴解析部205は、リクエスト毎のメソッドの呼び出しの実行履歴204から、メソッドが含まれる処理種別を判別して、処理種別に含まれるメソッドの呼び出し回数以下、この呼び出し回数をメソッド呼び出し回数と呼ぶと処理の残り時間との関係を見積もる。すなわち、履歴解析部205は、実行履歴204から、リクエスト毎のメソッドの呼び出しの一連の呼び出し順序パターンを含むシーケンスを分類したメソッド呼び出しシーケンスを取得する。そして、履歴解析部205は、メソッド呼び出しシーケンス上で実行される各メソッドの呼び出しからメソッド呼び出しシーケンスの完了までの時間の平均値を計算し、その結果を、後述するメソッドシーケンス表に書き込む。なお、メソッドシーケンスが1回の場合は、各メソッド呼び出しから、シーケンス完了までの時間をメソッドシーケンス表に書き込む。このメソッドシーケンス表のデータ構造は、サーバコンピュータ102図1内の特には図示しないメモリ上に記憶される。次に、履歴解析部205がプログラムから分化木を作成する。プログラムの各メソッドをノード節点に対応させ、各メソッドからメソッドへの遷移を枝に対応してできるグラフ木を分化木とする。分化木上の始点から終点までの一つのパスがプログラムのメソッドシーケンスに対応する。履歴解析部205は、各メソッド呼び出しシーケンス同士で呼び出し回数毎のメソッド呼び出しを比較し、各メソッド呼び出しシーケンスの先頭のメソッドの呼び出しから順に、共通なメソッドの呼び出しをノードとしてまとめる。その後、履歴解析部205は、共通でないメソッドの呼び出しもノードにし、木構造データである後述する処理種別分化木を作成する。この処理種別分化木のデータ構造は、サーバコンピュータ102図1内の特には図示しないメモリ上に記憶される。次に、履歴解析部205は、処理種別分化木を構成する各ノードのうち分岐したノードを処理種別を確定する重要呼び出しとしてマークする。その後、履歴解析部205は、マークした各重要呼び出しから処理種別分化木に沿って開始ノード方向に向かって各ノードをトラバースする。そして、重要呼び出しと同じメソッドの呼び出しと開始ノードのメソッドの呼び出しについても重要呼び出しとしてさらにマークする。次に、履歴解析部205は、すべての重要呼び出しのメソッドにメソッド名とは異なるユニークなそれぞれ個別のモデル番号を識別情報のひとつとして定義して処理種別に対応させる。さらに履歴解析部205は、メソッドシーケンス表に得られたメソッド呼び出しシーケンス毎およびメソッド呼び出し回数毎の残り時間の平均時間に基づいて、モデル番号毎にメソッド呼び出し回数と処理の残り時間との関係を計算する。これにより、処理種別に含まれるメソッドのメソッド呼び出し回数と処理の残り時間との関係を見積もる。この見積もりの結果は、上記各モデル番号が各行、各メソッド呼び出し回数が各列に配置されたモデル表206に書き込まれる。このモデル表206のデータ構造は、サーバコンピュータ102図1内の特には図示しないメモリ上に記憶される。また、履歴解析部205は、上述のモデル番号間の遷移関係を取得し、その遷移関係をモデル番号遷移表207に書き込む。モデル番号遷移表207のデータ構造は、サーバコンピュータ102図1内の特には図示しないメモリ上に記憶される。このように、履歴解析部205により、リクエスト毎のメソッドの呼び出しの実行履歴204から、メソッドが含まれる処理種別を判別して、メソッドの実行段階と処理種別との遷移関係を取得することができる。具体的には、実行履歴204から取得したメソッド呼び出しシーケンス同士の比較で処理種別分化木を作成し、そこで定義される重要呼び出しとしてモデル番号を定義し、モデル番号間の遷移関係をメソッドの実行段階と処理種別との遷移関係として取得できる。第1の実施形態では、このようにメソッドの実行段階と処理種別、具体的にはモデル番号との遷移関係が取得できることで、メソッドの実行段階が判別できれば、処理種別の自動判別が可能となる。さらに、第1の実施形態では、履歴解析部205により、処理種別毎、具体的にはモデル番号毎に、そのモデル番号に対応する処理種別に含まれる各メソッドのメソッド呼び出し回数と処理の残り時間との関係を見積もることができる。これにより、処理種別を自動判別した結果から、さらにメソッド呼び出し回数を取得することにより、現在の処理の残り時間を取得することが可能となる。以上の履歴解析部205の処理は、サーバコンピュータ102図1の内のCPUが、外部記憶装置からメモリにロードされた制御プログラムを実行する処理である。処理種別動的判断コード挿入部208は、リクエストに基づいて実行が開始されるスレッドに対して現在のモデル番号を含む情報を記録する変数領域であるスレッドローカル変数領域をメモリ上に確保するプログラムコードを自動生成する。また、処理種別動的判断コード挿入部208は、スレッドローカル変数領域の記録内容を参照および更新しながら実行中のスレッドにおける現在の処理種別を判別するプログラムコードを自動生成する。そして、処理種別動的判断コード挿入部208は、これらの自動生成したプログラムコードを、アプリケーションプログラムであるWebアプリコード201に埋め込む。より具体的には、処理種別動的判断コード挿入部208は、Webアプリコード201中のリクエスト時に最初に実行されるメソッドのプログラムコードに、次のようなプログラムコードを自動生成して埋め込む。このプログラムコードは、現在のMODELIDと現在のメソッド呼び出し回数を含む情報を記録するスレッドローカル変数領域を確保する。また、処理種別動的判断コード挿入部208は、Webアプリコード201中の各モデル番号に対応する各メソッドのプログラムコードに、次のようなプログラムコードを自動生成して埋め込む。このプログラムコードは、モデル番号遷移表207に登録されているモデル番号間の遷移関係に基づいて、スレッドローカル変数領域に現在の処理種別として記憶されている現在のモデル番号に対して次に遷移するモデル番号を決定する。そして、このプログラムコードは、スレッドローカル変数領域のMODELIDの変数値に対応するモデル番号を、上述の決定したモデル番号に更新する。このようにして、処理種別動的判断コード挿入部208によって、Webアプリコード201に自動生成されたプログラムコードが埋め込まれ、その結果が、処理種別を動的に判断するWebアプリコード209として出力される。以上のように、処理種別動的判断コード挿入部208により生成された処理種別を動的に判断するWebアプリコード209が実行されることにより、次のような処理が実現される。まず、実行されるスレッド毎にスレッドローカル変数領域が確保されることにより、スレッドの実行状況に応じて、現在のモデル番号を保持することができるようになる。さらに、スレッド上でのメソッドの実行中に、スレッドローカル変数領域中のモデル番号と、履歴解析部205が取得したメソッドの実行段階とモデル番号との遷移関係とから、現在のメソッドの実行段階に対応するモデル番号の遷移を判別することが可能となる。そして、スレッドローカル変数領域中のモデル番号を、上記新たに判別されたモデル番号で更新することができる。このようにして、第1の実施形態では、スレッド上でのメソッドの実行中に、その実行段階に応じた処理種別を動的に判別することが可能となる。以上の処理種別動的判断コード挿入部208の機能は、サーバコンピュータ102図1の内のCPUが、外部記憶装置からメモリにロードされた制御プログラムを実行する処理である。以下に、上述の構成を有する第1の実施形態の動作についてより具体的に説明する。図3は、第1の実施形態において、処理種別動的判断コード挿入部208によって、スレッド毎にメモリ上に確保されるスレッドローカル変数領域のデータ構成例を示す図である。スレッドローカル変数領域は例えば、スレッドローカル変数管理テーブル301と、スレッドローカル変数テーブル302とを備える。スレッドローカル変数管理テーブル301には、システム上に存在するテーブルであり、リクエストIDとスレッドローカル変数テーブル302への参照ポインタ参照アドレス値のデータ組が、各スレッドに対応して記憶される。図3の例では、リクエストIDメソッド呼び出し項目にリクエストID値1とリクエストID値2が登録されていることが示されている。参照ポインタはスレッドローカル変数テーブルへの参照項目に登録される。前述したように、スレッドローカル変数領域は、スレッド毎に確保される。そして、各スレッドは、各リクエストIDに1対1に対応している。従って、あるリクエストID値が受信されたときに、そのリクエストID値によってスレッドローカル変数管理テーブル301を参照することにより、そのリクエストIDに対応するスレッドのスレッドローカル変数領域であるスレッドローカル変数テーブル302の記憶アドレスを知ることができる。このスレッドローカル変数テーブル302は、処理種別動的判断コード挿入部208によって、各リクエストIDに対応するスレッドの開始時にメモリ上に確保される。スレッドローカル変数テーブル302には、スレッドにおいて、残り時間を算出するために必要なスレッドローカル変数群が記憶される。スレッドローカル変数群としては例えば、MODELID、NCALL、ENDTIME、METHODHISTORYの4変数が記憶される。各スレッドローカル変数は、変数インデックスによって参照される。MODELID値の参照時には変数インデックス値1が、NCALL値の参照時には変数インデックス値2が、ENDTIME値の参照時には変数インデックス値3が、METHODHISTORY配列値の参照時には変数インデックス値4が各々指定される。なお、残り時間の算出という処理を実現するものであれば、スレッドローカル変数群はこれらの変数群には限定されない。スレッドローカル変数テーブル302において、変数MODELIDは、スレッドの現在のモデル番号を保持する。また、変数NCALLは、スレッドにおける現在までの延べのメソッド呼び出し回数を保持する。ENDTIME値とMETHOD_HISTORY配列値については、第4の実施形態の説明において後述する。本特許出願の発明者は、以下に説明するように、現在実行中のスレッドで、モデル番号と、現在のメソッド呼び出し回数がわかれば、スレッドが完了するまでの処理の残り時間を平均値として見積もれることを見出した。まず、図2に示されるWebアプリコード201は、メソッドと呼ばれるプログラムコードを単位として呼び出される。いま、あるリクエストIDに対して確保されるスレッド上で、一連の複数のメソッドが呼び出されて実行されるとき、その一連のメソッド群のことを、メソッド呼び出しシーケンスと呼ぶ。メソッド呼び出しシーケンスの種類は、図2の実行履歴204から、リクエストID毎に実行されるメソッド群のシーケンスを判別することにより抽出し分類することができる。実行履歴204上では、ある1つの種類のメソッド呼び出しシーケンスを有するメソッドの呼び出し履歴は、複数組が存在する可能性がある。ここで、そのメソッド呼び出しシーケンスに含まれるノード数をN個とする。この場合、そのメソッド呼び出しシーケンス上で第n1≦n≦N番目に呼び出されるメソッドの、実行開始からそのシーケンスの終了までの時間これを第n番目のメソッドに関する残り時間と定義するは、次のようにして算出できる。実行履歴204から、上記ある1つの種類のメソッド呼び出しシーケンスに対する複数組の履歴のそれぞれで、第n番目のメソッドの実行開始からその履歴上のシーケンスの終了までの残り時間を計算し、複数組の履歴間でその残り時間の平均値を計算する。この計算を、第1番目から第N番目までの全てのノードについて実行する。この結果、上記ある1種類のメソッド呼び出しシーケンス上で第1番目から第N番目までに呼び出される各ノードについて、残り時間の平均値を見積もることができる。さらに、実行履歴204に基づいて分類できるメソッド呼び出しシーケンスの各種類について、各シーケンス上で順次呼び出される各ノードについて、残り時間の平均値を見積もることができる。図2の履歴解析部205は、上述のメソッド呼び出しシーケンス毎およびメソッド呼び出し回数毎の残り時間の平均値の計算を実行し、その計算結果をサーバコンピュータ102図1のメモリ上に記憶領域を確保したメソッドシーケンス表401に書き込む。図4は、第1の実施形態において、履歴解析部205によって作成されるメソッドシーケンス表401の作成処理とデータ構成例を示す図である。図2の実行履歴204の解析結果から、メソッド図中methodと表記A-B-B-C-Dという順で実行されるメソッド呼び出しシーケンスの履歴と、シーケンス内の各メソッドに対応する残り時間が、4021として得られたとする。同様に、メソッドA-B-Eという順で実行されるメソッド呼び出しシーケンスの履歴と、シーケンス内の各メソッドに対応する残り時間が、4022として得られたとする。これらのデータより、図4のメソッドシーケンス表401の1行目に、メソッドシーケンスA-B-B-C-Dと、出現回数=1回が登録される。また、第1回目のメソッド呼び出しの残り時間として、解析結果4021のmethodAの残り時間=10秒が登録される。第2回の各残り時間として、4021のmethodBの残り時間=4秒が登録される。第3回の各残り時間として、4021のmethodBの残り時間=3秒が登録される。第4回の各残り時間として、4021のmethodCの残り時間=2秒が登録される。第5回の各残り時間として、4021のmethodDの残り時間=1秒が登録される。次に、メソッドシーケンス表401の2行目に、メソッドシーケンスA-B-Eと、出現回数=1回が登録される。また、第1回目のメソッド呼び出しの残り時間として、解析結果4022のmethodAの残り時間=7秒が登録される。第2回の各残り時間として、4022のmethodBの残り時間=5秒が登録される。第3回の各残り時間として、4022のmethodEの残り時間=1秒が登録される。第4回と第5回の各残り時間は存在しないので、未登録である。ここで、実行履歴204から、同じメソッド呼び出しシーケンスが複数組解析された場合には、メソッドシーケンス表401の該当する行の出現回数の項目に解析された回数が登録される。そして、各回のメソッド呼び出しの残り時間の項目には、複数組の各残り時間の平均値が計算されて登録される。上述のように、理想的には、現在実行中のスレッドにおけるメソッド呼び出しシーケンスと現在のメソッド呼び出し回数がわかれば、メソッドシーケンス表401から、現在のメソッドに関する残り時間を算出することができる。しかし、各メソッドは独立に呼び出して実行させることが可能である。このため、あるリクエストIDによってあるメソッドが実行されている時点では、そのリクエストIDにより最終的にスレッド全体として、どの種類のメソッド呼び出しシーケンスが実行されるかは確定できず、シーケンスが枝別れする可能性がある。しかしながら、あるメソッドが、スレッドの開始から延べで何回目に呼び出されたメソッドであるかがわかれば、そのメソッドの実行後に何通りのメソッド呼び出しシーケンスが実行されるかは、前述のメソッド呼び出しシーケンスの分類結果から、解析可能である。そうすれば、これらの複数組のメソッド呼び出しシーケンスに関するメソッド呼び出し回数毎の残り時間の平均値として、現在のメソッド呼び出し回数に対応する残り時間を算出することが可能となる。具体的には、図4のメソッドシーケンス表401に複数種類に分類されているメソッド呼び出しシーケンス同士で、呼び出し回数毎のメソッド呼び出しを比較する。そして、共通なメソッドの呼び出しをノードとしてまとめ、その後、共通でないメソッドの呼び出しもノードにして、サーバコンピュータ102図1のメモリ上の記憶領域に、木構造のデータを作成する。図5は、第1の実施形態における上記木構造である処理種別分化木501の作成処理とデータ構成例の説明図である。処理種別分化木501において、第1階層のノードには、1回目に呼び出されるメソッドが対応付いている。図5の例では、左端のメソッドAである。この1回目に呼び出されるメソッドAは、第2階層以下の全てのノードにつながっている。このため、1回目に呼び出されるメソッドAの実行後には、図4のメソッドシーケンス表401に得られている全ての種類図4では2種類のメソッド呼び出しシーケンスが実行される。一般的に、第n階層n≧1にあるノード1つとは限らないには、n回目に呼び出されるメソッドが対応付いている。そして、このノードより先に接続されている第n1階層以上の部分が、例えば2通りの経路に分岐しているとすれば、そのn回目に呼び出されるメソッドの実行後には2通りのメソッド呼び出しシーケンスが実行されることになる。図5の例では、第2階層左端から2番目にあるノードには、第2回目に呼び出されるメソッドBが対応付いている。そして、このノードより先に接続されている第3階層左端から3番目以上の部分は、2通りの経路に分岐しているため、2回目に呼び出されるメソッドの実行後には2通りのメソッド呼び出しシーケンスが実行されることになる。図5の例では、メソッド呼び出しシーケンスA-B-B-C-D中のB-C-Dという部分と、メソッド呼び出しシーケンスA-B-E中のEという部分である。また、図5の例では、第3階層左端から3番目にあるノードには、第3回目に呼び出されるメソッドBまたはEが対応付いている。そして、メソッドBのほうのノードより先に接続されている第4階層左端から4番目以上の部分は、C-Dという1通りの経路のみである。このため、3回目に呼び出されるメソッドBの実行後には1通りのメソッド呼び出しシーケンスA-B-B-C-D中のC-Dという部分のみが実行される。メソッドEのほうのノードより先には接続されているノードはないため、この経路ではメソッド呼び出しシーケンスA-B-Eの1種類が確定する。以上の処理種別分化木501を用いることで、例えば、現在のメソッド呼び出し回数が第1回目でノードAが実行されているということがわかった場合を考える。この場合、その後には、図4のメソッドシーケンス表401に登録されているメソッド呼び出しシーケンスA-B-B-C-DとA-B-Eの2種類が同じ回数実行される可能性があるということがわかる。図4の例では1回ずつこのため、図4のメソッドシーケンス表401のこれら2つのメソッド呼び出しシーケンス中の各第1回目のメソッド呼び出し回数に対応する残り時間10秒および7秒の出現頻度で重みづけした加重平均値8.5秒10秒×1回7秒×1回として、残り時間を見積もることができる。次に、現在のメソッド呼び出し回数が第2回目でノードBが実行されているということがわかった場合を考える。この場合にも、その後には、図4のメソッドシーケンス表401に登録されているメソッド呼び出しシーケンスA-B-B-C-Dの部分B-C-DとA-B-Eの部分Eの2種類が実行される可能性があるということがわかる。このため、図4のメソッドシーケンス表401のこれら2つのメソッド呼び出しシーケンス中の各第2回目のメソッド呼び出し回数に対応する残り時間4秒および5秒の出現頻度で重みづけした加重平均値4.5秒として、残り時間を見積もることができる。さらに、現在のメソッド呼び出し回数が第3回目でノードBが実行されているということがわかった場合を考える。この場合にも、その後には、図4のメソッドシーケンス表401に登録されているメソッド呼び出しシーケンスA-B-B-C-Dの部分C-Dの1種類が実行される可能性があるということがわかる。このため、図4のメソッドシーケンス表401のメソッド呼び出しシーケンスA-B-B-C-D中の第3回目のメソッド呼び出し回数に対応する残り時間3秒として、残り時間を見積もることができる。一方、現在のメソッド呼び出し回数が第3回目でノードEが実行されているということがわかった場合を考える。この場合には、図4のメソッドシーケンス表401に登録されているメソッド呼び出しシーケンスA-B-Eの最後のノードEが実行されたことになる。このため、図4のメソッドシーケンス表401のメソッド呼び出しシーケンスA-B-E中の第3回目のメソッド呼び出し回数に対応する残り時間1秒として、残り時間を見積もることができる。以上のようにして、現在のメソッド呼び出し回数とメソッド名がわかれば、処理種別分化木501より、そのメソッドの実行後に何通りのメソッド呼び出しシーケンスが実行されるかが判定可能となる。これにより、判定された組数のメソッド呼び出しシーケンスに関する現在のメソッド呼び出し回数に対応する回数の残り時間の平均値として、現在の残り時間を算出することが可能となる。しかし、残り時間の問合せ要求が発生する毎に上記計算を実行するのでは応答性能が悪い。このため、処理種別分化木501から抽出できる全てのノードについて、そのノードに対応するメソッドの実行後に何通りのメソッド呼び出しシーケンスが実行されるかを判定して残り時間の平均値を計算しておき、テーブルに登録しておく。そして、残り時間の問合せ要求の発生時には、現在のメソッド呼び出し回数とメソッド名からそのテーブルを参照することにより、残り時間を高速に見積もることが可能となる。しかしながら実際には、図1のサーバコンピュータ102上で解析される処理種別分化木501は相当複雑な構造になることが予想される。従って、その全ての階層の全てのノードについて上記残り時間を計算しておくのは、大規模なアプリケーションサーバシステムにおいては効率的でない。そこで、本実施形態では、図2の履歴解析部205が、処理種別分化木501の経路を決定付けるノード、すなわち処理種別を確定するメソッドについてのみ重要呼び出しとしてマークする。そして、その重要呼び出しに対応するメソッドと開始ノードのメソッドとについてのみ、残り時間を計算しておく。図6は、第1の実施形態における重要呼び出しの抽出処理の説明図である。図2の履歴解析部205は、処理種別分化木501を構成する各ノードのうち分岐したノードを処理種別を確定する重要呼び出しとしてマークする。例えば図6aに示される処理種別分化木501において、破線の楕円で囲まれた第3階層にある分岐した2つの濃い色のノードメソッドBとEに対応する各ノードが、重要呼び出しとしてマークされる。その後、履歴解析部205は、マークした各重要呼び出しから処理種別分化木501に沿って開始ノード方向図中、左方向に向かって各ノードをトラバースする。そして、重要呼び出しと同じメソッドのノードと開始ノードについても重要呼び出しとしてさらにマークする。例えば図6bに示される処理種別分化木501において、第3階層でメソッドBのノードが重要呼び出しとしてマークされたため、第2階層にある濃い色のメソッドBのノードも重要呼び出しとしてマークされる。さらに、第1階層にある濃い色のメソッドAの開始ノードも重要呼び出しとしてマークされる。次に、図2の履歴解析部205は、処理種別分化木501上でマークしたすべての重要呼び出しに、ユニークなそれぞれ個別のモデル番号を定義する。図7は、第1の実施形態におけるモデル番号の付与処理の説明図である。図7の例では、図6bのようにマークされた重要呼び出しの各ノードに、1、2、3、4というモデル番号がそれぞれ付与される。本実施形態では、このようにして重要呼び出しに付与されたモデル番号が定義される。前述したように、個別のメソッド呼び出しシーケンスを直接判別するのが理想的であるが、計算効率を考慮すると、上述のようにして代表的に決定されたモデル番号を介して間接的に処理種別を判別するのがよい。続いて、図2の履歴解析部205は、上述のモデル番号毎にメソッド呼び出し回数と処理の残り時間との関係を計算し、モデル表206に記憶する。図8は、第1の実施形態におけるモデル表206の作成処理とデータ構成例の説明図である。まず、履歴解析部205は、サーバコンピュータ102図1のメモリ上にモデル表206の記憶領域を確保する。次に、履歴解析部205は、処理種別分化木501上で付与したモデル番号毎にモデル表206にエントリ表の行データを作成し、モデル番号項目に各モデル番号を登録する。また、モデル表206のMethod名項目に各モデル番号に対応するメソッド名を登録する。図8の例では、モデル番号1、2、3、4にそれぞれ対応する各エントリが作成され、メソッド名としてA、B、B、Eが登録される。次に、履歴解析部205は、モデル表206の各モデル番号のエントリに対応して、図5に例示される処理種別分化木501より、そのモデル番号を含む何通りのメソッド呼び出しシーケンスが実行されるかを判定する。次に、判定された組数のメソッド呼び出しシーケンスに関する各メソッド呼び出し回数に対応する各残り時間の平均値を計算する。そして、その計算した各残り時間の平均値を、モデル表206上の各モデル番号のエントリの各メソッド呼び出し回数に対応する項目に登録する。図8の例では、例えば、モデル番号1に関しては、図8に示される処理種別分化木501より、メソッド呼び出しシーケンスA-B-B-C-DとA-B-Eの2種類が実行される可能性があるということがわかる。これより、図4のメソッドシーケンス表401のこれら2つのメソッド呼び出しシーケンス中の各第1回目のメソッド呼び出し回数に対応する残り時間10秒および7秒の頻度で重みづけした加重平均値8.5秒10秒×1回7秒×1回として、第1回目のメソッド呼び出しの残り時間を計算できる。また、メソッドシーケンス表401の上記2つのメソッド呼び出しシーケンス中の各第2回目のメソッド呼び出し回数に対応する残り時間4秒および5秒の出現頻度で重みづけした加重平均値4.5秒として、第2回目のメソッド呼び出しの残り時間を計算できる。また、メソッドシーケンス表401の上記2つのメソッド呼び出しシーケンス中の各第3回目のメソッド呼び出し回数に対応する残り時間3秒および1秒の出現頻度で重みづけした加重平均値2秒として、第3回目のメソッド呼び出しの残り時間を計算できる。さらに、メソッドシーケンス表401の上記2つのメソッド呼び出しシーケンス中の各第4回目のメソッド呼び出し回数に対応する残り時間2秒および0秒登録無しの平均値1秒として、第4回目のメソッド呼び出しの残り時間を計算できる。そして、メソッドシーケンス表401の上記2つのメソッド呼び出しシーケンス中の各第5回目のメソッド呼び出し回数に対応する残り時間1秒および0秒登録無しの出現頻度で重みづけした加重平均値0.5秒として、第5回目のメソッド呼び出しの残り時間を計算できる。図8において、モデル番号2に関しては、図8に示される処理種別分化木501より、モデル番号1の場合と同様に、メソッド呼び出しシーケンスA-B-B-C-DとA-B-Eの2種類が実行される可能性があるということがわかる。これより、モデル番号2に対応する各メソッド呼び出し回数に対応する各残り時間は、モデル番号1の場合と同様となる。図8において、モデル番号3に関しては、図8に示される処理種別分化木501より、メソッド呼び出しシーケンスA-B-B-C-Dの1種類のみが実行されることがわかる。これより、図4のメソッドシーケンス表401の上記メソッド呼び出しシーケンス中の各メソッド呼び出し回数に対応して登録されている各残り時間がそのまま、モデル番号3に対応する各メソッド呼び出し回数に対応する各残り時間として登録される。すなわち、第1回目、第2回目、第3回目、第4回目、第5回目の各メソッド呼び出し回数に対応する各残り時間として、10秒、4秒、3秒、2秒、1秒が登録される。図8において、モデル番号4に関しては、図8に示される処理種別分化木501より、メソッド呼び出しシーケンスA-B-Eの1種類のみが実行されることがわかる。これより、図4のメソッドシーケンス表401の上記メソッド呼び出しシーケンス中の各メソッド呼び出し回数に対応して登録されている各残り時間がそのまま、モデル番号4に対応する各メソッド呼び出し回数に対応する各残り時間として登録される。すなわち、第1回目、第2回目、第3回目、第4回目、第5回目の各メソッド呼び出し回数に対応する各残り時間として、7秒、5秒、1秒、0秒、0秒が登録される。なお、メソッド呼び出しシーケンスA-B-Eに関しては、第4回目および第5回目のメソッド呼び出し回数は存在しないが、それぞれ便宜上0秒が登録される。このようにして作成されたモデル表206を使用すれば、残り時間の問合せ要求時に、対象スレッド上でいずれかのモデル番号に対応するメソッドが実行されたことを判別でき、かつメソッド呼び出し回数を判別できれば、残り時間を取得することができる。例えば図8において、残り時間の問合せ要求時に、モデル番号=4が判別できかつメソッド呼び出し回数=3回が判別できれば、モデル表206のモデル番号=4に対応するエントリのメソッド呼び出し回数=3に対応する項目の残り時間=1秒が取得される。そして、この残り時間=1秒が、残り時間の問合せ要求時に対して応答される。なお、処理種別分化木501の性質から、残り時間の問合せ要求が対象スレッドでの実行上後になるほど、それより後に実行される可能性のメソッド呼び出しシーケンスの候補数は少なくなる。このため、残り時間の問合せ要求時に判別できるモデル番号の値が大きくなるほど、残り時間が平均化される度合いが少なくなるため、正確な残り時間を算出できるようになる。しかし、対象スレッド上早い実行時点で残り時間の問合せ要求が発生したとしても、本実施形態では、その後に実行される可能性のある複数組のメソッド呼び出しシーケンスから求まる平均値として、適切な残り時間を応答することが可能となる。ここで、図2の履歴解析部205は、後述するモデル番号遷移表207の作成のために、処理種別分化木501を参照して、モデル表206の各モデル番号のエントリの直前モデル番号項目に、各モデル番号の直前に実行されるモデル番号を登録しておく。例えば図8のモデル表206のモデル番号=2のエントリの直前モデル番号項目には、モデル番号=2の直前のモデル番号=1が登録される。また、モデル番号=3のエントリの直前モデル番号項目には、モデル番号=3の直前のモデル番号=2が登録される。モデル番号=4のエントリの直前モデル番号項目にも、処理種別分化木501より、モデル番号=4の直前のモデル番号=2が登録される。なお、モデル番号=1は先頭のモデル番号であるため、モデル番号=1のエントリの直前モデル番号項目は未登録となる。最後に、図2の履歴解析部205は、モデル表206の直前モデル番号項目の登録内容に基づいて、メソッド毎に、モデル番号間の遷移関係を取得し、その遷移関係をメモリ上に記憶領域を確保したモデル番号遷移表207に書き込む。図9は、第1の実施形態におけるモデル番号遷移表207の作成処理とデータ構成例の説明図である。履歴解析部205はまず、図8のモデル表206において、最初のモデル番号=1のエントリのMethod名項目に登録されているメソッド名=Aを識別する。このメソッド名=Aに関して、モデル番号=1のエントリの直前モデル番号項目は未登録である。この結果、履歴解析部205は、モデル番号遷移表207にメソッドAに対応する第1番目のエントリを作成する。そして、このエントリのメソッド項目にメソッドAのメソッド名図中、methodAと表記を登録する。また、このエントリのモデル番号遷移項目に、->1という遷移関係を登録する。この遷移関係において、は未登録状態、1はモデル番号=1を示す。また、->は、この矢印の左側に表記される項目から右側に表記される項目にモデル番号が遷移することを示している。すなわち、->1は、スレッド上で現在実行されているメソッドがAの場合に、直前のモデル番号が未登録であれば、現在のモデル番号を1に遷移させることを示している。これは、例えば図7に示される処理種別分化木501上で、現在のメソッドAが最初に実行されるモデル番号に対応するメソッドであるときには、現在のスレッドのモデル番号を1に遷移すべきであることを示している。次に、履歴解析部205は、図8のモデル表206において、第2番目のモデル番号=2のエントリのMethod名項目に登録されているメソッド名=Bを識別する。このメソッド名=Bは、さらにモデル表206のモデル番号=3のエントリのMethod名項目にも登録されている。そこで、履歴解析部205は、モデル番号=2とモデル番号=3の各エントリの直前モデル番号項目を参照する。モデル番号=2の直前モデル番号項目にはモデル番号=1が登録されている。一方、モデル番号=3の直前モデル番号項目にはモデル番号=2が登録されている。この結果、履歴解析部205は、モデル番号遷移表207にメソッドBに対応する第2番目のエントリを作成する。そして、このエントリのメソッド項目にメソッドBのメソッド名図中、methodBと表記を登録する。また、このエントリのモデル番号遷移項目に、1->2、2->3という遷移関係を登録する。遷移関係1->2は、スレッド上で現在実行されているメソッドがBの場合に、直前のモデル番号が1であれば、現在のモデル番号を2に遷移させることを示している。これは、例えば図7に示される処理種別分化木501上で、今までモデル番号=1のメソッドAが実行されていた状態から、現在がメソッドBの実行状態になったときには、現在のスレッドのモデル番号を2に遷移すべきであることを示している。また、遷移関係2->3は、スレッド上で現在実行されているメソッドがBの場合に、直前のモデル番号が2であれば、現在のモデル番号を3に遷移させることを示している。これは、例えば図7に示される処理種別分化木501上で、今までモデル番号=2のメソッドBが実行されていた状態から、現在も同じくメソッドBの実行状態になったときには、現在のスレッドのモデル番号を3に遷移すべきであることを示している。次に、履歴解析部205は、図8のモデル表206において、第3番目のモデル番号=3のエントリのMethod名項目に登録されているメソッド名=Bを識別するが、メソッドBは既に処理済みであるためスキップする。この結果、履歴解析部205は、図8のモデル表206において、第4番目のモデル番号=4のエントリのMethod名項目に登録されているメソッド名=Eを識別する。履歴解析部205は、モデル番号=4のエントリの直前モデル番号項目を参照する。モデル番号=4の直前モデル番号項目にはモデル番号2が登録されている。この結果、履歴解析部205は、モデル番号遷移表207にメソッドEに対応する第3番目のエントリを作成する。そして、このエントリのメソッド項目にメソッドEのメソッド名図中、methodEと表記を登録する。また、このエントリのモデル番号遷移項目に、2->4という遷移関係を登録する。この遷移関係2->4は、スレッド上で現在実行されているメソッドがEの場合に、直前のモデル番号が2であれば、現在のモデル番号を4に遷移させることを示している。これは、例えば図7に示される処理種別分化木501上で、今までモデル番号=2のメソッドBが実行されていた状態から、現在がメソッドEの実行状態になったときには、現在のスレッドのモデル番号を4に遷移すべきであることを示している。以上のようにして、図2の履歴解析部205の処理により、残り時間の問合せ要求に対して、モデル番号とメソッド呼び出し回数とから残り時間を取得して応答するためのモデル表206を作成することができる。また、履歴解析部205の処理により、このモデル表206を参照するときの現在のモデル番号を取得するためのモデル番号遷移表207を作成することができる。次に、図2の処理種別動的判断コード挿入部208の動作についてより具体的に説明する。まず、処理種別動的判断コード挿入部208は、Webアプリコード201中のリクエストの受信時に最初に実行されるメソッドのプログラムコードに、図3に例示したスレッドローカル変数領域を確保するプログラムコードを埋め込む。図10は、第1の実施形態におけるスレッドローカル変数領域を確保するプログラムコードの埋め込み処理の説明図である。いま、図2のWebアプリコード201が例えばJavaプログラミング言語により記述されるサーブレットServletと呼ばれるサーバプログラムである場合を考える。この場合に、図1のクライアントコンピュータ101からリクエストIDを有するリクエストが受信されたときに最初に実行されるメソッドは、doGetまたはdoPostと呼ばれるトップレベルルーチンである。doGetは、図1のクライアントコンピュータ101から、HTTPハイパーテキストトランスファプロトコルによるGetアクセスと呼ばれるリクエスト形式のデータを受信するルーチンである。doPostは、クライアントコンピュータ101から、HTTPハイパーテキストトランスファプロトコルによるPostアクセスと呼ばれるリクエスト形式のデータを受信するルーチンである。HTTPの場合、図1のクライアントコンピュータ101からサーバコンピュータ102へは、リクエストはGetアクセスまたはPostアクセスのいずれかのデータ形式で送信される。doGetメソッドを例にして説明する。なお、doPostメソッドの場合も同様である。図10において、1001は、doGetメソッドのプログラムコード例であり、図2のWebアプリコード201の一部である。1002は、doGetメソッドプログラムコード1001を処理種別動的判断コード挿入部208による変換後のdoGetメソッドのプログラムコードであり、図2の処理種別を動的に判断するWebアプリコード209の一部である。処理種別動的判断コード挿入部208は、doGetメソッドのプログラムコード内の最初に実行される行の手前に、リクエストIDを生成するプログラムコードリクエストIDが付与されていない場合を埋め込む。続けて、図2または図8のモデル表206とモデル番号遷移表207がまだ生成されていない場合に、それらをメモリ上に生成するプログラムコードが埋め込まれる。さらに続けて、スレッドローカル変数領域を確保するプログラムコードが埋め込まれる。スレッドローカル変数領域は、図3のスレッドローカル変数管理テーブル301から参照されるスレッドローカル変数テーブル302に対応する。このプログラムコードによって、まず、スレッドローカル変数管理テーブル301上にリクエストIDのエントリが作成される。次に、そのエントリのリクエストIDメソッド呼び出し項目にリクエストID値が登録される。さらに、メモリ上でスレッドローカル変数テーブル302の記憶領域が確保された後に、その記憶領域の先頭アドレスへのポインタが、スレッドローカル変数管理テーブル301上の上記エントリのスレッドローカル変数テーブルへの参照項目に登録される。処理種別動的判断コード挿入部208は、doGetメソッドのプログラムコード内の最後に実行される行の直後に、リクエストIDに対応するスレッドのスレッドローカル変数領域を解放するプログラムコードを埋め込む。このプログラムコードにより、スレッド上での全てのメソッド呼び出しシーケンスが終了してトップレベルルーチンのdoGetメソッドが処理を終了するときに、そのスレッドに対応して確保されていたスレッドローカル変数領域が解放される。具体的には、このプログラムコードにより、図3の該当するスレッドローカル変数テーブル302の記憶領域が解放され、スレッドローカル変数管理テーブル301上の該当するリクエストIDに対応するエントリが削除される。次に、処理種別動的判断コード挿入部208は、Webアプリコード201中の各モデル番号に対応する各メソッドのプログラムコードの先頭に、モデル番号を判別して更新するためのモデル判別コードを自動生成して埋め込む。図11は、第1の実施形態におけるモデル番号を更新するモデル判別コードの埋め込み処理の説明図である。前述したように、メモリ上に生成されているモデル番号遷移表207において、例えばメソッドBに対応するエントリには、履歴解析部205によって、モデル番号の遷移関係として1->2と2->3が登録されている。これに対応して、処理種別動的判断コード挿入部208は、図11に示されるように、図2のWebアプリコード201の一部であるメソッドBのプログラムコード1101に対して、1102内に示されるようなモデル判別コードを埋め込む。この結果、処理種別動的判断コード挿入部208は、処理種別を動的に判断するWebアプリコード209の一部として、メソッドBのプログラムコード1102を生成する。プログラムコード1102において、メソッドBにおいて実行される最初のプログラムコードの直前には、ifMODELID2というモデル判別コードが埋め込まれる。このモデル判別コードは、図3のスレッドローカル変数管理テーブル301からスレッドローカル変数テーブル302中のMOEDLID変数の値であるMOEDLID値を参照する。そして、MOEDLID値が1であるときには、そのMOEDLID値に2を代入する。このモデル判別コードは、遷移関係1->2の動作を実現するものである。すなわち、スレッド上で現在実行されているメソッドがBの場合に、スレッドローカル変数テーブル302の直前のMOEDLID値が1であれば、そのMOEDLID値を2にして現在のモデル番号を2に遷移させるモデル判別コードである。これは、例えば図7の第2階層目のモデル番号=2におけるメソッドBの実行に相当する。プログラムコード1102において、上記1行目のモデル判別コードに続いて、elseifMODELID3というモデル判別コードが埋め込まれる。このモデル判別コードは、上記スレッドローカル変数テーブル302中のMOEDLID値が2であるときには、そのMOEDLID値に3を代入する。このモデル判別コードは、遷移関係2->3の動作を実現するものである。すなわち、スレッド上で現在実行されているメソッドがBの場合に、スレッドローカル変数テーブル302の直前のMOEDLID値が2であれば、そのMOEDLID値を3にして現在のモデル番号を3に遷移させるモデル判別コードである。これは、例えば図7の第3階層目のモデル番号=3におけるメソッドBの実行に相当する。プログラムコード1102において、上記2行目のモデル判別コードに続いて、elseDonothingというプログラムコードが埋め込まれる。このプログラムは、上記1行目と2行目のいずれの条件も満たされなかった場合に、空処理を実行する、すなわち何も実行しないことを示している。なお、Donothingという記述は、プログラムコード中のコメント文であり、プログラムコードの実行には影響しない。図11において、モデル番号遷移表207に登録されているメソッドAやメソッドEについては、特には図示しないが、メソッドBの場合と同様に、各メソッドのプログラムコードにモデル番号を更新するためのモデル判別コードが埋め込まれる。前述したように、メモリ上に生成されているモデル番号遷移表207において、例えばメソッドAに対応するエントリには、履歴解析部205によって、モデル番号の遷移関係として->1が登録されている。これに対応して、処理種別動的判断コード挿入部208は、メソッドAのプログラムコードに関して、図2のWebアプリコード201を処理種別を動的に判断するWebアプリコード209に変換する。このプログラムコードにおいて、メソッドAにおいて実行される最初のプログラムコードの直前には、例えばunlessMODELID1というモデル判別コードが埋め込まれる。このモデル判別コードは、スレッドローカル変数テーブル302中のMOEDLID値が0または未登録であるときには、そのMOEDLID値に1を代入する。このモデル判別コードは、遷移関係->1の動作を実現するものである。すなわち、スレッド上で現在実行されているメソッドがAの場合に、スレッドローカル変数テーブル302の直前のMOEDLID値が0または未登録であれば、そのMOEDLID値を1にして現在のモデル番号を1に遷移させるモデル判別コードである。これは、例えば図7の第1階層目のモデル番号=1におけるメソッドAの実行に相当する。また、図11のモデル番号遷移表207において、例えばメソッドEに対応するエントリには、履歴解析部205によって、モデル番号の遷移関係として2->4が登録されている。これに対応して、処理種別動的判断コード挿入部208は、メソッドEのプログラムコードに関して、図2のWebアプリコード201を処理種別を動的に判断するWebアプリコード209に変換する。このプログラムコードにおいて、メソッドEにおいて実行される最初のプログラムコードの直前には、例えばifMODELID4というモデル判別コードが埋め込まれる。このモデル判別コードは、スレッドローカル変数テーブル302中のMOEDLID値が2であるときには、そのMOEDLID値に4を代入する。このモデル判別コードは、遷移関係2->4の動作を実現するものである。すなわち、スレッド上で現在実行されているメソッドがEの場合に、スレッドローカル変数テーブル302の直前のMOEDLID値が2であれば、そのMOEDLID値を4にして現在のモデル番号を4に遷移させるモデル判別コードである。これは、例えば図7の第3階層目のモデル番号=4におけるメソッドEの実行に相当する。以上のようにして図2の処理種別動的判断コード挿入部208によって得られた処理種別を動的に判断するWebアプリコード209が、図1のユーザコンピュータからのリクエストの受信時に、Webアプリコード201の代わりに実行される。この結果、現在実行中のスレッドにおいて、現在のメソッドが例えば図7の処理種別分化木501中のどのモデル番号までが実行されているかを、スレッドローカル変数テーブル302スレッドローカル変数領域中のMOEDLID値として把握することが可能となる。以上のようにして、第1の実施形態では、現在実行中のスレッドにおいてどのモデル番号までのメソッドが実行されているかを常に把握することが可能となる。これと共に、後述する第2の実施形態により現在実行中のスレッドにおけるメソッド呼び出し回数を把握することで、図8のように作成されたモデル表206を参照して、現在実行中のスレッドにおける処理の残り時間を取得することが可能となる。第2の実施形態で後述するように、図3のスレッドローカル変数テーブル302スレッドローカル変数領域のNCALL変数には、NCALL値として、現在実行中のスレッドにおけるメソッド呼び出し回数が得られる。図1のクライアントコンピュータ101からリクエストIDを指定して残り時間の問合せ要求が受信された場合に、リクエストIDで図3のスレッドローカル変数管理テーブル301がアクセスされることにより、該当するスレッドローカル変数テーブル302が参照される。この結果、スレッドローカル変数テーブル302からMOEDLID値とNCALL値が読み出される。そして、モデル表206において、MOEDLID値に対応するモデル番号のエントリ行のNCALL値に対応するメソッド呼び出し回数の項目に登録されている残り時間が取得され、クライアントコンピュータ101に応答される。例えば、スレッドローカル変数テーブル302からMOEDLID値=4、NCALL値=3が得られたとする。この場合、モデル表206上のモデル番号=4に対応するエントリ行のメソッド呼び出し回数=3の項目に対応する残り時間=1秒が取得され、クライアントコンピュータ101に応答される。このようにして、第1の実施形態では、残り時間を応答するために処理種別を事前に知る必要がなく、現在実行中のスレッドに対応する処理種別をモデル番号として自動的に取得し、適切な残り時間を応答することが可能となる。図12は、図2の機能ブロックによって示される第1の実施形態のシステムの制御処理を示すフローチャートである。このフローチャートは、例えば図37で後述するサーバコンピュータ102図1のハードウェア構成で、CPU中央演算処理装置3701が外部記憶装置3705に記憶された制御プログラムをメモリ3702にロードして実行する処理である。まず、ステップS1は、図2の実行履歴取得コード変換部202の処理である。ここでは、既存プロファイル技術を使って、図2に示されるメソッドの実行履歴204が取得される。次に、ステップS2-1からS2-8までは、図2の履歴解析部205の処理に対応する処理である。まず、リクエスト毎すなわちスレッドIDリクエストID毎に図2の実行履歴204が分割されるステップS2-1。次に、リクエスト毎にメソッド開始からスレッドが完了するまでの残り時間が計算され、また、終了に関する情報が取り除かれるステップS2-2。次に、図4で説明しように、実行履歴204から抽出されるメソッド呼び出しシーケンス毎に、出現回数がカウントされる。そして、前述したように、シーケンス中の各メソッド呼び出し回数に対応するメソッド毎に、各メソッドの開始から完了までの時間の平均値が計算されて、図4のメソッドシーケンス表401に登録されるステップS2-3。次に、図5で説明した処理種別分化木501が作成されるステップS2-4。次に、図6で説明したように、処理種別を確定するメソッド呼び出しが重要呼び出しとしてマークされる。その後、マークした各重要呼び出しから図5の処理種別分化木501のメソッド呼び出しシーケンスに沿って開始ノード方向に向かって各ノードがトラバースされる。そして、重要呼び出しと同じメソッドのノードと開始ノードについても、重要呼び出しとしてさらにマークされる以上、ステップS2-5。次に、図7で説明したように、すべての重要呼び出しにユニークなモデル番号が付与されるステップS2-6。次に、図8で説明したように、各モデル番号毎に、メソッド呼び出し回数毎のメソッド開始から完了までの平均の残り時間が計算され、モデル表206に登録されるステップS2-7。最後に、図9で説明したように、メソッド毎に、モデル番号間の遷移関係が取得され、モデル番号遷移表207に書き込まれるステップS2-8。次に、ステップS3-1とS3-2は、図2の処理種別動的判断コード挿入部208の機能に対応する処理である。まず、図11で説明したように、モデル番号遷移表207に基づいて、Webアプリコード201中の各モデル番号に対応する各メソッドのプログラムコードの先頭に、モデル番号を判別し更新するためのモデル判別コードが自動生成されて埋め込まれるステップS3-1。そして、図10で説明したように、トップレベルルーチンのスレッドの先頭に、スレッド開始時に図3のスレッドローカル変数テーブル302を確保する処理、スレッド終了時にスレッドローカル変数テーブル302を開放するプログラムコードが埋め込まれるステップS3-2。図13は、図12のステップS1の処理の説明図である。いま、オリジナルコードであるWebアプリコード201として、図13に示されるプログラムコードがあるとする。このプログラムコードでは、例えばメソッドAのプログラムコードmethodA内で、もし変数flagの値が真=Tが偽かで処理が別れる。変数flagの値が真=Tならばif現在のメソッド呼び出し回数を判別するコードを前記アプリケーションコードに挿入する、ことを特徴とする付記1または2記載のコード変換方法。付記4リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出し、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入し、実行中のスレッドの処理の残り時間の問い合わせ要求を受け付け、現在のメソッド呼び出し回数を判別するコードを自動生成して前記アプリケーションプログラムに埋め込み、前記識別情報毎に前記メソッド呼び出し回数と前記メソッドの残時間との関係を見積もった結果に基づいて、処理の残り時間を取得し前記問い合わせ要求に応答する、ことを特徴とするリクエストの残り時間応答方法。前記リクエスト毎に実行履歴を取得し、前記残時間として前記リクエスト毎にメソッド開始からそのメソッドを含むスレッドの完了するまでの時間を求め、前記呼び出し順序パターンに対応したメソッド呼び出しシーケンスの出現回数をカウントし、前記残時間の平均時間を求め、前記メソッド呼び出しシーケンスに基づいて処理種別分化木を作成し、前記処理種別分化木において処理種別を確定するメソッド呼び出しを重要呼び出しとしてマークしたのち、メソッド呼び出しシーケンスを呼び出し元方向にトラバースし同じメソッドについても重要呼び出しとし、前記処理種別分化木の重要呼び出しに前記識別情報に対応するモデル番号を付し、前記平均時間をモデル表へ登録し、前記処理種別分化木に基づいて前記メソッド毎にモデル番号遷移表を作成し、前記モデル番号遷移表に基づいて前記コードとして処理種別判別コードを前記アプリケーションコードに挿入し、メソッド呼び出し回数をカウントするコードを前記アプリケーションコードに挿入し、前記処理種別と、前記メソッド呼び出し回数とに基づいて前記モデル表の前記平均時間から各処理種別毎の残時間を求める、ことを特徴とする付記4記載のリクエストの残り時間応答方法。付記6前記アプリケーションプログラムに、前記メソッドの実行開始時刻と実行終了時刻を更新して記録するコードを自動生成して埋め込む、ことを特徴とする付記4または5のいずれかに記載のリクエストの残り時間応答方法。付記7リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出する検出手段と、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入するコード挿入手段と、を具備することを特徴とするコード変換装置。付記8コンピュータに、リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出し、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入する処理を実行させることを特徴とするコード変換プログラム。付記9リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出する手段と、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成する手段と、生成した該コードを前記アプリケーションコードに挿入する手段と、実行中のスレッドの処理の残り時間の問い合わせ要求を受け付ける手段と、実行中のスレッドにおける現在のメソッド呼び出し回数を判別するコードを自動生成して前記アプリケーションプログラムに埋め込む埋め込み手段と、前記識別情報毎に前記メソッド呼び出し回数と処理時間との関係を見積もった結果に基づいて、処理の残り時間を取得し前記問い合わせ要求に応答する応答手段と、を特徴とするリクエストの残り時間応答装置。付記10コンピュータに、リクエストに応じて実行されるアプリケーションコードに含まれるメソッドが、リクエストに応じて実行される一連のアプリケーションコードに含まれる各メソッドの呼び出し順序パターン上のどのメソッドに対応するか検出し、検出された該呼び出し順序パターン上の該メソッドに対応する識別情報に基づいてコードを生成し、生成した該コードを前記アプリケーションコードに挿入し、実行中のスレッドの処理の残り時間の問い合わせ要求を受け付け、実行中のスレッドにおける現在のメソッド呼び出し回数を判別するコードを自動生成して前記アプリケーションプログラムに埋め込み、前記識別情報毎に前記メソッド呼び出し回数と処理時間との関係を見積もった結果に基づいて、処理の残り時間を取得し前記問い合わせ要求に応答する処理を実行する、ことを特徴とするリクエストの残り時間応答プログラム。