(57)【要約】【課題】端末装置への入力操作に対応する画面表示の遅延を抑制できる。【解決手段】制御部２２は、情報処理装置１０から受信した画面データに応じた画面を表示装置３０に表示させる。これとともに、制御部２２は、情報処理装置１０で予測された次の入力操作と、予測された次の入力操作に応じた画面データとを情報処理装置１０から受信して記憶部２１に格納する。また、制御部２２は、次の入力操作を検知したとき、当該次の入力操作が予測された次の入力操作と一致した場合には、記憶部２１に格納された画面データに基づく画面を表示装置３０に表示させる。【選択図】図１
2015082290.tif 000002
【特許請求の範囲】
【請求項１】
検知された入力操作を示す操作情報を情報処理装置に送信し、当該入力操作に応じた画面データを前記情報処理装置から受信して、受信した画面データに基づく画面を表示装置に表示させる端末装置において、
画面データを一時的に記憶する記憶部と、
予測された次の入力操作に応じた画面データを前記情報処理装置から受信して前記記憶部に格納し、次の入力操作を検知したとき、当該次の入力操作が前記予測された次の入力操作と一致した場合には、前記記憶部に格納された画面データに基づく画面を前記表示装置に表示させる制御部と、
を有することを特徴とする端末装置。
【請求項２】
前記制御部は、前記次の入力操作を検知したとき、当該次の入力操作を示す操作情報を前記情報処理装置に送信し、当該次の入力操作が前記予測された次の入力操作と一致しなかった場合には、当該次の入力操作を示す操作情報の送信に応じて前記情報処理装置から送信された画面データに基づく画面を、前記表示装置に表示させることを特徴とする請求項１記載の端末装置。
【請求項３】
端末装置で検知される複数の入力操作をそれぞれ示す複数の操作情報を記憶する記憶部と、
前記端末装置で検知された第１の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第１の画面データを生成して前記端末装置に送信するとともに、前記複数の操作情報に基づいて、前記端末装置で次に検知される第２の入力操作を予測し、予測した前記第２の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第２の画面データを生成して、前記端末装置で次の入力操作が検知される前に、前記第２の画面データを前記第２の入力操作を示す操作情報とともに前記端末装置に送信する処理部と、
を有することを特徴とする情報処理装置。
【請求項４】
前記処理部は、前記第２の画面データを前記端末装置に送信した後、前記端末装置で次の入力操作が検知されたとき、前記検知された入力操作が予測した前記第２の入力操作と一致しなかった場合には、前記検知された入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第３の画面データを生成して前記端末装置に送信することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記記憶部には、前記複数の入力操作のそれぞれについて、前記端末装置で検知された頻度を示す情報が記憶され、
前記処理部は、前記頻度を示す情報に基づいて、前記端末装置で次に検知される前記第２の入力操作を予測する、
ことを特徴とする請求項３または４記載の情報処理装置。
【請求項６】
前記処理部は、前記端末装置で前記第１の入力操作が検知されたとき、前記第１の入力操作に対応する処理を実行して前記第１の画面データを生成する第１の処理と、前記第２の入力操作を予測し、予測した前記第２の入力操作に対応する処理を実行して前記第２の画面データを生成する第２の処理とを、前記情報処理装置上で動作する第１の仮想マシンおよび第２の仮想マシンをそれぞれ用いて実行することを特徴とする請求項３記載の情報処理装置。
【請求項７】
前記処理部は、予測した前記第２の入力操作に対応する処理を、前記第２の仮想マシンを用いて実行する前に、前記第２の仮想マシンのリソースの状態を、前記第１の画面データを生成した前記第１の仮想マシンのリソースの状態に一致させることを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記処理部は、前記第２の画面データを前記端末装置に送信した後、前記端末装置で次の入力操作が検知されたとき、前記検知された入力操作が予測した前記第２の入力操作と一致した場合には、前記第１の仮想マシンのリソースの状態を前記第２の仮想マシンのリソースの状態に一致させた後、前記端末装置での検知が次に予測される第３の入力操作に対応する処理と、当該処理の実行に応じた画面を示す第３の画面データの生成とを前記第１の仮想マシンを用いて実行し、生成された前記第３の画面データを前記第３の入力操作を示す操作情報とともに前記端末装置に送信することを特徴とする請求項６または７記載の情報処理装置。
【請求項９】
前記処理部は、前記第２の画面データを前記端末装置に送信した後、前記端末装置で次の入力操作が検知されたとき、前記検知された入力操作が予測した前記第２の入力操作と一致しなかった場合には、前記検知された入力操作に対応する処理と、当該処理の実行に応じた画面を示す画面データの生成とを前記第１の仮想マシンを用いて実行した後、前記第２の仮想マシンのリソースの状態を前記第１の仮想マシンのリソースの状態に一致させ、前記端末装置でさらに次に予測される第３の入力操作に対応する処理と、当該処理の実行に応じた画面を示す第３の画面データの生成とを前記第２の仮想マシンを用いて実行することを特徴とする請求項６または７記載の情報処理装置。
【請求項１０】
情報処理装置と端末装置とを有する情報処理システムにおいて、
前記情報処理装置は、前記端末装置で検知された第１の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第１の画面データを生成して前記端末装置に送信するとともに、前記端末装置で次に検知される第２の入力操作を予測し、予測した前記第２の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第２の画面データを生成して、前記第２の画面データを前記第２の入力操作を示す操作情報とともに前記端末装置に送信し、
前記端末装置は、検知された前記第１の入力操作を示す操作情報を情報処理装置に送信した後、前記第１の画面データを前記情報処理装置から受信して、前記第１の画面データに基づく画面を表示装置に表示させるとともに、前記第２の画面データと前記第２の入力操作を示す操作情報とを前記情報処理装置から受信して記憶装置に一時的に格納し、次の入力操作を検知したとき、当該入力操作が前記記憶装置に格納された操作情報が示す前記第２の入力操作と一致した場合には、格納された前記第２の画面データに基づく画面を前記表示装置に表示させる、
ことを特徴とする情報処理システム。
【請求項１１】
検知された入力操作を示す操作情報を情報処理装置に送信し、当該入力操作に応じた画面データを前記情報処理装置から受信して、受信した画面データに基づく画面を表示装置に表示させる、端末装置における表示制御方法であって、
予測された次の入力操作に応じた画面データを前記情報処理装置から受信して記憶部に格納し、
次の入力操作を検知したとき、当該次の入力操作が前記予測された次の入力操作と一致した場合には、前記記憶部に格納された画面データに基づく画面を前記表示装置に表示させる、
ことを特徴とする表示制御方法。
【請求項１２】
検知された入力操作を示す操作情報を情報処理装置に送信し、当該入力操作に応じた画面データを前記情報処理装置から受信して、受信した画面データに基づく画面を表示装置に表示させる処理を、コンピュータに実行させる表示制御プログラムであって、
前記コンピュータに、
予測された次の入力操作に応じた画面データを前記情報処理装置から受信して記憶部に格納し、
次の入力操作を検知したとき、当該次の入力操作が前記予測された次の入力操作と一致した場合には、前記記憶部に格納された画面データに基づく画面を前記表示装置に表示させる、
処理を実行させることを特徴とする表示制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末装置、情報処理装置、情報処理システム、表示制御方法および表示制御プログラムに関する。
【背景技術】
【０００２】
端末装置のデスクトップ環境をサーバ装置上で仮想化するデスクトップ仮想化技術が知られている。デスクトップを仮想化するシステムでは、端末装置で行われた入力操作の情報がサーバに送信され、その入力操作に対応する処理がサーバで実行される。そして、実行結果を示す画面のデータがサーバから端末装置に送信され、そのデータに基づく画面の表示処理が端末装置で行われる。
【０００３】
デスクトップの仮想化により、例えば、ユーザに使用されるソフトウェアの追加、更新などのメンテナンスが容易になる、ユーザがどこにいても自分専用のデスクトップ環境を端末装置上に呼び出して利用できる、といったメリットが得られる。
【０００４】
一方、コンピュータにおいて入力操作に対応する処理を高速化する技術には、次のようなものがある。例えば、アプリケーションプログラムを実行中にオペレータからの待ち状態が生じると、次に行われる処理を予測し、その先行処理を実施し、オペレータからの指示と予測が一致したときは、先行処理の次のステップから処理を継続する情報処理装置が提案されている。
【０００５】
また、例えば、次画面データを特定するキー項目が入力された時点でデータ転送要求をホストコンピュータに送出し、ホストコンピュータから転送させた次画面データを格納し、次画面展開要求が入力された時点で、格納した次画面データをディスプレイの表示画面に表示させる端末が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１−２２４８５９号公報
【特許文献２】特開平１０−１０５５１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、デスクトップを仮想化するシステムにおいては、サーバと端末装置との間の物理的な伝送路の距離が長くなると、伝送遅延の影響により、端末装置への入力操作から対応する画面の表示までの応答遅延が増大するという問題がある。例えば、ユーザが海外出張して、欧州にある端末装置から日本にあるサーバに接続した場合、数百ミリ秒程度の応答遅延が発生する可能性がある。
【０００８】
１つの側面では、本発明は、端末装置への入力操作に対応する画面表示の遅延を抑制できる端末装置、情報処理装置、情報処理システム、表示制御方法および表示制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、検知された入力操作を示す操作情報を情報処理装置に送信し、入力操作に応じた画面データを情報処理装置から受信して、受信した画面データに基づく画面を表示装置に表示させる端末装置が提供される。端末装置は、記憶部および制御部を有する。記憶部は、画面データを一時的に記憶する。制御部は、予測された次の入力操作に応じた画面データを情報処理装置から受信して記憶部に格納する。また、制御部は、次の入力操作を検知したとき、当該次の入力操作が予測された次の入力操作と一致した場合には、記憶部に格納された画面データに基づく画面を表示装置に表示させる。
【００１０】
また、１つの案では、情報処理装置が提供される。情報処理装置は、記憶部と処理部を有する。記憶部は、端末装置で検知される複数の入力操作をそれぞれ示す複数の操作情報を記憶する。処理部は、端末装置で検知された第１の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第１の画面データを生成して端末装置に送信する。また、処理部は、記憶部に記憶された複数の操作情報に基づいて、端末装置で次に検知される第２の入力操作を予測し、予測した第２の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第２の画面データを生成する。また、処理部は、端末装置で次の入力操作が検知される前に、生成された第２の画面データを第２の入力操作を示す操作情報とともに、端末装置に送信する。
【００１１】
また、１つの案では、上記端末装置と上記情報処理装置とを有する情報処理システムが提供される。
また、１つの案では、上記端末装置により実現する表示制御方法が提供される。
【００１２】
さらに、１つの案では、上記端末装置と同様の処理を実行する表示制御プログラムが提供される。
【発明の効果】
【００１３】
一側面では、端末装置への入力操作に対応する画面表示の遅延を抑制できる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の端末装置の構成例および処理例を示す図である。
【図２】第２の実施の形態の表示制御システムの例を示す図である。
【図３】サーバ装置のハードウェア構成例を示す図である。
【図４】投機実行しない場合の、入力操作に対応する処理の参考例を示す図である。
【図５】投機実行した場合の、入力操作に対応する処理の例を示す図である。
【図６】サーバ装置のプログラム単位での機能例を示すブロック図である。
【図７】サーバ装置および端末装置の機能例を示す図である。
【図８】領域管理テーブルの例を示す図である。
【図９】予測管理テーブルの例を示す図である。
【図１０】実行ＶＭ管理テーブルの例を示す図である。
【図１１】予測画面情報テーブルの例を示す図である。
【図１２】アプリケーションプログラムの起動直後の処理の例を示す図である。
【図１３】端末装置での入力操作後の処理の例を示す図である。
【図１４】制御仮想マシンにおける入力操作に対応する処理の例を示すフローチャートである。
【図１５】実行仮想マシンにおける入力操作に対応する処理の例を示すフローチャートである。
【図１６】リソースコピー処理の例を示すフローチャートである。である。
【図１７】端末装置による入力操作に対応する処理の例を示すフローチャートである。
【図１８】入力操作に対応する処理のシーケンス例を示す図である。
【図１９】入力操作に対応する処理のシーケンス例を示す図（続き１）である。
【図２０】入力操作に対応する処理のシーケンス例を示す図（続き２）である。
【図２１】入力操作に対応する処理のシーケンス例を示す図（続き３）である。
【図２２】入力操作の予測が正しくなかった場合の処理のシーケンス例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の端末装置の構成例および処理例を示す図である。端末装置２０は、検知された入力操作を示す操作情報を情報処理装置１０に送信し、その入力操作に応じた画面データを情報処理装置１０から受信して、受信した画面データに基づく画面を表示装置３０に表示させる装置である。なお、表示装置３０は、端末装置２０に内蔵されていてもよい。
【００１６】
端末装置２０は、記憶部２１および制御部２２を有する。
記憶部２１は、画面データを一時的に記憶する。
制御部２２は、情報処理装置１０で予測された次の入力操作に応じた画面データを、情報処理装置１０から受信して、記憶部２１に格納する。このとき、制御部２２は、例えば、予測された次の入力操作を示す操作情報が対応付けられた状態で、画面データを受信して記憶部２１に格納する。
【００１７】
また、制御部２２は、次の入力操作を検知したとき、当該次の入力操作が、情報処理装置１０によって予測された次の入力操作と一致した場合には、記憶部２１に格納された画面データに基づく画面を表示装置に表示させる。
【００１８】
例えば、情報処理装置１０から受信した画面データに基づいて、表示装置３０にある画面が表示されている。そして、記憶部２１には、情報処理装置１０で予測された入力操作を示す操作情報として、“↑キー”を押下する入力操作を示す操作情報が記憶され、画面データとして“画面データ＃１”が記憶されている。
【００１９】
この状態で、制御部２２が“↑キー”を押下する入力操作を検知した場合（ステップＳ１）、検知された入力操作は、記憶部２１に記憶されている操作情報が示す入力操作と一致する（ステップＳ２）。そのため、制御部２２は、記憶部２１から画面データ＃１を読み出して（ステップＳ３）、画面データ＃１に基づく画面＃１を表示装置３０に表示させる（ステップＳ４）。
【００２０】
ここで、端末装置２０が入力操作を検知する度に、検知された入力操作を示す操作情報を情報処理装置１０に送信し、送信した操作情報に応じた画面データを情報処理装置１０から受信し、受信した画面データに基づく画面を表示させる場合を考える。この場合、情報処理装置１０と端末装置２０との間の距離が長いほど、情報処理装置１０と端末装置２０との間の伝送遅延が大きくなり、各装置間での情報伝送に時間がかかる。そのため、少なくとも、情報処理装置１０と端末装置２０との間の伝送遅延の分、端末装置２０が入力操作を検知してから、画面の表示が切り替わるまでに時間がかかる。
【００２１】
これに対して、第１の実施の形態の端末装置２０は、予測された次の入力操作に応じた画面データを、次の入力操作が検知される前に情報処理装置１０から予め受信する。そして、次の入力操作が検知されたとき、検知された入力操作と予測された入力操作とが一致した場合は、予測された入力操作に対応する受信済みの画面データに基づいて、表示装置３０に画面を表示させる。このように、予測が正しかった場合には、次に表示させるべき画面を示す画面データが予め受信されて記憶部２１に記憶されているため、この画面データを受信するための情報処理装置１０と端末装置２０との間の通信が不要となる。よって、端末装置２０への入力操作から、その入力操作に対応する画面表示までの応答遅延を抑制できる。
【００２２】
［第２の実施の形態］
図２は、第２の実施の形態の表示制御システムの例を示す図である。第２の実施の形態の表示制御システムは、ユーザが操作する端末装置のデスクトップ環境がサーバ装置上で仮想的に実現され、端末装置に提供されるシステムである。第２の実施の形態の表示制御システムでは、サーバ装置上で生成された画面データに基づく画面を端末装置で表示させつつも、端末装置は、あたかも自分自身が主体となって処理を実行し、画面を表示させているかのように振る舞う。
【００２３】
第２の実施の形態の表示制御システムは、サーバ装置１００および端末装置２００を有する。サーバ装置１００は、第１の実施の形態の情報処理装置１０の一例である。端末装置２００は、第１の実施の形態の端末装置２０の一例である。サーバ装置１００は、端末装置２００とネットワーク４０を介して接続されている。
【００２４】
サーバ装置１００は、端末装置２００のデスクトップ環境を仮想的に実現するサーバコンピュータである。また、サーバ装置１００は、複数のサーバ装置により構成されていてもよい。
【００２５】
サーバ装置１００は、端末装置２００において検知された入力操作を示す操作情報を端末装置２００から受信し、受信した操作情報に対応する処理を実行し、その処理結果を含む画面の画面データを生成して、生成した画面データを端末装置２００へ送信する。ここで言う「操作情報に対応する処理」および「画面データの生成処理」とは、ユーザの利用対象のアプリケーションプログラムの実行により実現される処理である。すなわち、サーバ装置１００は、ユーザの利用対象のアプリケーションプログラムを、端末装置２００に代わって実行する。
【００２６】
また、サーバ装置１００は、端末装置２００に対するユーザの次の入力操作を予測する。以下、予測された次の入力操作を“予測入力操作”と記載する場合がある。
サーバ装置１００は、予測入力操作に対応する処理を実行し、その処理結果を含む画面の画面データを生成する。以下、予測入力操作に応じて生成された画面データを“予測画面データ”と記載する場合がある。サーバ装置１００は、予測画面データと、その予測入力操作を示す操作情報とを対応付けて端末装置２００へ送信する。以下、予測画面データと、予測入力操作を示す操作情報とを対応付けた情報を“予測画面情報”と呼ぶ。
【００２７】
なお、予測入力操作は複数予測されてもよい。この場合、サーバ装置１００は、予測された予測入力操作毎に予測画面情報を送信する。
端末装置２００は、ディスプレイを有する端末装置である。端末装置２００の一例としてノート型コンピュータが挙げられるが、携帯電話やタブレットＰＣ（Personal Computer）等の携帯端末であってもよいし、デスクトップ型コンピュータであってもよい。また、端末装置２００は、“シンクライアント端末”などの、デスクトップ仮想化技術に対応する専用端末であってもよい。
【００２８】
端末装置２００は、入力操作を検知したとき、検知された入力操作を示す操作情報をサーバ装置１００へ送信し、その送信に応じてサーバ装置１００から受信した画面データに基づく画面をディスプレイに表示させる。また、端末装置２００は、画面の表示後から次の入力操作を検知するまでの間に、１以上の予測画面情報をサーバ装置１００から予め受信する。
【００２９】
また、端末装置２００は、次の入力操作を検知したとき、検知された入力操作を示す操作情報をサーバ装置１００へ送信する。このとき、端末装置２００は、予め受信した予測画面情報のいずれかに、検知された入力操作を示す操作情報が含まれている場合、その入力操作に対応付けられている予測画面データに基づく画面をディスプレイに表示させる。
【００３０】
図３は、サーバ装置のハードウェア構成例を示す図である。サーバ装置１００は、プロセッサ１０１、ＲＡＭ（Random Access Memory）１０２、ＨＤＤ（Hard Disk Drive）１０３、画像信号処理部１０４、入力信号処理部１０５、ディスクドライブ１０６および通信インタフェース１０７を有する。これらのユニットは、サーバ装置１００内でバス１０８に接続されている。
【００３１】
プロセッサ１０１は、プログラムの命令を実行する演算器を含むプロセッサである。プロセッサ１０１は、ＨＤＤ１０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ１０２にロードしてプログラムを実行する。なお、プロセッサ１０１は複数のプロセッサコアを備えてもよい。また、サーバ装置１００は、複数のプロセッサを備えてもよい。また、サーバ装置１００は、複数のプロセッサまたは複数のプロセッサコアを用いて並列処理を行ってもよい。また、２以上のプロセッサの集合、ＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）等の専用回路、２以上の専用回路の集合、プロセッサと専用回路の組み合わせ等を「プロセッサ」と呼んでもよい。
【００３２】
ＲＡＭ１０２は、プロセッサ１０１が実行するプログラムやプログラムから参照されるデータを一時的に記憶する揮発性メモリである。なお、サーバ装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個の揮発性メモリを備えてもよい。
【００３３】
ＨＤＤ１０３は、ＯＳ（Operating System）やファームウェアやアプリケーションプログラム等のプログラムおよびデータを記憶する不揮発性の記憶装置である。なお、サーバ装置１００は、フラッシュメモリ等の他の種類の記憶装置を備えてもよく、複数個の不揮発性の記憶装置を備えてもよい。
【００３４】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、サーバ装置１００に接続されたディスプレイ４１に画像を出力する。ディスプレイ４１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイ等を用いることができる。
【００３５】
入力信号処理部１０５は、サーバ装置１００に接続された入力デバイス４２から入力信号を取得し、プロセッサ１０１に通知する。入力デバイス４２としては、マウスやタッチパネル等のポインティングデバイス、キーボード等を用いることができる。
【００３６】
ディスクドライブ１０６は、記録媒体４３に記録されたプログラムやデータを読み取る駆動装置である。記録媒体４３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤ等の磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）等の光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。ディスクドライブ１０６は、プロセッサ１０１からの命令に従って、記録媒体４３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３７】
通信インタフェース１０７は、ネットワーク４０等のネットワークを介して他の情報処理装置（例えば、端末装置２００等）と通信を行う。
なお、サーバ装置１００はディスクドライブ１０６を備えていなくてもよく、専ら他の情報処理装置からアクセスされる場合には、画像信号処理部１０４や入力信号処理部１０５を備えていなくてもよい。また、ディスプレイ４１や入力デバイス４２は、サーバ装置１００の筐体と一体に形成されていてもよい。
【００３８】
なお、端末装置２００も、サーバ装置１００と同様のハードウェアを用いて実現できる。
次に、第２の実施の形態の表示制御システムによる表示制御の概要について説明する。始めに図４を用いて、表示制御の参考例について説明し、その後に図５を用いて、参考例における問題点が改善された本実施の形態での表示制御について説明する。なお、図４〜５では、端末装置で検知された入力操作Ｂ１に応じて、画面データＡに基づく画面から画面データＡ１に基づく画面に、端末装置の画面表示を切替える処理について説明する。
【００３９】
図４は、投機実行しない場合の、入力操作に対応する処理の参考例を示す図である。以下、図４に示す処理をステップ番号に沿って説明する。
まず、サーバ装置１００ａは、画面データＡを生成して端末装置２００ａへ送信する。端末装置２００ａは、画面データＡを受信する（ステップＳ１１）。
【００４０】
次に、サーバ装置１００ａは、端末装置２００ａから入力操作を示す操作情報を受信するのを待つ入力操作待ちの状態となる（ステップＳ１２）。一方、端末装置２００ａは、受信した画面データＡに基づく画面をディスプレイに表示させる（ステップＳ１３）。
【００４１】
次に、端末装置２００ａは、入力操作Ｂ１を検知する（ステップＳ１４）。端末装置２００ａは、検知された入力操作Ｂ１を示す操作情報をサーバ装置１００ａへ送信する。サーバ装置１００ａは、入力操作Ｂ１を示す操作情報を受信する（ステップＳ１５）。
【００４２】
次に、サーバ装置１００ａは、受信した操作情報に対応する処理を実行し、その処理の実行により生成された画面データＡ１を端末装置２００ａへ送信する。端末装置２００ａは、画面データＡ１を受信する（ステップＳ１８）。そして、端末装置２００ａは、受信した画面データＡ１に基づく画面をディスプレイに表示する（ステップＳ１９）。
【００４３】
図５は、投機実行した場合の、入力操作に対応する処理の例を示す図である。以下、図５に示す処理をステップ番号に沿って説明する。
まず、サーバ装置１００は、画面データＡを生成して端末装置２００へ送信する。端末装置２００は、画面データＡを受信する（ステップＳ２１）。端末装置２００は、受信した画面データＡに基づく画面をディスプレイに表示させる（ステップＳ２２）。
【００４４】
このとき、サーバ装置１００は、端末装置２００から次の入力操作を示す操作情報を受信する前に、次の入力操作を予測し、予測された予測入力操作Ｂ１に対応する処理を実行する（ステップＳ２３）。すると、処理の実行により予測画面データＡ１が生成される（ステップＳ２４）。そして、サーバ装置１００は、生成された予測画面データＡ１と、予測された予測入力操作Ｂ１を示す操作情報とを対応付けた予測画面情報を端末装置２００へ送信する。端末装置２００は、予測画面情報を受信する（ステップＳ２５）。受信された予測画面情報は、一時的に端末装置２００の有する記憶領域に格納される。このとき、サーバ装置１００は、端末装置２００から入力操作を示す操作情報を受信するのを待つ入力操作待ちの状態となる（ステップＳ２６）。
【００４５】
そして、端末装置２００は、入力操作Ｂ１を検知し（ステップＳ２７）、検知された入力操作Ｂ１を示す操作情報をサーバ装置１００へ送信する(ステップＳ２８)。このとき、端末装置２００は、サーバ装置１００による次の入力操作の予測が正しかったかを判定する。図５の例では、ステップＳ２５で受信された予測画面情報によって示される予測入力操作Ｂ１と、検知された入力操作Ｂ１とが一致するため、予測が正しかったと判定される。この場合、端末装置２００は、予測入力操作Ｂ１に対応する予測画面データＡ１に基づく画面をディスプレイに表示する（ステップＳ２９）。
【００４６】
ここで、図４に示す処理では、端末装置２００ａが入力操作Ｂ１を検知してから、画面データＡ１に基づく画面を表示するまでの間に、ステップＳ１５〜ステップＳ１９までの処理の実行時間がかかる。この時間には、ステップＳ１５での情報伝送に要する時間と、ステップＳ１８での情報伝送に要する時間とが含まれる。これらの伝送時間は、サーバ装置１００ａと端末装置２００ａとの間の物理的な伝送路の距離が長くなるほど、長くなる。例えば、日本と欧州との間の通信では、往復で数百ミリ秒程度の伝送遅延が生じる場合がある。このように、端末装置２００ａがサーバ装置１００ａから物理的に離れた位置にあるほど、ユーザが入力操作を行ってから、その入力操作に応じた画面が表示されるまでの応答時間が増大し、応答性能が悪化するという問題があった。
【００４７】
この応答性能を改善する一つの方法としては、伝送される画面データを圧縮してデータ量を低減する方法がある。しかしながら、この方法でも、通信距離に基づく伝送遅延は低減されない。
【００４８】
これに対して、図５に示す本実施の形態の処理では、端末装置２００が入力操作Ｂ１を検知してから、画面データＡ１に基づく画面を表示するまでの時間は、ステップＳ２９の処理を実行する時間のみで済む。すなわち、図５に示す処理は、入力操作の検知から画面表示までの時間が、入力操作Ｂ１を示す操作情報を送信してから画面データＡ１を受信するまでの間の時間分、図４に示す処理と比べ短縮されることとなる。そして、この短縮される時間には、操作情報の送信に要していた時間と、画面データＡ１の送信に要していた時間とが含まれる。
【００４９】
このように、第２の実施の形態の表示制御システムでは、サーバ装置１００が次の入力操作を予測し、予測された予測入力操作に対応する処理を実行する。以下、予測入力操作に対応するサーバ装置１００での処理を“投機処理”と記載する場合があり、投機処理を実行することを“投機実行”と記載する場合がある。
【００５０】
そして、端末装置２００は、サーバ装置１００が予測した予測入力操作を示す操作情報と、投機処理の実行により生成された予測画面データとを対応付けて、次の入力操作前に予め記憶する。そして、端末装置２００が予め記憶した予測入力操作によって示される入力操作を検知したとき、予め記憶した予測画面データに基づく画面をディスプレイに表示する。これにより、入力操作の予測が正しかった場合に、入力操作を検知してから画面表示が切り替わるまでの時間が短縮される。
【００５１】
ところで、サーバ装置１００は、端末装置２００で実際に検知された入力操作に応じた処理と、予測された予測入力操作に応じた処理（投機処理）とを実行する。さらに、サーバ装置１００は、互いに異なる複数の予測入力操作を予測し、予測したそれぞれの予測入力操作に応じた投機処理を実行してもよい。
【００５２】
そこで、本実施の形態では、サーバ装置１００上で複数の仮想マシンを動作させ、実際に検知された入力操作に応じた処理と、それぞれ異なる予測入力操作に応じた複数の投機処理の１つ１つを、それぞれ個別の仮想マシンに実行させる。以下、これらの仮想マシンのそれぞれを“実行仮想マシン”と記載する場合がある。
【００５３】
さらに、本実施の形態では、これら複数の実行仮想マシンを、別の仮想マシンによって統括的に制御させる。以下、実行仮想マシンを制御する仮想マシンを“制御仮想マシン”と記載する場合がある。
【００５４】
図６は、サーバ装置のプログラム単位での機能例を示すブロック図である。サーバ装置１００は、コンピュータの仮想化を実現する機能を有する。サーバ装置１００では、制御仮想マシン１１０および複数の実行仮想マシン１２０が動作する。また、サーバ装置１００は、ハイパーバイザ１３０およびハードウェア層１４０を有する。
【００５５】
ハードウェア層１４０は、プロセッサ１０１の演算リソースやＲＡＭ１０２の記憶リソース等、制御仮想マシン１１０や複数の実行仮想マシン１２０に提供されるリソースを制御する。ハードウェア層１４０の処理は、例えば、サーバ装置１００のプロセッサ１０１がリソース毎のドライバプログラムを実行することで実現される。
【００５６】
ハイパーバイザ１３０の処理は、例えば、サーバ装置１００のプロセッサ１０１がハイパーバイザプログラムを実行することで実現される。
ハイパーバイザ１３０は、制御仮想マシン１１０および複数の実行仮想マシン１２０を構築し、それらを制御する。その際に、ハイパーバイザ１３０は、制御仮想マシン１１０および複数の実行仮想マシン１２０にリソースを割り振る。また、ハイパーバイザ１３０は、制御仮想マシン１１０および実行仮想マシン１２０の間の通信を中継する。
【００５７】
また、ハイパーバイザ１３０は、ある仮想マシンから他の仮想マシンへ、リソースの状態をコピーする機能を有する。これにより、例えば、ある実行仮想マシン１２０のリソースの状態と、他の実行仮想マシン１２０のリソースの状態とを一致させることができる。以下、このような機能を、“リソースコピー”と記載する場合がある。
【００５８】
また、リソースコピーの対象となるリソースとしては、例えば、各仮想マシンに割り当てられるメモリ領域がある。この場合、リソースコピーとは、ある仮想マシンに割り当てられたメモリ領域の内容を、他の仮想マシンに割り当てられたメモリ領域にコピーすることを指す。
【００５９】
実行仮想マシン１２０は、アプリケーションプログラムを端末装置２００に代わって実行する仮想マシンである。実行仮想マシン１２０は、アプリケーションプログラムの実行により、端末装置２００で検知された入力操作、またはサーバ装置１００で予測された予測入力操作に対応する処理を実行し、実行結果を含む画面の画像データを生成する。
【００６０】
実行仮想マシン１２０は、通常状態および投機状態のいずれかの状態をとる。通常状態は、端末装置２００から操作情報を受信したときに、その操作情報に対応する処理を実行仮想マシン１２０が実行する状態である。投機状態は、予測された予測入力操作に応じた投機処理を実行仮想マシン１２０が実行する状態である。
【００６１】
複数の実行仮想マシン１２０のうち、１つのみが通常状態となり、その他はすべて投機状態となる。従って、実行仮想マシン１２０は、サーバ装置１００上に少なくとも２台構築される。また、実行仮想マシン１２０の台数は、予測入力操作の予測数によって決まる。本実施の形態では、例として予測入力操作を２つ予測するものとする。この場合、実行仮想マシン１２０は３台構築される。
【００６２】
実行仮想マシン１２０は、オペレーティングシステム１２１、管理ＡＰＬ（Application）１２２およびユーザＡＰＬ１２３を有する。
オペレーティングシステム１２１の処理は、実行仮想マシン１２０上でゲストＯＳプログラムが実行されることで実現される。オペレーティングシステム１２１は、ハイパーバイザ１３０から論理的に割り振られたリソースを管理し、アプリケーションプログラムの実行をスケジューリングする。
【００６３】
管理ＡＰＬ１２２の処理は、実行仮想マシン１２０上で所定の管理アプリケーションプログラムが実行されることで実現される。管理ＡＰＬ１２２は、制御仮想マシン１１０の要求により、自己が属する実行仮想マシン１２０の状態を切替える。具体的には、管理ＡＰＬ１２２は、制御仮想マシン１１０から状態の変更を要求されると、現在の状態が通常状態の場合は投機状態に変更し、現在の状態が投機状態の場合は通常状態に変更する。
【００６４】
なお、以下の説明では、各処理ブロック自身が属する実行仮想マシン１２０の状態のことを、単に“自己の状態”と記載する場合がある。
管理ＡＰＬ１２２は、自己の状態が通常状態の場合、端末装置２００で検知された入力操作を示す操作情報を制御仮想マシン１１０から受信し、受信した操作情報に対応する処理をユーザＡＰＬ１２３に実行させる。そして、管理ＡＰＬ１２２は、ユーザＡＰＬ１２３から出力された画面データを、制御仮想マシン１１０を介して端末装置２００に送信する。
【００６５】
一方、管理ＡＰＬ１２２は、自己の状態が投機状態の場合、制御仮想マシン１１０から予測入力操作を示す操作情報を受信し、受信した操作情報に対応する処理（投機処理）をユーザＡＰＬ１２３に実行させる。そして、管理ＡＰＬ１２２は、ユーザＡＰＬ１２３から出力された画面データと、対応する予測入力操作を示す操作情報とを含む予測画面情報を生成して、制御仮想マシン１１０を介して端末装置２００に送信する。
【００６６】
なお、実行仮想マシン１２０は、画面データまたは予測画面情報を、制御仮想マシン１１０を経由せずに直接端末装置２００へ送信してもよい。
ユーザＡＰＬ１２３の処理は、実行仮想マシン１２０上で、ユーザの利用対象のアプリケーションプログラムが実行されることで実現される。ユーザＡＰＬ１２３は、制御仮想マシン１１０から入力操作を示す操作情報を受信し、受信した操作情報に対応する処理を実行する。また、ユーザＡＰＬ１２３は、処理の実行により生成された画面データを、制御仮想マシン１１０を経由して端末装置２００へ送信する。
【００６７】
ここで、実行仮想マシン１２０が投機状態の場合、制御仮想マシン１１０からユーザＡＰＬ１２３へ予測操作情報が送信される。この場合、ユーザＡＰＬ１２３は、予測操作情報に応じた投機処理を実行することになる。
【００６８】
制御仮想マシン１１０は、複数の実行仮想マシン１２０を制御する仮想マシンである。制御仮想マシン１１０は、オペレーティングシステム１１１およびＶＭ（Virtual Machine）制御ＡＰＬ１１２を有する。オペレーティングシステム１１１は、オペレーティングシステム１２１と同様の機能を有する。
【００６９】
ＶＭ制御ＡＰＬ１１２の処理は、制御仮想マシン１１０上で所定のＶＭ制御アプリケーションプログラムが実行されることで実現される。
ＶＭ制御ＡＰＬ１１２は、端末装置２００で検知される次の入力操作を予測する。予測入力操作の数は、１でもよいし、２以上でもよい。本実施の形態では、予測入力操作の数は２であるものとする。また、ＶＭ制御ＡＰＬ１１２は、予測された互いに異なる予測入力操作に対応する処理を、投機状態である実行仮想マシン１２０それぞれに投機実行させる。
【００７０】
また、ＶＭ制御ＡＰＬ１１２は、端末装置２００で検知された入力操作を示す操作情報を、端末装置２００から受信する。ＶＭ制御ＡＰＬ１１２は、受信した操作情報に対応する処理をすでに投機実行した実行仮想マシン１２０が存在するか判定することで、予測が正しかったかを判断する。
【００７１】
受信した操作情報に対応する処理を投機実行した実行仮想マシン１２０が存在する場合、ＶＭ制御ＡＰＬ１１２は、まず、通常状態である実行仮想マシン１２０と、その投機実行した実行仮想マシン１２０とに、仮想マシンの状態を変更するよう要求する。
【００７２】
ＶＭ制御ＡＰＬ１１２は、受信した操作情報に対応する処理を投機実行した実行仮想マシン１２０が存在しない場合、通常状態である実行仮想マシン１２０に受信した操作情報に対応する処理を実行させる。
【００７３】
また、ＶＭ制御ＡＰＬ１１２は、通常状態に変更された実行仮想マシン１２０からリソースコピーするよう、投機状態である各実行仮想マシン１２０へ要求する。
また、ＶＭ制御ＡＰＬ１１２は、実行仮想マシン１２０から端末装置２００への、画面データや予測画面情報の送信を中継する。
【００７４】
図７は、サーバ装置および端末装置の機能例を示す図である。制御仮想マシン１１０は、ＶＭ制御ＡＰＬ１１２、予測情報記憶部１１３および制御情報記憶部１１４を有する。ＶＭ制御ＡＰＬ１１２は、予測制御部１１５、実行ＶＭ制御部１１６およびデータ中継部１１７を有する。
【００７５】
予測情報記憶部１１３および制御情報記憶部１１４は、サーバ装置１００が備えるＲＡＭ１０２やＨＤＤ１０３に確保された記憶領域として実現できる。予測制御部１１５、データ中継部１１７および実行ＶＭ制御部１１６は、サーバ装置１００が備えるプロセッサ１０１が実行するプログラムのモジュールとして実現できる。
【００７６】
予測情報記憶部１１３は、予測管理テーブルを記憶する。予測管理テーブルは、デスクトップに表示される画面のＩＤ毎に、検知される入力操作に対応する処理の頻度に関する情報を格納するテーブルである。また、予測情報記憶部１１３は、ある画面に対する入力操作を示す操作情報と、その入力操作に応じて次に表示される画面のＩＤとを対応付けた画面遷移情報を記憶していてもよい。
【００７７】
制御情報記憶部１１４は、各実行仮想マシン１２０を管理するための情報を格納した実行ＶＭ管理テーブルを記憶する。実行ＶＭ管理テーブルには、各実行仮想マシン１２０の状態を示す情報、通常状態の実行仮想マシン１２０に通知された入力操作を示す操作情報、投機状態の各実行仮想マシン１２０に通知された予測入力操作を示す操作情報などが含まれる。
【００７８】
予測制御部１１５は、実行ＶＭ制御部１１６の要求に応じて、端末装置２００に表示中の画面に対応する画面ＩＤや、予測管理テーブルに格納された頻度情報等に基づいて、次の入力操作を予測する。表示中の画面に対応する画面ＩＤ（すなわち、通常状態の実行仮想マシン１２０が直近に生成した画面データに対応する画面ＩＤ）は、実行ＶＭ管理テーブルに登録されている。また、予測制御部１１５は、予測された予測入力操作で、実行ＶＭ管理テーブルを更新する。
【００７９】
実行ＶＭ制御部１１６は、予測制御部１１５による予測が正しかったかを判定する。具体的には、実行ＶＭ制御部１１６は、実行ＶＭ管理テーブルを参照し、データ中継部１１７が端末装置２００から受信した操作情報に対応する処理を、実行仮想マシン１２０のいずれかが投機実行済みか判定する。
【００８０】
いずれかの実行仮想マシン１２０が投機実行済みの場合、まず、実行ＶＭ制御部１１６は、その投機実行済みである実行仮想マシン１２０を通常状態に変更し、通常状態である実行仮想マシン１２０を投機状態に変更するよう要求する。
【００８１】
また、いずれの実行仮想マシン１２０も投機実行済みでない場合、すなわち、すべての入力操作の予測が間違っていた場合には、実行ＶＭ制御部１１６は、受信した操作情報を通常状態である実行仮想マシン１２０へ送信する。
【００８２】
また、実行ＶＭ制御部１１６は、通常状態に変更された実行仮想マシン１２０からリソースコピーするよう、投機状態である各実行仮想マシン１２０へ要求する。
さらに、実行ＶＭ制御部１１６は、予測制御部１１５により予測された予測入力操作を示す操作情報のそれぞれを、投機状態である各実行仮想マシン１２０へ送信する。このとき、実行ＶＭ制御部１１６は、実行仮想マシン１２０にそれぞれ異なる予測入力操作を示す操作情報を送信する。
【００８３】
実行ＶＭ制御部１１６は、通常状態である実行仮想マシン１２０から画面データを受信し、受信した画面データをデータ中継部１１７を介して端末装置２００に送信する。このとき、実行ＶＭ制御部１１６は、受信した画面データに対応する画面ＩＤを実行ＶＭ管理テーブルに登録する。
【００８４】
また、実行ＶＭ制御部１１６は、投機状態である実行仮想マシン１２０から予測画面情報を受信し、受信した予測画面情報をデータ中継部１１７を介して端末装置２００に送信する。このとき、実行ＶＭ制御部１１６は、受信した予測画面情報に含まれる予測画面データおよび予測入力操作を示す操作情報を実行ＶＭ管理テーブルに登録する。
【００８５】
データ中継部１１７は、端末装置２００から入力操作を示す操作情報を受信する。また、データ中継部１１７は、実行ＶＭ制御部１１６が受信した画面データまたは予測画面情報を端末装置２００へ転送する。データ中継部１１７は、端末装置２００へ画面データまたは予測画面情報を転送する際、予測画面情報を所定の圧縮方式で圧縮してから転送する。
【００８６】
ここで、画面データや、予測画面情報に含まれる予測画面データは、データの容量が大きいため、データ中継部１１７と端末装置２００との間の通信に時間がかかる場合がある。そこで、これらのデータを圧縮して転送することで、データ中継部１１７と端末装置２００との間の通信データの容量が軽減され、データ中継部１１７と端末装置２００との間の通信にかかる時間が短縮される。
【００８７】
なお、圧縮方式には、ＪＰＥＧ（Joint Photographic Experts Group）方式、ＧＩＦ（Graphics Interchange Format）方式、ＰＮＧ（Portable Network Graphics）方式等があり、データ中継部１１７はいずれの圧縮方式に対応してもよい。また、例えば、表示中の画面と、次に表示させる画面との差分に対応する画像データのみが送信されるような圧縮方式が用いられてもよい。
【００８８】
実行仮想マシン１２０は、管理ＡＰＬ１２２、ユーザＡＰＬ１２３および実行状態記憶部１２４を有する。管理ＡＰＬ１２２は、管理部１２５を有し、ユーザＡＰＬ１２３は、処理実行部１２６を有する。実行状態記憶部１２４は、サーバ装置１００が備えるＲＡＭ１０２やＨＤＤ１０３に確保された記憶領域として実現できる。管理部１２５および処理実行部１２６は、サーバ装置１００が備えるプロセッサ１０１が実行するプログラムのモジュールとして実現できる。
【００８９】
実行状態記憶部１２４は、実行仮想マシン１２０の状態を示す情報を記憶する。状態は、通常状態と投機状態のいずれかである。通常状態である実行仮想マシン１２０は１台のみで、他の実行仮想マシン１２０は投機状態となる。
【００９０】
管理部１２５は、入力操作を示す操作情報または予測入力操作を示す操作情報を制御仮想マシン１１０から受信する。管理部１２５は、受信した操作情報に対応する処理を処理実行部１２６に実行させ、処理の結果生成された画面データを処理実行部１２６から取得する。
【００９１】
また、管理部１２５は、自己の状態が通常状態の場合、処理実行部１２６が生成した画面データを、制御仮想マシン１１０を経由して端末装置２００へ送信する。自己の状態が投機状態の場合、管理部１２５は、処理実行部１２６が生成した画面データと、予測入力操作を示す操作情報とを対応付けた予測画面情報を、制御仮想マシン１１０を経由して端末装置２００へ送信する。
【００９２】
また、管理部１２５は、制御仮想マシン１１０からのリソースコピー要求に応じて、ハイパーバイザ１３０を用いて、通常状態の実行仮想マシン１２０から自仮想マシンへリソースコピーする。
【００９３】
処理実行部１２６は、管理部１２５が受信した操作情報に対応する処理を実行することで、画面データを生成する。
端末装置２００は、予測画面情報記憶部２１０および表示制御部２２０を有する。予測画面情報記憶部２１０は、端末装置２００が備えるＲＡＭやＨＤＤに確保された記憶領域として実現できる。表示制御部２２０は、端末装置２００が備えるプロセッサが実行するプログラムのモジュールとして実現できる。
【００９４】
予測画面情報記憶部２１０は、予測画面情報テーブルを記憶する。予測画面情報テーブルは、サーバ装置１００から受信した予測画面情報を一時的に格納するテーブルである。
表示制御部２２０は、１以上の予測画面情報をサーバ装置１００から受信する。予測画面情報は、所定の圧縮方式により圧縮されている。表示制御部２２０は、圧縮された予測画面情報を伸張し、伸張後の予測画面情報で予測画面情報テーブルを更新する。
【００９５】
また、表示制御部２２０は、ユーザによる入力操作を検知し、検知された入力操作を示す操作情報をサーバ装置１００へ送信する。また、表示制御部２２０は、検知された入力操作と一致する予測入力操作を示す操作情報が予測画面情報テーブルに含まれているか判定する。
【００９６】
一致する予測入力操作を示す操作情報が含まれている場合、表示制御部２２０は、一致した予測入力操作に対応する予測画面データに基づく画面をディスプレイに表示する。
一致する予測入力操作を示す操作情報が含まれていない場合、表示制御部２２０は、送信した入力操作に対応する画面データをサーバ装置１００から受信する。受信した画面データは、所定の圧縮方式により圧縮されている。表示制御部２２０は、圧縮された画面データを伸張し、伸張後の画面データに基づく画面をディスプレイに表示する。
【００９７】
なお、予測画面情報記憶部２１０は、記憶部２１の一例である。また、表示制御部２２０は、制御部２２の一例である。
次に、図８〜１１を用いて、表示制御システムが用いるテーブルについて説明する。
【００９８】
図８は、領域管理テーブルの例を示す図である。領域管理テーブル１３１は、各仮想マシンに割り当てられたリソースを管理するための情報の一つであり、各仮想マシンの使用する記憶領域に関する情報を格納したテーブルである。領域管理テーブル１３１は、ＲＡＭ１０２等の記憶領域に記憶されている。領域管理テーブル１３１に格納されている記憶領域に関する情報は、ハイパーバイザ１３０により管理される。領域管理テーブル１３１は、実行ＶＭおよび記憶領域の項目を有する。
【００９９】
実行ＶＭの項目には、実行仮想マシン１２０を識別するための識別子が設定される。記憶領域の項目には、実行仮想マシン１２０が使用する記憶領域を示す情報が格納される。記憶領域への設定値は、例えば、“１ページ〜１０００ページ”のように、ページ単位で設定されるが、アドレス単位で設定されてもよい。
【０１００】
なお、実行仮想マシン１２０が使用する記憶領域には、例えば、アプリケーションプログラムを実行する際のデータを格納する領域、仮想マシンがアプリケーションプログラムを実行する際のプログラムを格納する領域等が含まれる。さらに、その記憶領域には、仮想マシンがオペレーティングシステムを実行する際のデータを格納する領域および、実行仮想マシンがオペレーティングシステムを実行する際のプログラムを格納する領域等が含まれる。
【０１０１】
ハイパーバイザ１３０は、いずれかの実行仮想マシン１２０からリソースコピーが要求されたとき、領域管理テーブル１３１を参照することで、コピー元の実行仮想マシン１２０に割り当てられたどの実記憶領域の内容を、コピー先の実行仮想マシン１２０に割り当てられたどの実記憶領域にコピーすればよいか、判断することができる。
【０１０２】
図９は、予測管理テーブルの例を示す図である。予測管理テーブル１１３ａは、デスクトップに表示される画面の種別毎に、検知された入力操作の頻度に関する情報を格納するテーブルである。予測管理テーブル１１３ａは、デスクトップ上で実行されるアプリケーションプログラム毎に、予測情報記憶部１１３に記憶されている。ここで言うアプリケーションプログラムとは、ユーザＡＰＬ１２３の処理を実現するプログラムである。なお、アプリケーションプログラム毎の予測管理テーブル１１３ａは、さらに、それらのアプリケーションプログラムを利用するユーザ毎に記憶される。
【０１０３】
予測管理テーブル１１３ａは、画面ＩＤ、初回入力操作および頻度の項目を有する。
画面ＩＤの項目には、アプリケーションプログラムの実行により生成され、端末装置２００に表示される画面の種別を識別するための画面ＩＤが設定される。画面ＩＤによって識別される画面とは、それぞれ予め決められた１つ以上のエレメントが決められた位置に配置された画面である。エレメントとしては、例えば、操作部品、処理結果表示領域などがある。
【０１０４】
操作部品は、マウスクリックなどによる指示操作を受け付ける領域である。すなわち、画面上のある操作部品の領域に対して指示操作が行われることで、その操作部品に対応する処理が実行される。
【０１０５】
また、操作部品のうちの少なくとも一部については、操作部品への操作の代わりに所定のキー操作を行うことで、同じ処理が行われるものもある。すなわち、画面ＩＤによって識別される画面には、受け付け可能なキー操作が予め対応付けられている。
【０１０６】
処理結果表示領域には、直前に検知された入力操作に応じた処理結果が表示される。例えば、アプリケーションプログラムの実行時（すなわち、ユーザＡＰＬ１２３の処理実行部１２６の処理時）に入力操作が行われると、いずれかの画面ＩＤが選択され、選択された画面ＩＤに対応するエレメントが所定の位置に配置されて描画されるとともに、処理結果表示領域に処理結果が描画される。これにより、端末装置２００に表示させる画面の画面データが生成される。
【０１０７】
画面ＩＤによって識別される画面の種別には、例えば、メイン画面や、各種の設定画面がある。設定画面が複数種類存在する場合、それぞれの設定画面に個別の画面ＩＤが付与される。
【０１０８】
例えば、文書表示プログラムの場合、プログラムの起動によりメイン画面が表示される。メイン画面には、表示された文書のスクロールや拡大、縮小、各種設定などのための操作部品が配置される。また、メイン画面には、文書が表示される処理結果表示領域が含まれる。
【０１０９】
メイン画面上の操作部品への指示操作、あるいは所定のキー操作が行われた後には、メイン画面上の処理結果表示領域の表示のみが変化する場合と、設定画面などの他の種別の画面が表示される場合とがある。前者の場合、入力操作後にも表示される画面の画面ＩＤには変化がない。一方、後者の場合には、入力操作後に異なる画面ＩＤの画面が表示されることになる。
【０１１０】
予測管理テーブル１１３ａにおける初回入力操作の項目には、対応する種別の画面に対してユーザが行うことが可能な入力操作を示す操作情報が設定される。すなわち、初回入力操作の項目には、前述のように画面に対応付けられたキー操作や操作部品への操作を示す操作情報が設定される。また、初回入力操作の項目に対応する１つのレコードには、複数の操作情報が設定される場合もある。この場合、複数の操作情報がそれぞれ示す入力操作が行われた場合に、同じ処理が行われることを示す。
【０１１１】
例えば、図９の例において、検索処理を実行させるための入力操作には、“Ｃｔｒｌ”キーを押しながら“Ｆ”キーを押下する操作（“Ｃｔｒｌ＋Ｆ”と記載）と、“検索”の操作部品への指示操作とがある。そのため、検索処理に対応する入力操作を示す操作情報は、“Ｃｔｒｌ＋Ｆ，検索，・・・”となる。
【０１１２】
なお、初回入力操作の項目に設定される操作情報としては、実際には、キー操作の場合にはキーコードなどのキーの識別情報が設定され、操作部品の場合はその操作部品の表示領域を示す座標情報が設定される。この点は、サーバ装置１００と端末装置２００との間で送受信される操作情報についても同様である。
【０１１３】
予測管理テーブル１１３ａにおける頻度の項目には、対応する種別の画面が表示された状態において、対応する入力操作が検知された頻度を示す値が設定される。頻度を示す値としては、入力操作が検知された回数、または、同一種別の画面の表示時における入力操作の全検知回数に対する、対応する入力操作の検知回数の割合が設定される。頻度を示す情報は、予測制御部１１５が次の入力操作を予測する際に参照される。
【０１１４】
なお、予測管理テーブル１１３ａにおける初回入力操作の項目の設定値は、例えば、対象のアプリケーションプログラムを解析するための所定のプログラムの実行によって抽出されてもよい。あるいは、入力操作の設定値は、サーバ装置１００が新たな入力操作を示す操作情報を端末装置２００から受信する度に、登録されてもよい。後者の場合、予測管理テーブル１１３ａには、画面ＩＤ毎に、端末装置２００で実際に検知された入力操作を示す操作情報のみが登録される。
【０１１５】
また、予測管理テーブルには、例えば、同一種別の画面の表示時において、検知された入力操作と、その次に検知された入力操作との組み合わせ毎に、頻度を示す値が設定されてもよい。このような情報を用いて予測が行われることで、予測の精度が向上される。
【０１１６】
また、例えば、頻度の設定や予測の処理負荷を軽減するために、あるいは、サーバ装置１００に記憶するデータ量を減らすために、予測管理テーブルにはメイン画面などの１つの種別のみの画面に対応する操作情報および頻度を示す情報が設定されてもよい。
【０１１７】
図１０は、実行ＶＭ管理テーブルの例を示す図である。実行ＶＭ管理テーブル１１４ａは、各実行仮想マシン１２０を管理するための情報を格納したテーブルである。実行ＶＭ管理テーブル１１４ａは、制御情報記憶部１１４に記憶されている。実行ＶＭ管理テーブル１１４ａは、実行ＶＭ、状態、入力操作および画面ＩＤの項目を有する。
【０１１８】
実行ＶＭの項目には、実行仮想マシン１２０を識別するための識別子が設定される。
状態の項目には、実行仮想マシン１２０の状態を示す情報が設定される。例えば、状態の項目に“通常”が設定されている場合、実行仮想マシン１２０の状態が通常状態であることを示す。また、状態の項目に“投機”が設定されている場合、実行仮想マシン１２０の状態が投機状態であることを示す。
【０１１９】
入力操作の項目には、実行仮想マシン１２０が実行した投機処理に対応する操作情報が設定される。投機処理に対応する操作情報は、予測管理テーブル１１３ａの初回入力操作の項目と同様に（図９参照）、１以上の入力操作を示す操作情報で構成される。また、実行仮想マシン１２０が通常状態である場合、投機実行がされないため、入力操作の項目には、例えば、“ＮＵＬＬ”が設定される。
【０１２０】
画面ＩＤの項目には、実行仮想マシン１２０が直近に生成した画面の種別を示す画面ＩＤが記憶される。例えば、“画面＃１”は、画面ＩＤ“＃１”の画面であることを示す。
図１１は、予測画面情報テーブルの例を示す図である。予測画面情報テーブル２１１は、サーバ装置１００から受信した予測画面情報を一時的に格納するテーブルである。予測画面情報テーブル２１１は、予測画面情報記憶部２１０に記憶されている。予測画面情報テーブル２１１は、予測入力操作および予測画面データの項目を有する。
【０１２１】
予測入力操作の項目には、サーバ装置１００で予測された次の入力操作を示す操作情報、すなわち、実行仮想マシン１２０が投機実行した処理に対応する操作情報が設定される。投機実行した処理に対応する操作情報は、予測管理テーブル１１３ａの初回入力操作の項目と同様に（図９参照）、１以上の入力操作を示す操作情報で構成される。
【０１２２】
予測画面データの項目には、投機状態である実行仮想マシン１２０により生成された予測画面データのファイル名が設定される。予測画面データは、投機状態の実行仮想マシン１２０が投機処理を実行することで生成される。
【０１２３】
次に、図１２〜１３を用いて、実行仮想マシン１２０による表示制御について説明する。図１２〜１３の説明では、ユーザの利用対象のアプリケーションプログラムの初期画面の生成は、通常状態の実行仮想マシン１２０が行うものとする（以下、同様）。また、図１２〜１３の説明では、実行仮想マシン１２０は、識別子がＶＭ＃１、ＶＭ＃２およびＶＭ＃３であるものとする。以下、識別子がＶＭ＃１である実行仮想マシン１２０を“実行仮想マシン（ＶＭ＃１）”と記載する場合がある。また、図１２〜１３の説明では、制御仮想マシン１１０の処理の説明を省略する。
【０１２４】
図１２は、アプリケーションプログラムの起動直後の処理の例を示す図である。実行仮想マシン（ＶＭ＃１）は通常状態であり、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）は投機状態であるものとする。以下、図１２に示す処理をステップ番号に沿って説明する。
【０１２５】
通常状態である実行仮想マシン（ＶＭ＃１）は、初期画面の画面データＡを生成する（ステップＳ３１）。この状態で、通常状態である実行仮想マシン（ＶＭ＃１）から、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）へリソースの状態がコピーされる。例えば、実行仮想マシン（ＶＭ＃１）の記憶領域の内容が、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）の各記憶領域にコピーされる。これにより、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）も、実行仮想マシン（ＶＭ＃１）と同様に画面データＡが生成された状態となる（ステップＳ３１ａ，Ｓ３１ｂ）。
【０１２６】
また、実行仮想マシン（ＶＭ＃１）は、生成した画面データＡを端末装置２００へ送信後、入力操作待ちの状態となる（ステップＳ３２）。そして、端末装置２００は、受信した画面データＡに基づく画面をディスプレイに表示させる（ステップＳ３３）。
【０１２７】
投機状態である各実行仮想マシン１２０は、制御仮想マシン１１０から予測入力操作を示す操作情報を受信し、受信した操作情報に対応する処理を実行する。ここでは、実行仮想マシン（ＶＭ＃２）は、予測入力操作Ｂ１に対応する処理を実行し（ステップＳ３４）、実行仮想マシン（ＶＭ＃３）は、予測入力操作Ｂ２に対応する処理を実行したものとする（ステップＳ３４ａ）。
【０１２８】
すると、実行仮想マシン（ＶＭ＃２）は、予測入力操作Ｂ１に対応する処理の実行により、予測画面データＡ１を生成した状態となる（ステップＳ３５）。同様に、実行仮想マシン（ＶＭ＃３）は、予測入力操作Ｂ２に対応する処理の実行により、予測画面データＡ２を生成した状態となる（ステップＳ３５ａ）。
【０１２９】
そして、投機状態である各実行仮想マシン１２０は、生成した予測画面データを端末装置２００に送信する。その結果、端末装置２００には、予測画面データＡ１，Ａ２が格納された状態となる（ステップＳ３６）。
【０１３０】
図１３は、端末装置での入力操作後の処理の例を示す図である。図１２で説明したように、端末装置２００には、予測画面データＡ１，Ａ２が格納され（ステップＳ４１）、実行仮想マシン（ＶＭ＃１）は、画面データＡを生成した状態になっている（ステップＳ４１ａ）。また、実行仮想マシン（ＶＭ＃２）は、予測画面データＡ１を生成した状態になっており（ステップＳ４１ｂ）、実行仮想マシン（ＶＭ＃３）は、予測画面データＡ２を生成した状態になっている（ステップＳ４１ｃ）。
【０１３１】
この状態で、端末装置２００は、入力操作Ｂ１を検知したとする（ステップＳ４２）。この場合、実行仮想マシン（ＶＭ＃２）が実行した予測入力操作Ｂ１と、検知された入力操作Ｂ１とが一致するため、端末装置２００は、予測入力操作Ｂ１に対応する予測画面データＡ１に基づく画面をディスプレイに表示する（ステップＳ４３）。
【０１３２】
次に、実行仮想マシン（ＶＭ＃１）の状態が投機状態に変更され（ステップＳ４４）、実行仮想マシン（ＶＭ＃２）の状態が通常状態に変更される（ステップＳ４４ａ）。
そして、通常状態に変更された実行仮想マシン（ＶＭ＃２）から、投機状態である各実行仮想マシン１２０へリソースの状態がコピーされる。その結果、実行仮想マシン（ＶＭ＃１）および実行仮想マシン（ＶＭ＃３）は、実行仮想マシン（ＶＭ＃２）と同様に、画面データＡ１を生成した状態となる（ステップＳ４５，Ｓ４５ａ）。
【０１３３】
図１２〜１３で説明したように、投機状態である複数の実行仮想マシン１２０に、複数の投機処理を並列して実行させることで、複数の投機処理を高速化できる。また、通常状態である実行仮想マシン１２０から、投機状態である実行仮想マシン１２０へリソースの状態をコピーすることで、投機処理を実行するための環境を容易に生成できる。
【０１３４】
次に、図１４〜１７を用いて、入力操作に対応する処理の手順について説明する。
図１４は、制御仮想マシンにおける入力操作に対応する処理の例を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１３５】
（ステップＳ１１１）実行ＶＭ制御部１１６は、各実行仮想マシン１２０の状態を初期設定する。具体的には、実行ＶＭ制御部１１６は、１台の実行仮想マシン１２０に通常状態に設定するよう要求し、他の実行仮想マシン１２０に投機状態に設定するよう要求する。
【０１３６】
また、実行ＶＭ制御部１１６は、通常状態に設定するよう要求した実行仮想マシン１２０の識別子と一致するレコードを実行ＶＭ管理テーブル１１４ａから検索し、検索されたレコードの状態の項目に“通常”を登録する。また、実行ＶＭ制御部１１６は、投機状態に設定するよう要求した各実行仮想マシン１２０の識別子と一致するレコードを実行ＶＭ管理テーブル１１４ａから検索し、検索された各レコードの状態の項目に“投機”を登録する。
【０１３７】
（ステップＳ１１２）データ中継部１１７は、ユーザＡＰＬ１２３に対応するアプリケーションプログラムの起動要求を端末装置２００から受信する。実行ＶＭ制御部１１６は、受信されたアプリケーション起動要求を、通常状態である実行仮想マシン１２０に転送する。
【０１３８】
（ステップＳ１１３）実行ＶＭ制御部１１６は、通常状態である実行仮想マシン１２０から初期画面の画面データを受信する。次に、実行ＶＭ制御部１１６は、受信した画面データに対応する画面ＩＤで実行ＶＭ管理テーブル１１４ａを更新する。具体的には、実行ＶＭ制御部１１６は、状態の項目が“通常”であるレコードを実行ＶＭ管理テーブル１１４ａから検索し、検索されたレコードの画面データの項目の値を、受信した画面データに対応する画面ＩＤで更新する。
【０１３９】
そして、データ中継部１１７は、受信された画面データを所定の圧縮方式で圧縮して端末装置２００へ転送する。
（ステップＳ１１４）実行ＶＭ制御部１１６は、リソースコピー要求を投機状態である各実行仮想マシン１２０へ送信する。リソースコピー要求には、コピー元となる通常状態の実行仮想マシン１２０の識別子が含まれる。通常状態の実行仮想マシン１２０の識別子は、状態の項目に“通常”が設定されているレコードを実行ＶＭ管理テーブル１１４ａから検索し、検索されたレコードから実行仮想マシン１２０の識別子を読み取ることで得られる。そして、実行ＶＭ制御部１１６は、投機状態であるすべての実行仮想マシン１２０からコピー完了通知を受信するまで待機する。
【０１４０】
（ステップＳ１１５）予測制御部１１５は、次のように、予測入力操作を予測する。
まず、予測制御部１１５は、実行仮想マシン１２０が生成した画面データに対応する画面ＩＤを取得する。具体的には、実行ＶＭ管理テーブル１１４ａから状態の項目が“通常”であるレコードを検索し、検索されたレコードから画面ＩＤを取得する。次に、予測制御部１１５は、予測管理テーブル１１３ａから、取得した画面ＩＤが設定されたレコードを検索する。次に、予測制御部１１５は、検索されたレコードのうち、頻度の高い順から２つのレコードを選択し、選択された各レコードに格納されている入力操作を予測入力操作として予測する。
【０１４１】
次に、予測制御部１１５は、予測管理テーブル１１３ａについて、予測された各入力操作の頻度を更新する。具体的には、予測制御部１１５は、予測された２つの予測入力操作のそれぞれが設定されているレコードを予測管理テーブル１１３ａから検索し、検索された各レコードの頻度の値をインクリメントする。
【０１４２】
そして、実行ＶＭ制御部１１６は、予測された２つの予測入力操作を示す操作情報を、投機状態である各実行仮想マシン１２０に１つずつ送信する。このとき、各実行仮想マシン１２０にはそれぞれ異なる操作情報が送信される。
【０１４３】
なお、予測制御部１１５は、例えば、全入力操作の頻度の合計に対する各頻度の割合が閾値以上である各レコードの入力操作を、予測入力操作として予測してもよい。この場合、例えば、入力操作が１つだけしか予測されない場合がある。この場合には、予測制御部１１５は、投機状態の実行仮想マシン１２０のうちの１つだけに予測された入力操作を示す操作情報を送信し、投機処理を実行させる。一方、例えば、投機状態の実行仮想マシン１２０の数を動的に変更できるようにしてもよい。この場合、予測制御部１１５は、投機状態の実行仮想マシン１２０の数と、予測された入力操作の数とが一致するように実行仮想マシン１２０を制御する。
【０１４４】
（ステップＳ１１６）実行ＶＭ制御部１１６は、投機状態である各実行仮想マシン１２０から予測画面情報を受信する。
次に、実行ＶＭ制御部１１６は、予測画面情報の送信元の実行仮想マシン１２０の識別子が設定されたレコードを、実行ＶＭ管理テーブル１１４ａから検索する。次に、実行ＶＭ制御部１１６は、検索されたレコードの入力操作の項目の値を、予測入力操作を示す操作情報で更新する。予測入力操作を示す操作情報は、受信した予測画面情報に含まれる。また、実行ＶＭ制御部１１６は、検索されたレコードの画面ＩＤの項目を、予測画面情報に含まれる予測画面データに対応する画面ＩＤで更新する。
【０１４５】
そして、データ中継部１１７は、受信した予測画面情報を所定の圧縮方式で圧縮して端末装置２００へ転送する。
（ステップＳ１１７）データ中継部１１７は、検知された入力操作を示す操作情報を端末装置２００から受信する。
【０１４６】
（ステップＳ１１８）実行ＶＭ制御部１１６は、ステップＳ１１５での予測が正しかったかを判定する。具体的には、実行ＶＭ制御部１１６は、受信した操作情報を含むレコードが、実行ＶＭ管理テーブル１１４ａから検索されるか判定する。すなわち、データ中継部１１７は、受信した操作情報に対応する処理を実行した実行仮想マシン１２０が検索されるか判定する。
【０１４７】
実行仮想マシン１２０が検索された場合、すなわち、いずれかの入力操作の予測が正しかった場合には、処理をステップＳ１１９へ進める。実行仮想マシン１２０が検索されない場合、すなわち、いずれの入力操作の予測も間違っていた場合には、処理をステップＳ１２０へ進める。
【０１４８】
（ステップＳ１１９）実行ＶＭ制御部１１６は、通常状態である実行仮想マシン１２０へ状態変更要求を送信する。すると、通常状態である実行仮想マシン１２０の状態が投機状態へ変更される。また、実行ＶＭ制御部１１６は、状態の項目が“通常”であるレコードを実行ＶＭ管理テーブル１１４ａから検索し、検索されたレコードの状態の項目を“投機”に更新する。
【０１４９】
また、実行ＶＭ制御部１１６は、ステップＳ１１７で検知された、受信した操作情報に対応する処理を投機実行した実行仮想マシン１２０へ状態変更要求を送信する。すると、検索された実行仮想マシン１２０の状態が通常状態へ変更される。また、実行ＶＭ制御部１１６は、状態変更要求を送信した実行仮想マシン１２０の識別子と一致するレコードについて、状態の項目を“通常”に更新し、入力操作の項目を“ＮＵＬＬ”に更新する。
【０１５０】
（ステップＳ１２０）実行ＶＭ制御部１１６は、ステップＳ１１７で受信された操作情報を、通常状態である実行仮想マシン１２０に転送する。
（ステップＳ１２１）実行ＶＭ制御部１１６は、通常状態である実行仮想マシン１２０から画面データを受信する。
【０１５１】
次に、実行ＶＭ制御部１１６は、受信した画面データに対応する画面ＩＤで、実行ＶＭ管理テーブル１１４ａを次のように更新する。まず、実行ＶＭ制御部１１６は、状態の項目が“通常”であるレコードを実行ＶＭ管理テーブル１１４ａから検索し、検索されたレコードの画面ＩＤの項目を、受信した画面データに対応する画面ＩＤで更新する。
【０１５２】
そして、データ中継部１１７は、受信した画面データを所定の圧縮方式で圧縮して端末装置２００へ転送する。そして、処理をステップＳ１１４へ進める。
なお、ステップＳ１１３，Ｓ１１６，Ｓ１２１において、実行ＶＭ制御部１１６は、実行仮想マシン１２０から受信した画面データに対応する画面ＩＤを判別する。この判別方法としては、次のような方法がある。
【０１５３】
１つの方法としては、生成された画面データに対応する画面ＩＤを、実行仮想マシン１２０が実行ＶＭ制御部１１６に通知する方法がある。他の方法としては、実行ＶＭ制御部１１６自身が、実行仮想マシン１２０によって生成された画面データに対応する画面ＩＤを判別する方法がある。
【０１５４】
後者の方法では、例えば、制御仮想マシン１１０の制御情報記憶部１１４に、ある画面ＩＤで識別される画面に対応付けられた操作情報と、その操作情報が示す入力操作が行われたときに次に表示される画面の画面ＩＤとの対応テーブルが記憶される。この対応テーブルを参照することで、実行ＶＭ制御部１１６は、直近に端末装置２００に送信した画面データに対応する画面ＩＤと、端末装置２００で検知された入力操作または予測制御部１１５で予測された入力操作を示す操作情報とから、次に生成される画面データに対応する画面ＩＤを判別することができる。
【０１５５】
図１５は、実行仮想マシンにおける入力操作に対応する処理の例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
（ステップＳ１２１）管理部１２５は、入力操作を示す操作情報を制御仮想マシン１１０から受信する。受信する操作情報としては、端末装置２００で検知された入力操作を示す場合と、制御仮想マシン１１０で予測された予測入力操作を示す場合とがある。
【０１５６】
（ステップＳ１２２）処理実行部１２６は、受信した操作情報に対応する処理を実行する。その結果、端末装置２００のディスプレイに表示するための画面データが生成される。
【０１５７】
（ステップＳ１２３）管理部１２５は、自己の状態が通常状態であるか判定する。自己の状態を示す情報は、実行状態記憶部１２４を参照することで判定される。自己の状態が通常状態である場合、処理をステップＳ１２４へ進める。自己の状態が投機状態である場合、処理をステップＳ１２５へ進める。
【０１５８】
（ステップＳ１２４）管理部１２５は、生成された画面データを、制御仮想マシン１１０を介して端末装置２００へ送信する。
（ステップＳ１２５）管理部１２５は、生成された画面データおよび受信した操作情報（すなわち、予測入力操作を示す操作情報）を含む情報を予測画面情報として、制御仮想マシン１１０を介して端末装置２００へ送信する。
【０１５９】
図１６は、リソースコピー処理の例を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
（ステップＳ１３１）管理部１２５は、制御仮想マシン１１０からリソースコピー要求を受信する。リソースコピー要求には、コピー元となる通常状態の実行仮想マシン１２０の識別子が含まれる。
【０１６０】
（ステップＳ１３２）管理部１２５は、通常状態である実行仮想マシン１２０のリソースコピーをハイパーバイザ１３０へ要求する。通常状態である実行仮想マシン１２０の識別子は、ステップＳ１３１で受信したリソースコピー要求から取得する。すると、ハイパーバイザ１３０は、次のように、リソースコピーを実行する。
【０１６１】
まず、ハイパーバイザ１３０は、通常状態である実行仮想マシン１２０の識別子が設定されたレコードを、領域管理テーブル１３１から検索し、検索されたレコードから記憶領域を示す情報を読み出す。次に、ハイパーバイザ１３０は、コピーの要求元の実行仮想マシン１２０の識別子が設定されたレコードを、領域管理テーブル１３１から検索し、検索されたレコードから記憶領域を示す情報を読み出す。そして、ハイパーバイザ１３０は、読み出したコピー元の記憶領域に格納されている内容を、イメージデータとして読み出したコピー先の記憶領域に上書きする。そして、ハイパーバイザ１３０は、コピーの完了を実行仮想マシン１２０に通知する。
【０１６２】
なお、ハイパーバイザ１３０は、読み出したコピー元とコピー先との記憶領域のうち、データが一致しない記憶領域を抽出し、抽出された記憶領域のデータのみをコピーするようにしてもよい。また、管理部１２５は、データの差分のみをコピーするか、全記憶領域のデータをコピーするかをハイパーバイザ１３０に指定するようにしてもよい。
【０１６３】
（ステップＳ１３３）管理部１２５は、リソースコピーの完了後（ハイパーバイザ１３０からコピーの完了の通知を受けた後）、制御仮想マシン１１０にコピー完了通知を送信する。
【０１６４】
図１７は、端末装置による入力操作に対応する処理の例を示すフローチャートである。図１７で説明する処理の初期状態は、ユーザの利用対象のアプリケーションプログラムの起動後、サーバ装置１００から受信した画面データに基づく画面を表示した状態であるものとする。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１６５】
（ステップＳ１５１）表示制御部２２０は、予測画面情報テーブル２１１の全レコードを削除する。アプリケーションプログラムの起動時の場合は、予測画面情報テーブル２１１について、全レコードを削除した状態に初期化する。
【０１６６】
（ステップＳ１５２）表示制御部２２０は、投機状態であるいずれかの実行仮想マシン１２０で生成された予測画面情報をサーバ装置１００から受信する。受信した予測画面情報は、図１４のステップＳ１１６で圧縮された状態である。表示制御部２２０は、受信した予測画面情報を伸張する。
【０１６７】
そして、表示制御部２２０は、伸張した予測画面情報を予測画面情報テーブル２１１に登録する。登録されるレコードにおいて、予測入力操作の項目には、伸張した予測画面情報に含まれる予測入力操作を示す操作情報が設定される。同様に、予測画面データの項目には、伸張した予測画面情報に含まれる予測画面データが設定される。
【０１６８】
（ステップＳ１５３）表示制御部２２０は、投機状態である全実行仮想マシン１２０で生成された予測画面情報を受信済みか判定する。全実行仮想マシン１２０から受信済みである場合、処理をステップＳ１５４へ進める。未受信の実行仮想マシン１２０が存在する場合、処理をステップＳ１５２へ進める。なお、ステップＳ１５３では、例えば、所定個数の予測画面情報を受信済みかが判定されればよい。
【０１６９】
なお、ユーザの利用対象のアプリケーションプログラムの起動時には、ステップＳ１５２，Ｓ１５３の処理はスキップされる。
（ステップＳ１５４）表示制御部２２０は、ユーザによる入力操作を検知する。入力操作には、例えば、キーの押下や、マウスなどによる所定の操作部品への指示操作が挙げられる。
【０１７０】
（ステップＳ１５５）表示制御部２２０は、検知された入力操作を示す操作情報をサーバ装置１００へ送信する。
（ステップＳ１５６）表示制御部２２０は、検知された入力操作と一致する予測入力操作が予測画面情報テーブル２１１に存在するか判定する。具体的には、表示制御部２２０は、検知された入力操作を示す操作情報を含むレコードが、予測画面情報テーブル２１１から検索されるか判定する。
【０１７１】
検知された入力操作と一致する予測入力操作が存在する場合、処理をステップＳ１５７へ進める。検知された入力操作と一致する予測入力操作が存在しない場合、処理をステップＳ１５８へ進める。
【０１７２】
（ステップＳ１５７）表示制御部２２０は、一致した予測入力操作に対応する画面データを予測画面情報テーブル２１１から読み出す。具体的には、表示制御部２２０は、ステップＳ１５６で検索されたレコードに設定されている予測画面データを読み出す。
【０１７３】
そして、表示制御部２２０は、読み出した予測画面データに基づく画面をディスプレイに表示させる。
（ステップＳ１５８）表示制御部２２０は、ステップＳ１５５で送信した入力操作に対応する画面データをサーバ装置１００から受信する。受信した画面データは、図１４のステップＳ１２１で圧縮された状態である。表示制御部２２０は、受信した画面データを伸張する。
【０１７４】
（ステップＳ１５９）表示制御部２２０は、受信し伸張した画面データに基づく画面をディスプレイに表示させる。
次に、図１８〜２１を用いて、ユーザの利用対象のアプリケーションプログラムが起動されて入力操作が行われたときのシーケンス例について説明する。図１８〜２１の説明において、サーバ装置１００は、１台の制御仮想マシン１１０と、３台の実行仮想マシン１２０とを実行させているものとする。また、実行仮想マシン１２０は、識別子がＶＭ＃１、ＶＭ＃２およびＶＭ＃３であるものとする。以下、識別子がＶＭ＃１である実行仮想マシン１２０を“実行仮想マシン（ＶＭ＃１）”と記載する場合があり、“ＶＭ＃２”など、他の識別子である実行仮想マシン１２０の記載についても同様である。
【０１７５】
また、図１８〜２１を用いた説明では、画像データおよび予測画面情報における、圧縮処理および伸張処理の記載を省略する。
図１８は、入力操作に対応する処理のシーケンス例を示す図である。以下、図１８〜２１に示す処理をステップ番号に沿って説明する。
【０１７６】
実行仮想マシン（ＶＭ＃１）は通常状態に設定されており（ステップＳ２０１）、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）は投機状態に設定されている（ステップＳ２０２，Ｓ２０３）。
【０１７７】
この状態で、端末装置２００は、アプリケーションプログラムの起動を指示されると、アプリケーションプログラムの起動が指示された旨の通知を、制御仮想マシン１１０に送信する。制御仮想マシン１１０は、アプリケーションプログラムの起動が指示された旨の通知を受信する（ステップＳ２０４）。次に、制御仮想マシン１１０は、起動するアプリケーションプログラムを示す情報を含む起動要求を、通常状態である実行仮想マシン（ＶＭ＃１）へ送信する。実行仮想マシン（ＶＭ＃１）は、起動要求を制御仮想マシン１１０から受信する。（ステップＳ２０５）。次に、実行仮想マシン（ＶＭ＃１）は、起動要求に含まれるアプリケーションプログラムを起動し、起動が完了したら、起動完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、起動完了通知を実行仮想マシン（ＶＭ＃１）から受信する（ステップＳ２０６）。次に、実行仮想マシン（ＶＭ＃１）は、起動完了通知とともに、アプリケーションプログラムの起動時に生成された画面データを制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、画面データを実行仮想マシン（ＶＭ＃１）から受信する（ステップＳ２０７）。次に、制御仮想マシン１１０は、受信した画面データを端末装置２００へ転送する。端末装置２００は、画面データを制御仮想マシン１１０から受信する（ステップＳ２０８）。そして、端末装置２００は、受信した画面データに基づく画面をディスプレイに表示させる（ステップＳ２０９）。
【０１７８】
次に、制御仮想マシン１１０は、リソースコピー要求を投機状態である実行仮想マシン（ＶＭ＃２）へ送信する。実行仮想マシン（ＶＭ＃２）は、リソースコピー要求を制御仮想マシン１１０から受信する（ステップＳ２１０）。同様に、制御仮想マシン１１０は、リソースコピー要求を投機状態である実行仮想マシン（ＶＭ＃３）へ送信する。実行仮想マシン（ＶＭ＃３）は、リソースコピー要求を制御仮想マシン１１０から受信する（ステップＳ２１１）。
【０１７９】
実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）は、実行仮想マシン（ＶＭ＃１）からのリソースコピーをハイパーバイザ１３０に要求する。これにより、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）のリソース（例えば記憶領域）の状態は、実行仮想マシン（ＶＭ＃１）のリソースの状態と同じになる。
【０１８０】
次に、実行仮想マシン（ＶＭ＃２）は、リソースコピーが完了したら、コピー完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、コピー完了通知を実行仮想マシン（ＶＭ＃２）から受信する（ステップＳ２１２）。同様に、実行仮想マシン（ＶＭ＃３）は、リソースコピーが完了したら、コピー完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、コピー完了通知を実行仮想マシン（ＶＭ＃３）から受信する（ステップＳ２１３）。
【０１８１】
図１９は、入力操作に対応する処理のシーケンス例を示す図（続き１）である。
次に、制御仮想マシン１１０は、端末装置２００で次に検知される入力操作を予測し、投機実行要求を、予測した入力操作の１つを示す操作情報とともに投機状態である実行仮想マシン（ＶＭ＃２）へ送信する。実行仮想マシン（ＶＭ＃２）は、投機実行要求を制御仮想マシン１１０から受信する（ステップＳ２２１）。次に、実行仮想マシン（ＶＭ＃２）は、予測された入力操作に対応する投機処理を実行し、投機処理の実行が完了したら、投機実行完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、投機実行完了通知を実行仮想マシン（ＶＭ＃２）から受信する（ステップＳ２２２）。次に、実行仮想マシン（ＶＭ＃２）は、投機処理の実行により生成された予測画面データと、予測入力操作を示す操作情報とを含む予測画面情報を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、予測画面情報を実行仮想マシン（ＶＭ＃２）から受信する（ステップＳ２２３）。制御仮想マシン１１０は、受信した予測画面情報を端末装置２００へ転送する。端末装置２００は、予測画面情報を制御仮想マシン１１０から受信する（ステップＳ２２４）。
【０１８２】
同様に、制御仮想マシン１１０は、投機実行要求を、予測した入力操作の他の１つを示す操作情報とともに投機状態である実行仮想マシン（ＶＭ＃３）へ送信する。実行仮想マシン（ＶＭ＃３）は、投機実行要求を制御仮想マシン１１０から受信する（ステップＳ２２５）。実行仮想マシン（ＶＭ＃３）は、予測入力操作に対応する投機処理を実行し、投機処理が完了したら、投機実行完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、投機実行完了通知を実行仮想マシン（ＶＭ＃３）から受信する（ステップＳ２２６）。次に、実行仮想マシン（ＶＭ＃３）は、投機処理の実行により生成された予測画面データと、予測入力操作を示す操作情報とを対応付けた予測画面情報を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、予測画面情報を実行仮想マシン（ＶＭ＃３）から受信する（ステップＳ２２７）。制御仮想マシン１１０は、受信した予測画面情報を端末装置２００へ転送する。端末装置２００は、予測画面情報を制御仮想マシン１１０から受信する（ステップＳ２２８）。
【０１８３】
端末装置２００は、入力操作をユーザから検知し、検知した入力操作と実行仮想マシン（ＶＭ＃２）により実行された投機処理に対応する予測入力操作とが一致したとする（ステップＳ２２９）。端末装置２００は、検知された入力操作を示す操作情報を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、入力操作を示す操作情報を端末装置２００から受信する（ステップＳ２３０）。
【０１８４】
このとき、実行仮想マシン（ＶＭ＃２）が送信した予測画面情報に含まれる予測入力操作と、検知された入力操作とが一致したとする。この場合、端末装置２００は、実行仮想マシン（ＶＭ＃２）が送信した予測画面情報に含まれる予測画面データに基づく画面をディスプレイに表示させる（ステップＳ２３１）。また、制御仮想マシン１１０は、受信した入力操作に対応する処理が、実行仮想マシン（ＶＭ＃２）による投機処理と一致すると判定する（ステップＳ２３２）。なお、ステップＳ２３０およびステップＳ２３１の処理を実行する順番は、入れ替わってもよい。
【０１８５】
図２０は、入力操作に対応する処理のシーケンス例を示す図（続き２）である。
制御仮想マシン１１０は、状態変更要求を通常状態である実行仮想マシン（ＶＭ＃１）へ送信する。実行仮想マシン（ＶＭ＃１）は、状態変更要求を制御仮想マシン１１０から受信する（ステップＳ２４１）。同様に、制御仮想マシン１１０は、ステップＳ２３０で受信した操作情報に対応する処理を実行した実行仮想マシン（ＶＭ＃２）へ状態変更要求を送信する。実行仮想マシン（ＶＭ＃２）は、状態変更要求を制御仮想マシン１１０から受信する（ステップＳ２４２）。次に、実行仮想マシン（ＶＭ＃１）は、状態を通常状態から投機状態へ変更する（ステップＳ２４３）。同様に、実行仮想マシン（ＶＭ＃２）は、状態を投機状態から通常状態へ変更する（ステップＳ２４４）。次に、実行仮想マシン（ＶＭ＃１）は、状態変更完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、状態変更完了通知を実行仮想マシン（ＶＭ＃１）から受信する（ステップＳ２４５）。次に、実行仮想マシン（ＶＭ＃２）は、状態変更完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、状態変更完了通知を実行仮想マシン（ＶＭ＃２）から受信する（ステップＳ２４６）。
【０１８６】
次に、制御仮想マシン１１０は、リソースコピー要求を投機状態である実行仮想マシン（ＶＭ＃１）へ送信する。実行仮想マシン（ＶＭ＃１）は、リソースコピー要求を制御仮想マシン１１０から受信する（ステップＳ２４７）。同様に、制御仮想マシン１１０は、リソースコピー要求を投機状態である実行仮想マシン（ＶＭ＃３）へ送信する。実行仮想マシン（ＶＭ＃３）は、リソースコピー要求を制御仮想マシン１１０から受信する（ステップＳ２４８）。
【０１８７】
実行仮想マシン（ＶＭ＃１）および実行仮想マシン（ＶＭ＃３）は、実行仮想マシン（ＶＭ＃２）からのリソースコピーをハイパーバイザ１３０に要求する。これにより、実行仮想マシン（ＶＭ＃１）および実行仮想マシン（ＶＭ＃３）のリソースの状態は、実行仮想マシン（ＶＭ＃２）のリソースの状態と同じになる。
【０１８８】
次に、実行仮想マシン（ＶＭ＃１）は、リソースコピーが完了したら、コピー完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、コピー完了通知を実行仮想マシン（ＶＭ＃１）から受信する（ステップＳ２４９）。同様に、実行仮想マシン（ＶＭ＃３）は、リソースコピーが完了したら、コピー完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、コピー完了通知を実行仮想マシン（ＶＭ＃３）から受信する（ステップＳ２５０）。
【０１８９】
図２１は、入力操作に対応する処理のシーケンス例を示す図（続き３）である。
次に、制御仮想マシン１１０は、端末装置２００で次に検知される入力操作を予測し、投機実行要求を、予測した入力操作の１つを示す操作情報とともに投機状態である実行仮想マシン（ＶＭ＃１）へ送信する。実行仮想マシン（ＶＭ＃１）は、投機実行要求を制御仮想マシン１１０から受信する（ステップＳ２５１）。同様に、制御仮想マシン１１０は、投機実行要求を、予測した入力操作の他の１つを示す操作情報とともに投機状態である実行仮想マシン（ＶＭ＃３）へ送信する。実行仮想マシン（ＶＭ＃３）は、投機実行要求を制御仮想マシン１１０から受信する（ステップＳ２５２）。
【０１９０】
次に、実行仮想マシン（ＶＭ＃１）は、投機処理の実行が完了したら、投機実行完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、投機実行完了通知を実行仮想マシン（ＶＭ＃１）から受信する（ステップＳ２５３）。同様に、実行仮想マシン（ＶＭ＃３）は、投機処理の実行が完了したら、投機実行完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、投機実行完了通知を実行仮想マシン（ＶＭ＃３）から受信する（ステップＳ２５４）。
【０１９１】
次に、実行仮想マシン（ＶＭ＃１）は、投機処理の実行により生成された予測画面データと、予測入力操作を示す操作情報とを含む予測画面情報を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、予測画面情報を実行仮想マシン（ＶＭ＃１）から受信する（ステップＳ２５５）。制御仮想マシン１１０は、受信した予測画面情報を端末装置２００へ転送する。端末装置２００は、予測画面情報を制御仮想マシン１１０から受信する（ステップＳ２５６）。
【０１９２】
同様に、実行仮想マシン（ＶＭ＃３）は、投機処理の実行により生成された予測画面データと、予測入力操作を示す操作情報とを含む予測画面情報を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、予測画面情報を実行仮想マシン（ＶＭ＃３）から受信する（ステップＳ２５７）。制御仮想マシン１１０は、受信した予測画面情報を端末装置２００へ転送する。端末装置２００は、予測画面情報を制御仮想マシン１１０から受信する（ステップＳ２５８）。
【０１９３】
図２２は、入力操作の予測が正しくなかった場合の処理のシーケンス例を示す図である。
例えば、図１９のステップＳ２２８において、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）のそれぞれから送信された予測画面情報が、制御仮想マシン１１０から端末装置２００に送信されたものとする。なお、このとき、実行仮想マシン（ＶＭ＃１）は通常状態であり、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）は投機状態である。この状態で、端末装置２００は、ユーザからの入力操作を検知するが、検知された入力操作が、予測された入力操作のいずれとも一致しなかったとする（ステップＳ２６１）。
【０１９４】
端末装置２００は、検知された入力操作を示す操作情報を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、入力操作を示す操作情報を端末装置２００から受信する（ステップＳ２６２）。このとき、受信した操作情報が示す入力操作は、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）が送信したいずれの予測画面情報に含まれる予測入力操作とも一致しない。
【０１９５】
この場合、制御仮想マシン１１０は、端末装置２００から受信した操作情報を、通常状態である実行仮想マシン（ＶＭ＃１）に送信して、処理を要求する。実行仮想マシン（ＶＭ＃１）は、処理要求および操作情報を制御仮想マシン１１０から受信する（ステップＳ２６３）。次に、実行仮想マシン（ＶＭ＃１）は、受信した操作情報が示す入力操作に対応する処理を実行し、実行が完了したら、実行完了通知を制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、実行完了通知を実行仮想マシン（ＶＭ＃１）から受信する（ステップＳ２６４）。
【０１９６】
次に、実行仮想マシン（ＶＭ＃１）は、処理の実行により生成された画面データを制御仮想マシン１１０へ送信する。制御仮想マシン１１０は、画面データを実行仮想マシン（ＶＭ＃１）から受信する（ステップＳ２６５）。制御仮想マシン１１０は、受信した画面データを端末装置２００へ転送する。端末装置２００は、画面データを制御仮想マシン１１０から受信する（ステップＳ２６６）。そして、端末装置２００は、受信した画面データに基づく画面をディスプレイに表示させる（ステップＳ２６７）。
【０１９７】
また、制御仮想マシン１１０および各実行仮想マシン１２０では、図１８のステップＳ２１０以降と同様の処理が行われる（ステップＳ２６８）。すなわち、通常状態である実行仮想マシン（ＶＭ＃１）のリソースの状態を投機状態である実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）にコピーするリソースコピーが行われる。そして、リソースコピーの完了後、制御仮想マシン１１０で予測された予測入力操作に対応する処理および予測画面情報の生成処理が、実行仮想マシン（ＶＭ＃２）および実行仮想マシン（ＶＭ＃３）でそれぞれ実行される。生成された予測画面情報は、制御仮想マシン１１０を介して端末装置２００に送信される。
【０１９８】
第２の実施の形態の表示制御システムによれば、端末装置２００は、次の入力操作を検知する前に、予測入力操作と予測画面データとが対応付けられた予測画面情報をサーバ装置１００から受信する。そして、端末装置２００は、ユーザによる入力操作を検知したとき、検知された入力操作が受信した予測画面情報に含まれている場合、受信した予測画面データに基づく画面をディスプレイに表示させる。
【０１９９】
これにより、予め記憶している予測画面データに基づく画面表示が可能となる。このため、予測精度に応じた確率で、入力操作を示す操作情報をサーバ装置１００へ送信してから画面データを受信するまでの間の時間を待たずに、次の画面データを表示することができる。よって、端末装置２００への入力操作から画面表示までの遅延を抑制できる。特に、端末装置２００がサーバ装置１００から物理的に離れた場所にある場合でも、入力操作の予測が正しければ、装置間の距離に応じた伝送遅延分だけ、入力操作から画面表示までの遅延を短縮できる。
【０２００】
また、サーバ装置１００は、予測管理テーブル１１３ａに格納された過去の入力操作の頻度に基づいて、予測入力操作を予測する。これにより、精度よく入力操作を予測できるため、検知された入力操作が受信した予測入力操作と一致する確率が上がる。よって、入力操作を示す操作情報をサーバ装置１００へ送信してから、画面データを受信するまでの間の時間を待たずに、次の画面データを表示できる確率が向上する。
【０２０１】
また、サーバ装置１００は、複数の投機処理を、投機状態である複数の実行仮想マシン１２０に並列して実行させることで、複数の投機処理に要する時間を軽減できる。
さらに、端末装置２００が検知された入力操作と、予め記憶した予測入力操作とが一致した場合、サーバ装置１００は、検知された入力操作に対応する処理を実行した実行仮想マシン１２０を通常状態に変更し、通常状態に変更された実行仮想マシン１２０から他の実行仮想マシン１２０へのリソースの状態をコピーする。これにより、投機処理を実行するためのリソースの状態を容易に生成できるため、開発コストを軽減できる。
【０２０２】
例えば、各実行仮想マシン１２０で実行させていた上記の各処理プロセスを、仮想マシンを使用せずにサーバ装置１００上で実行する方法が考えられる。しかし、この方法では、各処理プロセスの切り替え等の実行管理処理や、各処理プロセスを同じ処理状態（例えば、同じ処理が実行された状態、あるいは、使用される記憶領域の内容が同じ状態）にするための処理が複雑になり、開発コストや処理負荷が高くなるという問題がある。各処理プロセスを個別の仮想マシンに実行させることで、このような問題を解決することができる。
【０２０３】
なお、サーバ装置１００は、検知された入力操作に対応する画面データを送信する際、検知された入力操作に対応する画面データと、検知される前の画面データとの差分のデータを抽出し、抽出された差分のデータを端末装置２００に送信するようにしてもよい。この場合、端末装置２００は、受信した差分データと表示中の画面に対応する画面データとに基づいて表示画面を切替える。予測画面データについても同様である。
【０２０４】
これにより、サーバ装置１００から端末装置２００への画面データの通信量が抑制され、サーバ装置１００および端末装置２００の処理の負担が軽減される。また、検知された入力操作が予め記憶している予測入力操作と一致しない場合でも、入力操作の検知から画面表示の切り替えまでの時間が短くなる。
【０２０５】
なお、前述のように、第１の実施の形態の情報処理は、情報処理装置１０や端末装置２０にプログラムを実行させることで実現でき、第２の実施の形態の情報処理は、サーバ装置１００や端末装置２００にプログラムを実行させることで実現できる。このようなプログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体４３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ等を使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。
【０２０６】
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置（例えば、ＨＤＤ１０３）に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。また、上記の情報処理の少なくとも一部を、ＤＳＰ（Digital Signal Processing）、ＡＳＩＣ、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することも可能である。
【０２０７】
以上、説明した実施の形態に関し、さらに以下の付記を開示する。
（付記１）  検知された入力操作を示す操作情報を情報処理装置に送信し、当該入力操作に応じた画面データを前記情報処理装置から受信して、受信した画面データに基づく画面を表示装置に表示させる端末装置において、
画面データを一時的に記憶する記憶部と、
予測された次の入力操作に応じた画面データを前記情報処理装置から受信して前記記憶部に格納し、次の入力操作を検知したとき、当該次の入力操作が前記予測された次の入力操作と一致した場合には、前記記憶部に格納された画面データに基づく画面を前記表示装置に表示させる制御部と、
を有することを特徴とする端末装置。
【０２０８】
（付記２）  前記制御部は、前記次の入力操作を検知したとき、当該次の入力操作を示す操作情報を前記情報処理装置に送信し、当該次の入力操作が前記予測された次の入力操作と一致しなかった場合には、当該次の入力操作を示す操作情報の送信に応じて前記情報処理装置から送信された画面データに基づく画面を、前記表示装置に表示させることを特徴とする付記１記載の端末装置。
【０２０９】
（付記３）  端末装置で検知される複数の入力操作をそれぞれ示す複数の操作情報を記憶する記憶部と、
前記端末装置で検知された第１の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第１の画面データを生成して前記端末装置に送信するとともに、前記複数の操作情報に基づいて、前記端末装置で次に検知される第２の入力操作を予測し、予測した前記第２の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第２の画面データを生成して、前記端末装置で次の入力操作が検知される前に、前記第２の画面データを前記第２の入力操作を示す操作情報とともに前記端末装置に送信する処理部と、
を有することを特徴とする情報処理装置。
【０２１０】
（付記４）  前記処理部は、前記第２の画面データを前記端末装置に送信した後、前記端末装置で次の入力操作が検知されたとき、前記検知された入力操作が予測した前記第２の入力操作と一致しなかった場合には、前記検知された入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第３の画面データを生成して前記端末装置に送信することを特徴とする付記３記載の情報処理装置。
【０２１１】
（付記５）  前記記憶部には、前記複数の入力操作のそれぞれについて、前記端末装置で検知された頻度を示す情報が記憶され、
前記処理部は、前記頻度を示す情報に基づいて、前記端末装置で次に検知される前記第２の入力操作を予測する、
ことを特徴とする付記３または４記載の情報処理装置。
【０２１２】
（付記６）  前記処理部は、前記端末装置で前記第１の入力操作が検知されたとき、前記第１の入力操作に対応する処理を実行して前記第１の画面データを生成する第１の処理と、前記第２の入力操作を予測し、予測した前記第２の入力操作に対応する処理を実行して前記第２の画面データを生成する第２の処理とを、前記情報処理装置上で動作する第１の仮想マシンおよび第２の仮想マシンをそれぞれ用いて実行することを特徴とする付記３記載の情報処理装置。
【０２１３】
（付記７）  前記処理部は、予測した前記第２の入力操作に対応する処理を、前記第２の仮想マシンを用いて実行する前に、前記第２の仮想マシンのリソースの状態を、前記第１の画面データを生成した前記第１の仮想マシンのリソースの状態に一致させることを特徴とする付記６記載の情報処理装置。
【０２１４】
（付記８）  前記処理部は、前記第２の画面データを前記端末装置に送信した後、前記端末装置で次の入力操作が検知されたとき、前記検知された入力操作が予測した前記第２の入力操作と一致した場合には、前記第１の仮想マシンのリソースの状態を前記第２の仮想マシンのリソースの状態に一致させた後、前記端末装置での検知が次に予測される第３の入力操作に対応する処理と、当該処理の実行に応じた画面を示す第３の画面データの生成とを前記第１の仮想マシンを用いて実行し、生成された前記第３の画面データを前記第３の入力操作を示す操作情報とともに前記端末装置に送信することを特徴とする付記６または７記載の情報処理装置。
【０２１５】
（付記９）  前記処理部は、前記第２の画面データを前記端末装置に送信した後、前記端末装置で次の入力操作が検知されたとき、前記検知された入力操作が予測した前記第２の入力操作と一致しなかった場合には、前記検知された入力操作に対応する処理と、当該処理の実行に応じた画面を示す画面データの生成とを前記第１の仮想マシンを用いて実行した後、前記第２の仮想マシンのリソースの状態を前記第１の仮想マシンのリソースの状態に一致させ、前記端末装置でさらに次に予測される第３の入力操作に対応する処理と、当該処理の実行に応じた画面を示す第３の画面データの生成とを前記第２の仮想マシンを用いて実行することを特徴とする付記６または７記載の情報処理装置。
【０２１６】
（付記１０）  情報処理装置と端末装置とを有する情報処理システムにおいて、
前記情報処理装置は、前記端末装置で検知された第１の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第１の画面データを生成して前記端末装置に送信するとともに、前記端末装置で次に検知される第２の入力操作を予測し、予測した前記第２の入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第２の画面データを生成して、前記第２の画面データを前記第２の入力操作を示す操作情報とともに前記端末装置に送信し、
前記端末装置は、検知された前記第１の入力操作を示す操作情報を情報処理装置に送信した後、前記第１の画面データを前記情報処理装置から受信して、前記第１の画面データに基づく画面を表示装置に表示させるとともに、前記第２の画面データと前記第２の入力操作を示す操作情報とを前記情報処理装置から受信して記憶装置に一時的に格納し、次の入力操作を検知したとき、当該入力操作が前記記憶装置に格納された操作情報が示す前記第２の入力操作と一致した場合には、格納された前記第２の画面データに基づく画面を前記表示装置に表示させる、
ことを特徴とする情報処理システム。
【０２１７】
（付記１１）  前記情報処理装置は、前記第２の画面データを前記端末装置に送信した後、前記端末装置で次の入力操作が検知されたとき、前記検知された入力操作が予測した前記第２の入力操作と一致しなかった場合には、前記検知された入力操作に対応する処理を実行し、当該処理の実行に応じた画面を示す第３の画面データを生成して前記端末装置に送信し、
前記端末装置は、前記次の入力操作を検知したとき、前記検知した入力操作を示す操作情報を前記情報処理装置に送信し、前記検知した入力操作が前記第２の入力操作と一致しなかった場合には、前記情報処理装置から送信された前記第３の画面データに基づく画面を前記表示装置に表示させる、
ことを特徴とする付記１０記載の情報処理システム。
【０２１８】
（付記１２）  前記情報処理装置は、複数の入力操作のそれぞれについて前記端末装置で検知された頻度を示す情報に基づいて、前記端末装置で次に検知される前記第２の入力操作を予測することを特徴とする付記１０または１１記載の情報処理システム。
【０２１９】
（付記１３）  検知された入力操作を示す操作情報を情報処理装置に送信し、当該入力操作に応じた画面データを前記情報処理装置から受信して、受信した画面データに基づく画面を表示装置に表示させる、端末装置における表示制御方法であって、
予測された次の入力操作に応じた画面データを前記情報処理装置から受信して記憶部に格納し、
次の入力操作を検知したとき、当該次の入力操作が前記予測された次の入力操作と一致した場合には、前記記憶部に格納された画面データに基づく画面を前記表示装置に表示させる、
ことを特徴とする表示制御方法。
【０２２０】
（付記１４）  前記次の入力操作を検知したとき、当該次の入力操作を示す操作情報を前記情報処理装置に送信し、
当該次の入力操作が前記予測された次の入力操作と一致しなかった場合には、当該次の入力操作を示す操作情報の送信に応じて前記情報処理装置から送信された画面データに基づく画面を、前記表示装置に表示させる、
ことを特徴とする付記１３記載の表示制御方法。
【０２２１】
（付記１５）  検知された入力操作を示す操作情報を情報処理装置に送信し、当該入力操作に応じた画面データを前記情報処理装置から受信して、受信した画面データに基づく画面を表示装置に表示させる処理を、コンピュータに実行させる表示制御プログラムであって、
前記コンピュータに、
予測された次の入力操作に応じた画面データを前記情報処理装置から受信して記憶部に格納し、
次の入力操作を検知したとき、当該次の入力操作が前記予測された次の入力操作と一致した場合には、前記記憶部に格納された画面データに基づく画面を前記表示装置に表示させる、
処理を実行させることを特徴とする表示制御プログラム。
【符号の説明】
【０２２２】
１０  情報処理装置
２０  端末装置
２１  記憶部
２２  制御部
３０  表示装置
【図１】
2015082290.tif 000003
【図２】
2015082290.tif 000004
【図３】
2015082290.tif 000005
【図４】
2015082290.tif 000006
【図５】
2015082290.tif 000007
【図６】
2015082290.tif 000008
【図７】
2015082290.tif 000009
【図８】
2015082290.tif 000010
【図９】
2015082290.tif 000011
【図１０】
2015082290.tif 000012
【図１１】
2015082290.tif 000013
【図１２】
2015082290.tif 000014
【図１３】
2015082290.tif 000015
【図１４】
2015082290.tif 000016
【図１５】
2015082290.tif 000017
【図１６】
2015082290.tif 000018
【図１７】
2015082290.tif 000019
【図１８】
2015082290.tif 000020
【図１９】
2015082290.tif 000021
【図２０】
2015082290.tif 000022
【図２１】
2015082290.tif 000023
【図２２】
2015082290.tif 000024