(57)【要約】【課題】複数の仮想マシン上でそれぞれアプリケーションを並行して動作させるための自動操作を、ユーザによる事前の作業を必要とすることなく、確実にすることを可能にする。【解決手段】実施形態によれば、仮想マシン管理プログラムは、コンピュータを、少なくとも１つの動作中の仮想マシンに対応するオブジェクトを第１領域に表示する第１表示手段と、前記第１領域に表示されたオブジェクトに対する操作があった場合に、前記オブジェクトに対応する仮想マシンのウィンドウを前記第１領域と重複しない第２領域に表示する第２表示手段として機能させる。【選択図】図１
2015187786.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
少なくとも１つの動作中の仮想マシンに対応するオブジェクトを第１領域に表示する第１表示手段と、
前記第１領域に表示されたオブジェクトに対する操作があった場合に、前記オブジェクトに対応する仮想マシンのウィンドウを前記第１領域と重複しない第２領域に表示する第２表示手段として機能させるための仮想マシン管理プログラム。
【請求項２】
さらに、前記第１表示手段を、複数の仮想マシンが動作する場合に、前記複数の仮想マシンのそれぞれに対応する複数のオブジェクトを前記第１領域に予め決められた配置で表示するように機能させるための請求項１記載の仮想マシン管理プログラム。
【請求項３】
さらに、前記第２表示手段を、複数の仮想マシンが動作する場合に、最後に操作があった前記オブジェクトに対応する仮想マシンのウィンドウのみを前記第２領域するように機能させるための請求項１記載の仮想マシン管理プログラム。
【請求項４】
少なくとも１つの動作中の仮想マシンに対応するオブジェクトを第１領域に表示する第１表示手段と、
前記第１領域に表示されたオブジェクトに対する操作があった場合に、前記オブジェクトに対応する仮想マシンのウィンドウを前記第１領域と重複しない第２領域に表示する第２表示手段とを有する仮想マシン管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、物理マシン上で動作する仮想マシンを管理する仮想マシン管理プログラム、及び仮想マシン管理装置に関する。
【背景技術】
【０００２】
従来、アプリケーションに対する操作を自動化するソフトウェアが知られている。例えば、物理マシン上で動作する仮想マシンのユーザインタフェース（ＵＩ）に対して自動操作するＵＩ自動操作ソフトウェアがある。ＵＩ自動操作ソフトウェアは、例えば、ディスプレイに表示される画像のスクリーンショットからオブジェクト（アイコン、ボタン等）を切り出し、クエリとして画像検索を行い、操作対象とするオブジェクトの位置を取得する機能、マウスやキーボード等の周辺機器によりオブジェクトに対する自動操作をする機能を実現することができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｂｅｎ  Ｌａｕ“Ｉｎｓｔａｎｔ  Ｓｉｋｕｌｉ  Ｔｅｓｔ  Ａｕｔｏｍａｔｉｏｎ”米国、Ｐａｃｋｔ  Ｐｕｂｌｉｓｈｉｎｇ、２０１３年７月２６日
【発明の概要】
【発明が解決しようとする課題】
【０００４】
仮想マシンを評価する場合、１つの物理マシン上で複数の異なる仮想マシンを実行させて、各仮想マシンで同じアプリケーションを並行に実行させて比較したいという要望がある。この際、ＵＩ自動操作ソフトウェアを用いて、複数のアプリケーションに対して自動操作をすることにより、効率的な評価作業が可能となる。
【０００５】
しかし、ＵＩ自動操作ソフトウェアと仮想マシンは、共通するＯＳ（Operating System）上で個別に動作している。このため、ＵＩ自動操作ソフトウェアは、何れの仮想マシン上で動作するアプリケーションのウィンドウがディスプレイに表示されているか認識せずに、スクリーンショットからオブジェクトを画像検索する。
【０００６】
通常、複数の仮想マシンでそれぞれアプリケーションを動作させた場合、各仮想マシンに対応するウィンドウが重複して表示されてしまい、ウィンドウ中のオブジェクトが隠れてしまったり、各仮想マシンに対応する複数のウィンドウに同じオブジェクトがあったりする場合がある。オブジェクトが隠れている場合、ＵＩ自動操作ソフトウェアは、このオブジェクトを検索することができない。また、同じオブジェクトが複数ある場合には、ＵＩ自動操作ソフトウェアは、何れか一方のオブジェクトを検索して、アクティブでないウィンドウから検索する可能性もある。
【０００７】
このため、ＵＩ自動操作ソフトウェアだけでは正しく自動操作させることができず、事前にユーザの作業が必要となってしまう。例えば、ユーザは、ＵＩ自動操作ソフトウェアによる画像（オブジェクト）検索の選択範囲を指定するスクリプトを組み込んだり、複数の仮想マシンのそれぞれに対応する複数のウィンドウを重複なく配置するといった作業を別途行う必要がある。従って、ＵＩ自動操作ソフトウェアを利用して自動操作をするとしても作業効率を上げることができなかった。
【０００８】
本発明が解決しようとする課題は、複数の仮想マシン上でそれぞれアプリケーションを並行して動作させるための自動操作を、ユーザによる事前の作業を必要とすることなく、確実にすることが可能な仮想マシン管理プログラム、及び仮想マシン管理装置を提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、仮想マシン管理プログラムは、コンピュータを、少なくとも１つの動作中の仮想マシンに対応するオブジェクトを第１領域に表示する第１表示手段と、前記第１領域に表示されたオブジェクトに対する操作があった場合に、前記オブジェクトに対応する仮想マシンのウィンドウを前記第１領域と重複しない第２領域に表示する第２表示手段として機能させる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態におけるホストマシンのハードウェア構成を示すブロック図。
【図２】本実施形態におけるソフトウェア（プログラム）構成の一例を示す図。
【図３】本実施形態における仮想マシン管理プログラムにより画面に設定される仮想マシン領域とラベル領域の構成例を示す図。
【図４】本実施形態におけるラベル領域に表示された複数のラベルの詳細を示す図。
【図５】本実施形態における仮想マシン管理プログラムにより動作中の仮想マシンを管理するために作成される仮想マシン管理リストの一例を示す図。
【図６】本実施形態のＵＩ自動操作ソフトウェアによる動作を定義するスクリプトの一例を示す図。
【図７】本実施形態における仮想マシン管理プログラムの処理を示すフローチャート。
【図８】本実施形態におけるＵＩ自動操作ソフトウェア２０２の処理を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、実施の形態について、図面を参照して説明する。  
図１は、本実施形態におけるホストマシン１００のハードウェア構成を示すブロック図である。図１に示すホストマシン１００は、ＣＰＵ１０１がシステムバス１０２を介して、操作部１０３、表示部１０４、Ｉ／Ｆ（インタフェース）１０５、ＲＡＭ１０６、補助記憶装置１０７と接続される。ホストマシン１００は、例えばパーソナルコンピュータ（ＰＣ）によって実現することができる。
【００１２】
ＣＰＵ１０１は、補助記憶装置１０７からＲＡＭ１０６に読み出された各種プログラム（ソフトウェア）を実行することにより各種の機能を実現する。ＣＰＵ１０１により実行されるプログラム（ソフトウェア）の詳細については図２に示す。
【００１３】
操作部１０３は、ＵＳＢ（Universal Serial Bus）インタフェース等を介して接続されたマウスやキーボードなどのユーザにより操作される入力デバイスを含む。
【００１４】
表示部１０４は、ＤＶＩ（Digital Visual Interface）やＶＧＡ（Video Graphics Array）インタフェースで接続されたディスプレイを含む。表示部１０４は、ＣＰＵ１０１により実行されるプログラムの処理に応じた画面をディスプレイに表示する。
【００１５】
ＲＡＭ１０６は、ＣＰＵ１０１により実行されるりプログラムやデータを一時記憶するワークエリアとして使用される。
【００１６】
補助記憶装置１０７は、ＯＳ（Operating System）やアプリケーションなどの各種プログラム（ソフトウェア）やプログラムの実行に必要なデータなどを、不揮発性の記憶媒体において記憶する。
【００１７】
図２は、本実施形態におけるソフトウェア（プログラム）構成の一例を示す図である。  
ホストマシン１００（ＣＰＵ１０１）は、ＯＳ（オペレーティングシステム）２００（ホストＯＳ）上で各種プログラム（ソフトウェア）を動作させる。本実施形態において、ＯＳ２００上で動作するプログラムには、例えば仮想化ソフトウェア２０１、ＵＩ自動操作ソフトウェア２０２、仮想マシン管理プログラム２０３がある。
【００１８】
仮想化ソフトウェア２０１は、１台の物理マシン（ホストマシン１００）で複数のオペレーティングシステムを同時に実行できるようにするソフトウェアである。仮想化ソフトウェア２０１上では、複数の仮想マシン２０４（２０４−１，２０４−２，２０４−３，…）を動作させることができる。仮想マシン２０４−１，２０４−２，２０４−３，…は、例えばそれぞれのＯＳ（ゲストＯＳ）上で、アプリケーションを実行させることができる。ホストマシン１００（ＣＰＵ１０１）は、複数の仮想マシン２０４−１，２０４−２，２０４−３，…において、アプリケーションを並行して動作させることができる。
【００１９】
ＵＩ自動操作ソフトウェア２０２は、ホストマシン１００（物理マシン）上で動作する仮想マシン２０４−１，２０４−２，２０４−３，…のユーザインタフェース（ＵＩ）に対して自動操作するソフトウェアである。ＵＩ自動操作ソフトウェア２０２は、例えば、表示部１０４に表示される画像のスクリーンショットから操作対象となるオブジェクト（アイコン、ボタン等）を切り出し、クエリとして画像検索を行い、操作対象とするオブジェクトの位置を取得する機能、操作部１０３（マウスやキーボード等の周辺機器）によりオブジェクトに対する自動操作をする機能を有する。
【００２０】
仮想マシン管理プログラム２０３は、複数の仮想マシン上でそれぞれアプリケーションを並行して動作させた場合でも、ＵＩ自動操作ソフトウェア２０２による自動操作を確実にすることができるようにするための機能を提供する。仮想マシン管理プログラム２０３は、例えば図３に示すように、少なくとも１つの動作中の仮想マシンに対応するオブジェクトを表示するためのラベル領域３０１（第１領域）を表示する機能（第１表示機能）と、ラベル領域３０１に表示されたオブジェクトに対する操作があった場合に、オブジェクトに対応する仮想マシンのウィンドウを仮想マシン領域３００（第２領域）に表示する機能（第２表示機能）とを有する。
【００２１】
図３は、本実施形態における仮想マシン管理プログラム２０３により画面に設定される仮想マシン領域３００とラベル領域３０１の構成例を示す図である。  
仮想マシン管理プログラム２０３は、図３に示すように、仮想マシン領域３００とラベル領域３０１とを表示部１０４の画面中で重複しない位置に設定する。仮想マシン管理プログラム２０３は、仮想マシン２０４がホストマシン１００において動作する場合、この仮想マシン２０４による処理に応じた画面を表示するための仮想マシンウィンドウ３０２を仮想マシン領域３００内に配置して表示させる。
【００２２】
仮想マシンウィンドウ３０２には、例えば仮想マシン２０４上で実行されるアプリケーションの処理に応じて、入力操作を受け付けるためのユーザインタフェース（ＵＩ）３０３が表示される。ＵＩ３０３は、操作部１０３の例えばマウスによるクリック操作によって処理の開始を指示することができるボタン３０４を含んでいる。図３に示すＵＩ３０３には、例えば複数のボタンＡ、ボタンＢ、ボタンＣが含まれていることを示している。なお、ＵＩ３０３に対する操作は、マウスによるクリック操作だけでなく、キーボード等の他の入力デバイスを使用するものであっても良い。また、ＵＩ３０３に含まれるボタン３０４は、ＵＩ自動操作ソフトウェア２０２による自動操作の対象となる。
【００２３】
また、仮想マシン管理プログラム２０３は、仮想マシン２０４がホストマシン１００において動作する場合、この仮想マシン２０４に対応するラベル３０５を生成し、ラベル領域３０１上に配置する。仮想マシン管理プログラム２０３は、ホストマシン１００において複数の仮想マシン２０４が動作する場合には、複数の仮想マシン２０４のそれぞれに対応する複数のラベル３０５を生成してラベル領域３０１に表示させる。ラベル３０５は、入力操作（例えばクリック）されると、対応する仮想マシンウィンドウ３０２をアクティブ化させるために使用されるオブジェクトである。
【００２４】
図３では、３つの仮想マシン２０４−１，２０４−２，２０４−３が動作しており、それぞれに対応する３つのラベル３０５ａ，３０５ｂ，３０５ｃがラベル領域３０１に表示された状態を示している。
【００２５】
図４は、本実施形態におけるラベル領域３０１に表示された複数のラベル３０５ａ，３０５ｂ，３０５ｃの詳細を示す図である。ラベル領域３０１には、例えば予め決められたラベル間隔５００に基づいて、等間隔で複数のラベル３０５ａ，３０５ｂ，３０５ｃが配置される。なお、ラベル３０５ａ，３０５ｂ，３０５ｃには、各ラベルを一意に決定できるように、図４に示すように、プロセスＩＤ等を表示させても良い。
【００２６】
ラベル３０５が入力操作（例えばクリック）された場合、仮想マシン管理プログラム２０３は、操作されたラベル３０５に対応する仮想マシンウィンドウ３０２をアクティブ化して、この仮想マシンウィンドウ３０２のみを仮想マシン領域３００において表示させる。従って、例えば、複数の仮想マシン２０４−１，２０４−２，２０４−３を並行に動作させたとしても、ラベル領域３０１において操作されたラベルに対応する仮想マシン２０４の仮想マシンウィンドウ３０２のみが表示部１０４の画面中に表示されることになる。
【００２７】
すなわち、複数の仮想マシン２０４−１，２０４−２，２０４−３において同じアプリケーションを実行させることにより、それぞれの仮想マシンウィンドウ３０２に同じボタン３０４が表示される場合であっても、アクティブな仮想マシンウィンドウ３０２のボタン３０４のみが表示部１０４において表示される。このため、ＵＩ自動操作ソフトウェア２０２は、表示部１０４に表示される画像のスクリーンショットから操作対象となるボタン３０４を確実に検索して、このボタン３０４に対する自動操作をすることができる。
【００２８】
図５は、本実施形態における仮想マシン管理プログラム２０３により動作中の仮想マシンを管理するために作成される仮想マシン管理リスト４００の一例を示す図である。仮想マシン管理リスト４００は、例えば補助記憶装置１０７に記憶される。  
仮想マシン管理リスト４００は、動作中の仮想マシン２０４を示すプロセスＩＤとウィンドウの識別子であるウィンドウハンドルにより構成される。ここで、ウィンドウハンドルは、例えば、Ｗｉｎｄｏｗｓ（登録商標）ＯＳが持つ「ＨＷＮＤ」のようなウィンドウ毎に付番される変数を用いることができる。仮想マシン管理リスト４００には、仮想マシン２０４の起動時に、対応するプロセスＩＤとウィンドウハンドルとが登録され、仮想マシン２０４の動作が終了すると削除される。詳細については後述する（図７参照）。
【００２９】
図６は、本実施形態のＵＩ自動操作ソフトウェア２０２による動作を定義するスクリプトの一例を示す図である。  
図６に示すスクリプトは、表示部１０４に表示された画面中のオブジェクト６００（ボタンＡを示す）を検索し、このオブジェクト６００の位置までカーソルを移動させてクリックする処理を自動で行うことを示している。
【００３０】
ユーザは、スクリプトを作成する際に、仮想マシン領域３００に表示された仮想マシンウィンドウ３０２からオブジェクト（アイコン）などを選択することにより、スクリプトにオブジェクトを取り込める。すなわち、図３に示すボタン３０４（ボタンＡ）を選択することでボタンＡの画像を取り込んで、図６に示すように、スクリプトに埋め込むことができる。
【００３１】
複数の仮想マシン２０４−１，２０４−２，２０４−３で同じアプリケーションを並行に実行して、ＵＩ自動操作ソフトウェア２０２により同じ自動操作をする場合（例えばボタンＡをクリック）、１つの仮想マシン２０４の仮想マシンウィンドウ３０２でボタンＡを選択して、１つのスクリプトを記述するだけで、他の仮想マシン２０４の仮想マシンウィンドウ３０２に対する自動操作のためのスクリプトとして利用することができる。すなわち、スクリプト記述の作業を簡単にすることができる。
【００３２】
また、スクリプトには、ラベル領域３０１に配置されたラベル３０５をクリックして、ラベル３０５に対応する仮想マシン２０４の仮想マシンウィンドウ３０２をアクティブ化させる内容を追加する。すなわち、ラベル領域３０１に配置された先頭のラベル３０５をラベルの画像をもとに検索して、このラベルの位置にカーソルを移動させてクリック操作する自動操作をさせる。さらに、図６のスクリプトが示す自動操作をする毎に、ラベル領域３０１に表示された次のラベル３０５へカーソルを移動させてクリック操作する自動操作を設定しておくことで、次の仮想マシン２０４に対応する仮想マシンウィンドウ３０２をアクティブにして、同様の自動操作を繰り返して実行できるようにする。
【００３３】
ラベル領域３０１に配置される複数のラベル３０５ａ，３０５ｂ，３０５ｃは、図４に示すように、予め決められたラベル間隔５００に基づいて等間隔で配置されているため、この配置に基づいてカーソルを移動させる（例えば、カーソルをラベル間隔５００分だけ右方向に移動させる）スクリプトによって自動化することができる。
【００３４】
次に、本実施形態におけるホストマシン１００の動作について説明する。  
図７は、本実施形態における仮想マシン管理プログラム２０３の処理を示すフローチャートである。  
ＣＰＵ１０１は、仮想マシン管理プログラム２０３に従い、補助記憶装置１０７に仮想マシン管理リスト４００を作成する（ステップＳ１００）。その後、ＣＰＵ１０１は、仮想マシン領域３００、ラベル領域３０１、及びラベル間隔５００を示す各データを定数としてＲＡＭ１０６に記憶する（ステップＳ１０１）。この時、ＣＰＵ１０１は、仮想マシン領域３００、ラベル領域３０１を示すデータとして、領域の左上部と右下部の頂点の座標を数値として記憶しても良い。また、仮想マシン領域３００、ラベル領域３０１の位置及び範囲、ラベル間隔は、ユーザが設定しても良く、表示部１０４の画面サイズに応じて仮想マシンプログラム２０３が自動で設定しても良い。ただし、仮想マシン領域３００とラベル領域３０１とは重ならないように配置されるものとする。
【００３５】
ユーザによってプログラムの終了が選択された場合（ステップＳ１０２）、ＣＰＵ１０１は、表示部１０４のラベル領域３０２に配置されたラベル３０５を全て削除し（ステップＳ１０３）、作成した仮想マシン管理リスト４００を補助記憶装置１０７から削除して（ステップＳ１０４）、プログラムを終了する。
【００３６】
一方、プログラムの終了が選択されない間は、ＣＰＵ１０１は、ホストマシン１００で動作しているプロセスのプロセスＩＤとプロセス名を取得する（ステップＳ１０５）。ここで、ＣＰＵ１０１は、取得したプロセスＩＤとプロセス名が、新規に起動された仮想マシン２０４のものであるかを判別する。すなわち、ＣＰＵ１０１は、取得したプロセスのプロセス名が仮想マシン２０４のものであり、プロセスＩＤが仮想マシン管理リスト４００に含まれていない場合、新規に仮想マシン２０４がプロセスを起動したものとする。新規に仮想マシン２０４が起動されたと判別された場合（ステップＳ１０６、Ｙｅｓ）、ＣＰＵ１０１は、プロセスＩＤよりウィンドウハンドルを取得し、仮想マシン管理リスト４００に該当プロセスＩＤと、ウィンドウハンドルを登録する（ステップＳ１０７）。
【００３７】
また、ＣＰＵ１０１は、新規に起動された仮想マシン２０４の仮想マシンウィンドウ３０２を仮想マシン領域３００に移動して表示させる（ステップＳ１０８）。この時、仮想マシンウィンドウ３０２のサイズは、仮想マシン領域３００に合わせて変更できるようにしても良い。仮想マシンウィンドウ３０２の移動及びサイズの変更は、ＯＳのＡＰＩ（Application Programming Interface）の「Ｂｏｏｌ  ＭｏｖｅＷｉｎｄｏｗ（）」のような関数を使用することができる。
【００３８】
次に、ＣＰＵ１０１は、仮想マシン管理リスト４００にプロセスＩＤとプロセス名とが登録された、新規に起動された仮想マシン２０４と対応づけられたラベル３０５を生成し、ラベル領域３０１の所定の位置に配置する（ステップＳ１０９）。
【００３９】
その後、ＣＰＵ１０１は、プログラムの終了を判定する処理（ステップＳ１０２）に戻る。新規に仮想マシン２０４が起動していない場合（ステップＳ１０６、Ｎｏ）、ＣＰＵ１０１は、動作中の仮想マシン２０４が終了しているかを判定する（ステップＳ１１０）。
【００４０】
このとき、仮想マシン管理リスト４００に登録されているプロセスＩＤが、取得した動作中プロセスのプロセスＩＤに含まれていない場合、ＣＰＵ１０１は、仮想マシン２０４が終了したものと判別する。仮想マシン２０４が終了していた場合（ステップＳ１１０、Ｙｅｓ）、ＣＰＵ１０１は、該当仮想マシン２０４に対応するラベル３０５をラベル領域３０１より削除し、ラベル領域３０１を整列させ（ステップＳ１１１）、仮想マシン管理リスト４００より該当仮想マシン２０４に対応するプロセスＩＤとプロセス名とを削除する（ステップＳ１１２）。その後、ＣＰＵ１０１は、プログラムの終了を判定する処理（ステップＳ１０２）に戻る。
【００４１】
なお、仮想マシン２０４が終了していなかった場合（ステップＳ１１０、Ｎｏ）、ＣＰＵ１０１は、プログラムの終了を判定する処理（ステップＳ１０２）に戻る。
【００４２】
このようにして、本実施形態における仮想マシン管理プログラム２０３によって、ユーザが起動した仮想マシン２０４に対して、仮想マシンウィンドウ３０２を仮想マシン領域３００に移動させ、仮想マシン２０４と対応するラベル３０５をラベル領域３０１に配置することができる。複数の仮想マシン２０４が起動された場合には、新規に起動される毎にラベル３０５がラベル領域３０１に追加される。仮想マシン領域３００では、アクティブな１つの仮想マシン２０４に対応する仮想マシンウィンドウ３０２のみが表示される。こうして、仮想マシン領域３００とラベル領域３０１を設けることで、後述するＵＩ自動操作ソフトウェア２０２の処理によって、複数の仮想マシン２０４の内、特定の仮想マシン２０４のＵＩ３０３を操作することができるようになる。
【００４３】
次に、ＵＩ自動操作ソフトウェア２０２による動作について説明する。図８は、本実施形態におけるＵＩ自動操作ソフトウェア２０２の処理を示すフローチャートである。  
ＣＰＵ１０１は、ＵＩ自動操作ソフトウェア２０２を起動すると、変数「ＣＮＴ」、「ＭＡＸ＿ＶＭ」をそれぞれＲＡＭ１０６に設定し、「ＣＮＴ」に「０」、「ＭＡＸ＿ＶＭ」に起動している仮想マシン２０４の数を代入する（ステップＳ２００）。ここで、「ＭＡＸ＿ＶＭ」の値は、例えば仮想マシン２０４を起動したユーザによって予め設定されるものとする。
【００４４】
「ＭＡＸ＿ＶＭ」の値が０である場合には、ＣＰＵ１０１は、ＵＩ自動操作ソフトウェア２０２による処理を終了する（ステップＳ２０１、Ｙｅｓ）。
【００４５】
一方、「ＭＡＸ＿ＶＭ」の値が１以上である場合、ＣＰＵ１０１は、ラベル領域３０１の先頭のラベル３０５の画像をもとに、画像処理によって先頭のラベル３０５の位置を検索し、この先頭のラベル３０５の位置にマウスカーソルを移動させる（ステップＳ２０２）。
【００４６】
このとき、画像処理によって先頭のラベル３０５を検索するのではなく、ＵＩ自動操作ソフトウェア２０２の動作を定義するスクリプトにおいて、「ｃｌｉｃｋ（“先頭ラベルの座標”）」のように先頭のラベル３０５の位置を座標指定しておくことによって、この指定された座標をもとにカーソルを移動させるようにしても良い。この場合、“先頭ラベルの座標”は、ラベル領域３０１内の相対的な位置を示すものとして、ラベル領域３０１の位置（例えば領域の左上部と右下部の頂点の座標）をもとにラベル３０５の位置を特定することができる。
【００４７】
カーソルを先頭のラベル３０５に移動させると、ＣＰＵ１０１は、マウスをクリックする自動操作を実行する。ラベル３０５がクリックされると、仮想マシン管理プログラム２０３は、クリックされたラベル３０５に該当する仮想マシンウィンドウ３０２をアクティブ化して、仮想マシン領域３００において表示させる（ステップＳ２０３）。ここで、仮想マシンウィンドウ３０２のアクティブ化は、該当仮想マシンウィンドウ３０２のウィンドウハンドルを仮想マシン管理リスト４００より取得し、例えばＡＰＩの「Ｂｏｏｌ  ＳｅｔＦｏｒｅｇｒｏｕｎｄＷｉｎｄｏｗ（）」のような関数を使用することで行うことができる。
【００４８】
その後、ＣＰＵ１０１は、図６に示すスクリプトに基づいて、仮想マシン２０４のＵＩ３０３中のボタン３０４（ボタンＡ）をクリックする自動操作を行う（ステップＳ２０４）。これにより、ＣＰＵ１０１は、仮想マシン２０４によりＵＩ３０３の（ボタンＡに応じた）処理を実行させることができる。
【００４９】
ＣＰＵ１０１は、ＣＮＴ」に「ＣＮＴ＋１」の値を代入し（ステップＳ２０５）、変数「ＭＡＸ＿ＶＭ」と比較する（ステップＳ２０６）。この時、「ＣＮＴ」と「ＭＡＸ＿ＶＭ」の値が等しい場合（ステップＳ２０６、Ｙｅｓ）、全ての仮想マシン２０４に対する処理を実行したものとし、プログラムを終了する。
【００５０】
「ＣＮＴ」と「ＭＡＸ＿ＶＭ」の値が異なる場合（ステップＳ２０６、Ｎｏ）、ＣＰＵ１０１は、スクリプトに従い、カーソルを次のラベル３０５に移動させる（ステップＳ２０７）。例えば、先頭のラベル３０５よりラベル間隔５００×「ＣＮＴ」分だけ右方向に移動するようにカーソルを移動させる。
【００５１】
カーソルを次のラベル３０５に移動させると、クリックする自動操作をして、このラベル３０５に対応する仮想マシンウィンドウ３０２をアクティブ化させる（ステップＳ２０３）。以下、前述と同様にして、仮想マシン領域３００に表示されたアクティブ化された仮想マシンウィンドウ３０２に対して、ＵＩ３０３上のボタン３０４（ボタンＡ）をクリックする自動操作を実行する。
【００５２】
例えば、３つの仮想マシン２０４−１，２０４−２，２０４−３が並行に動作している場合には、ラベル領域３０１には図３に示すように、３つのラベル３０５ａ，３０５ｂ，３０５ｃが表示されている。ＣＰＵ１０１は、ＵＩ自動操作ソフトウェア２０２を実行することにより、ラベル領域３０１内の先頭のラベル３０５ａをクリックして仮想マシン２０４−１に対応する仮想マシンウィンドウ３０２をアクティブ化して、ボタンＡ３０４を仮想マシン領域３００から検索してマウスカーソルを移動させてクリックする自動操作をする。その後、ラベル領域３０１内の次のラベル３０５ｂにカーソルを移動させてクリックして、ラベル３０５ｂに対応する次の仮想マシン２０４−２の仮想マシンウィンドウ３０２をアクティブにして仮想マシン領域３００に表示させる。同様にして、ボタンＡを仮想マシン領域３００から検索してマウスカーソルを移動させてクリックする自動操作をする。さらに、ラベル領域３０１内の次のラベル３０５ｃにカーソルを移動させてクリックして、ラベル３０５ｃに対応する次の仮想マシン２０４−３の仮想マシンウィンドウ３０２をアクティブにして仮想マシン領域３００に表示させる。同様にして、ボタンＡを仮想マシン領域３００から検索してマウスカーソルを移動させてクリックする自動操作をする。
【００５３】
このようにして、複数の仮想マシン２０４−１，２０４−２，２０４−３を並行に動作させても、仮想マシン領域３００でアクティブな仮想マシンウィンドウ３０２のみを表示するように、仮想マシン管理プログラム２０３により複数の仮想マシン２０４のウィンドウの表示を制御しているので、ＵＩ自動操作ソフトウェア２０２は、正しく画像検索によりボタンＡを検索して、クリックする自動操作を実現できる。従って、事前にユーザが仮想マシン２０４−１，２０４−２，２０４−３のそれぞれに対応するウィンドウが重複しないように調整するといった作業をすることなく、ＵＩ自動操作ソフトウェア２０２による自動操作を確実にすることが可能となる。
【００５４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５５】
１００…ホストマシン、１０１…ＣＰＵ、１０３…操作部、１０４…表示部、１０６…ＲＡＭ、１０７…補助記憶装置、２００…ＯＳ、２０１…仮想化ソフトウェア、２０２…ＵＩ自動操作ソフトウェア、２０３…仮想マシン管理プログラム、２０４−１，２０４−２，２０４−３…仮想マシン、３０１…ラベル領域、３００…仮想マシン領域、３０５ａ，３０５ｂ．３０５ｃ…ラベル。
【図１】
2015187786.tif 000003
【図２】
2015187786.tif 000004
【図３】
2015187786.tif 000005
【図４】
2015187786.tif 000006
【図５】
2015187786.tif 000007
【図６】
2015187786.tif 000008
【図７】
2015187786.tif 000009
【図８】
2015187786.tif 000010