説明

GUI部品制御プログラム,GUI部品制御方法およびGUI部品制御装置

【課題】GUI部品を有するプログラムやそのソースコードの完成・入手前でも,そのGUI部品を制御する別のプログラムを作成することが可能となる技術を提供する。
【解決手段】スクリプト制御エンジン11において,GUI部品情報取得部111は,OS30を介して,表示された画面40上の各GUI部品45の情報を取得する。順序決定部112は,取得された各GUI部品45の位置情報に基づいて,例えば「横書き文書」の流れの順などの所定のルールに従って,画面40上の各GUI部品45の順序を決定する。GUI部品45と決定された順序との対応情報は,情報記憶部113に記憶される。GUI部品制御部114は,GUI部品45と決定された順序との対応情報を用いて,スクリプト12の制御指示に記述された順序の情報から制御対象のGUI部品45を特定し,OS30を介して制御対象のGUI部品45への制御を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,あるプログラムにより表示された画面のGUI(Graphical User Interface)部品を,そのプログラムの外から制御するGUI部品制御プログラム,GUI部品制御方法およびGUI部品制御装置に関するものである。
【背景技術】
【0002】
あるプログラムが表示するウインドウなどの画面上のGUI部品を,そのプログラムとは別のプログラムから管理・操作したい局面がある。例えば,スクリプトに記載された手順の通りに,GUI部品を有する対象プログラムのオートデモを行いたい場合などである。なお,以下では,制御の対象となるGUI部品を有する前者のプログラムを,対象プログラムと呼ぶ。また,対象プログラムのGUI部品を外部から制御する後者のプログラムを,制御プログラムと呼ぶ。
【0003】
このとき,制御プログラムでは,対象プログラムのGUI部品を特定して制御指示が行われる。GUI部品ごとに固有な識別情報としては,例えばGUI部品の部品IDや座標情報などがある。部品IDは,対象プログラム内で各GUI部品に対してユニークに割り当てられた識別情報である。また,座標情報は,対象プログラムにより表示される画面上のGUI部品の位置を示す情報である。例えば,対象プログラムにより表示される画面上のGUI部品の位置は,左端,右端,上端,下端の4つの座標値の組で表される。
【0004】
このようなGUI部品に固有の識別情報は,対象プログラムに埋め込まれている。GUI部品に固有の識別情報を取得する場合には,実際に対象プログラムを動作させて抽出するか,対象プログラムのソースリストを解析して取得する。
【0005】
例えば,入手した対象プログラムを実行し,実際にマウスなどを動かしたユーザによるGUI部品への操作を記録して,GUI部品を制御するスクリプトを自動作成する技術がある。この技術では,実行された対象プログラムにより表示された画面上のGUI部品の識別情報を抽出して,スクリプトを記述する。作成されたスクリプトは,スクリプト制御エンジンで実行されることにより,対象プログラムにより表示された画面上のGUI部品を外部から操作する。この技術では,スクリプトとスクリプト制御エンジンとが,対象プログラムが表示する画面のGUI部品を外部から制御する制御プログラムとなる。
【0006】
なお,メニュ画面上の位置を簡易な通し番号で表示し,ユーザがその通し番号を指定してアイコンの配置位置を変更する技術が知られている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平6−12217号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
対象プログラムやそのソースコードから,制御対象であるGUI部品に固有の識別情報を取得して,制御プログラムを作成する場合には,対象プログラムやそのソースコードの完成後・入手後でなければ,制御プログラムの作成が困難であるという問題がある。
【0009】
一般に,GUI部品に対して付される部品IDや座標などの情報は,GUIデザイナソフトウェア等を用いた対象プログラムの開発時に決定される情報である。そのため,対象プログラムやそのソースコードの開発前に,それらのGUI部品に固有の識別情報を知ることはできなく,GUI部品を含む画面のイメージが決まっていても,対象プログラムの開発と同時に制御プログラムを作成することが難しい。
【0010】
例えば,上述のユーザによるGUI部品への操作を記録してGUI部品を制御するスクリプトを自動作成する技術では,完成された対象プログラムが入手できなければ,スクリプトを生成することが難しい。
【0011】
本発明は,上記の問題の解決を図り,GUI部品を有するプログラムやそのソースコードの完成・入手前でも,そのGUI部品を制御する別の制御プログラムを作成することが可能となる技術を提供することを目的とする。
【課題を解決するための手段】
【0012】
あるプログラムが表示する画面のGUI部品への制御を別のプログラムによって行うコンピュータを,次のように機能させる。
【0013】
すなわち,前記別のプログラムは,前記別のプログラムがインストールされて実行されるコンピュータに,少なくともGUI部品の画面上の位置情報を含む,画面のGUI部品の情報を取得する手順と,GUI部品の画面上の位置情報に基づいて,画面のGUI部品の順序を所定のルールで決定する手順と,GUI部品と決定された順序との対応情報を,コンピュータがアクセス可能な記憶装置に記憶する手順と,順序を用いて制御の対象となるGUI部品を特定した指示に対して,記憶装置に記憶されたGUI部品と順序との対応情報を参照して制御の対象となるGUI部品を特定し,画面のGUI部品への制御を行う手順とを実行させる。
【発明の効果】
【0014】
上記の技術によって,GUI部品を有するプログラムやそのソースコードの完成・入手前でも,そのGUI部品を制御する別の制御プログラムを作成することが可能となる。また,制御対象のGUI部品の特定に簡明な順序の情報が用いられるので,制御プログラム作成時のミスなどが減り,制御プログラム作成の効率がよくなる。
【図面の簡単な説明】
【0015】
【図1】スクリプトを用いた外部からのGUI部品の制御例を示す図である。
【図2】GUI部品を有する画面の例を示す図である。
【図3】GUI部品を制御するスクリプトの記述例を示す図である。
【図4】部品識別名でGUI部品が特定されたスクリプトの記述例と部品識別名対応情報の例とを示す図である。
【図5】本実施の形態による制御プログラムを含むコンピュータシステムの構成例を示す図である。
【図6】本実施の形態によるスクリプト作成の例を説明する図である。
【図7】本実施の形態によるGUI部品情報の例を示す図である。
【図8】本実施の形態によるGUI部品に対する仮の順序付けが行われた例を示す図である。
【図9】人の「横書き文書」に対するイメージに適応したGUI部品の順序の入れ替えを説明する図である。
【図10】本実施の形態によるGUI部品に付する順序のソート手順を説明する図である。
【図11】本実施の形態によるGUI部品に付する順序のソート手順を説明する図である。
【図12】本実施の形態によるGUI部品に対する順序付けの結果の例を示す図である。
【図13】本実施の形態によるGUI部品・順序対応情報の例を示す図である。
【図14】本実施の形態のスクリプト制御エンジンによるGUI部品制御処理フローチャートである。
【図15】本実施の形態の順序決定部によるGUI部品順序決定処理フローチャートである。
【図16】本実施の形態の順序決定部によるGUI部品順序ソート処理フローチャートである。
【図17】本実施の形態によるGUI部品制御技術の効果を説明する図である。
【図18】順序を決定するルールのバリエーションを示す図である。
【発明を実施するための形態】
【0016】
以下,本実施の形態について,図を用いて説明する。
【0017】
まず,本実施の形態による外部からのGUI部品の制御技術を説明する前に,対象プログラムにより表示された画面上のGUI部品を,スクリプトとそのスクリプトを実行するスクリプト制御エンジンとにより制御する技術の例を説明する。
【0018】
例えば,対象プログラムの動作検証を自動で行いたい場合などに,スクリプトとスクリプト制御エンジンとを用いた対象プログラムの自動制御が行われる。対象プログラムへの制御手順が記載されたスクリプトを走行させることにより,対象プログラムの自動動作検証が行われる。このとき,表示された画面上のGUI部品への操作が必要な場合には,そのGUI部品を特定した制御指示がスクリプトに記載される。
【0019】
図1は,スクリプトを用いた外部からのGUI部品の制御例を示す図である。
【0020】
図1において,コンピュータ1’は,CPU(Central Processing Unit ),RAM(Random Access Memory)等のメモリ,ハードディスクなどのハードウェア(図示省略)を備え,これらの資源を用いてソフトウェアプログラムを実行する。また,コンピュータ1’は,OS(Operating System)30を備える。
【0021】
コンピュータ1’では,GUI部品を有する画面40の表示を行う対象プログラム20の実行ファイルが,ディスク領域に格納されている。
【0022】
また,対象プログラムを制御するための制御プログラム10’として,スクリプト制御エンジン11’とスクリプト12’とが作成される。図1に示すコンピュータ1’では,スクリプト制御エンジン11’の実行ファイルと,スクリプト12’のファイルとが,ディスク領域に格納されている。
【0023】
ユーザは,対象プログラム20の実行ファイルとスクリプト制御エンジン11’の実行ファイルとを開き,対象プログラム20とスクリプト制御エンジン11’とを実行状態にする。
【0024】
図2は,GUI部品を有する画面の例を示す図である。
【0025】
ここでは,対象プログラム20の実行により,図2に示すようなダイアログボックスのウインドウの画面40が表示されるものとする。図2に示すように,画面40には,5つのテキストボックスのGUI部品45a〜eがあるものとする。
【0026】
スクリプト制御エンジン11’は,スクリプト12’のファイルを読み込む。ここでは,対象プログラム20の動作検証のために,その対象プログラム20と異なるプロセスから,図2に示す画面40上のGUI部品45a〜eに文字を自動入力する目的のスクリプト12’が読み込まれる。スクリプト制御エンジン11’は,スクリプト12’の操作命令に記述されたGUI部品45を特定するための情報を,RAM領域に格納する。この制御対象のGUI部品45の特定情報は,OS30が理解できるレベルのGUI部品45の部品IDや位置情報である。スクリプト制御エンジン11’は,パラメータとしてGUI部品45の部品IDや位置情報などの識別情報をOS30に渡して,GUI部品45を操作する。
【0027】
このように,対象プログラム20の外部からGUI部品45を制御する場合には,GUI部品45を識別情報で特定して制御を行う必要がある。部品IDや位置情報などのGUI部品45に固有の識別情報は,対象プログラム20やそのソースプログラムから取得することができる。対象プログラム20やそのソースプログラムから取得されたGUI部品45に固有の識別情報を用いて,スクリプト12’が作成される。
【0028】
図3は,GUI部品を制御するスクリプトの記述例を示す図である。
【0029】
図3(A)は,部品IDでGUI部品45が特定されたスクリプト12’の記述例を示し,図3(B)は,位置情報でGUI部品45が特定されたスクリプト12’の記述例を示す。図3に示すスクリプト12’の記述例において,文頭の“Edit”は,テキストボックスへの入力指示を意味するものとする。図3に示すスクリプト12’の記述例の各行は,
Edit 制御対象のGUI部品45の特定情報,入力文字列
の形式で記述されているものとする。
【0030】
制御対象のGUI部品45の特定情報として,GUI部品45の部品IDを利用する方法が考えられる。例えば,対象プログラム20にGUI部品45a〜eの部品IDの問い合わせを行い,次に示す値の部品IDが返されたものとする。
【0031】
GUI部品45aの部品ID : 32768
GUI部品45bの部品ID : 5465
GUI部品45cの部品ID : 8823
GUI部品45dの部品ID : 15
GUI部品45eの部品ID : 40032
このような対象プログラムから得られる部品IDは,対象プログラム20の作成に用いたGUIデザイナソフトウェアにより与えられた不規則な値となる。GUI部品45の部品IDは,対象プログラム20の実行のたびに変動することはないので,事前に調べておくことが可能である。
【0032】
スクリプト12’の作成者は,得られた部品IDを用いて,図3(A)に示すようなGUI部品45a〜e制御のスクリプト12’を作成する。
【0033】
また,制御対象のGUI部品45の特定情報として,GUI部品45の位置情報を利用する方法が考えられる。例えば,対象プログラム20にGUI部品45a〜eの位置情報の問い合わせを行い,次に示すような座標が返されたものとする。
【0034】
GUI部品45aの座標 : (100,200,50,90)
GUI部品45bの座標 : (100,200,140,180)
GUI部品45cの座標 : (350,500,140,180)
GUI部品45dの座標 : (80,130,230,270)
GUI部品45eの座標 : (150,200,229,270)
ここでは,画面40におけるGUI部品45の座標が,(左端,右端,上端,下端)の順で示されている。画面40におけるGUI部品45の座標も,対象プログラム20の実行のたびに変動することはないので,事前に調べておくことが可能である。
【0035】
スクリプト12’の作成者は,得られた座標を用いて,図3(B)に示すようなGUI部品45a〜e制御のスクリプト12’を作成する。なお,GUI部品45を座標で特定する場合には,左端(または右端)と上端(または下端)との2つのパラメータがあれば十分である。図3(B)に示すスクリプト12’では,GUI部品45の座標が(左端,上端)の2つのパラメータで記述されている。
【0036】
また,OS30が理解できるGUI部品45に固有の識別情報ではなく,スクリプト12’の作成者が定める一意名を制御対象のGUI部品45の特定情報として利用する方法が考えられる。ここでは,スクリプト12’の作成者が定めた一意名を,部品識別名と呼ぶものとする。
【0037】
スクリプト12’の作成者が定める部品識別名は,OS30が理解できるGUI部品45に固有の識別情報ではない。そのため,スクリプト制御エンジン11’は,スクリプト12’に記述された部品識別名を直接に用いて,GUI部品45を制御することができない。
【0038】
スクリプト12’の作成者は,事前に対象プログラム20からOS30が理解できるGUI部品45に固有の識別情報を調べておき,部品識別名とOS30が理解できるGUI部品45に固有の識別情報との対応を記録した情報を用意しておく。ここでは,部品識別名とOS30が理解できるGUI部品45に固有の識別情報との対応を記録した情報を,部品識別名対応情報と呼ぶものとする。用意された部品識別名対応情報のファイルは,図1に示すコンピュータ1’のディスク領域に格納される。
【0039】
スクリプト制御エンジン11’は,OS30が理解できない部品識別名で制御対象のGUI部品45が特定されたスクリプト12’を実行する際に,部品識別名対応情報のファイルを読み込む。スクリプト制御エンジン11’は,部品識別名対応情報を参照し,スクリプト12’に部品識別名を用いて記述された制御対象のGUI部品45の特定情報を,OS30が理解できる部品IDや位置情報に変換する。スクリプト制御エンジン11’は,パラメータとしてGUI部品45の部品IDや位置情報などの識別情報をOS30に渡して,GUI部品45を操作する。
【0040】
なお,部品IDと対象プログラム20上で表現される一意な文字列との対応が,対象プログラム20のソースコードに記述されている場合がある。対象プログラム20のソースコードが参照できる場合には,作成者は,そのソースコードから部品IDと一意な文字列との対応を取り出し,一意な文字列を部品識別名として,部品識別名対応情報を作成できる。
【0041】
図4は,部品識別名でGUI部品が特定されたスクリプトの記述例と部品識別名対応情報の例とを示す図である。
【0042】
図4(A)は,部品識別名でGUI部品45が特定されたスクリプト12’の記述例を示す。図4(B)は,部品識別名とGUI部品45の部品IDとが対応付けられた部品識別名対応情報の例を示し,図4(C)は,部品識別名とGUI部品45の座標とが対応付けられた部品識別名対応情報の例を示す。
【0043】
例えば,対象プログラム20の処理により表示された画面40上のGUI部品45a〜eに,次に示す部品識別名を割り当てるものとする。
【0044】
GUI部品45aの部品識別名 : IDC _EDIT_TO_FIND_STRING
GUI部品45bの部品識別名 : IDC _EDIT_TO_REPLACE _STRING
GUI部品45cの部品識別名 : IDC _EDIT_FONTNAME
GUI部品45dの部品識別名 : IDC _EDIT_EXCEPT_CHARACTER
GUI部品45eの部品識別名 : IDC _EDIT_EXCEPT_COUNT
部品識別名として割り当てられる文字列は,例えば,対象プログラム20のソースコードから得られた一意な文字列である。
【0045】
スクリプト12’の作成者は,部品識別名を用いて,図4(A)に示すようなGUI部品45a〜e制御のスクリプト12’を作成する。
【0046】
また,スクリプト12’の作成者は,部品識別名対応情報を作成する。作成者は,例えば,OS30が理解できるGUI部品45に固有の識別情報として,対象プログラム20から部品IDを得た場合には,図4(B)に示すような,スクリプト12’に用いた部品識別名と得られた部品IDとの対応情報である部品識別名対応情報を作成する。また,作成者は,例えば,OS30が理解できるGUI部品45に固有の識別情報として,対象プログラム20から座標を得た場合には,図4(C)に示すような,スクリプト12’に用いた部品識別名と得られた座標との対応情報である部品識別名対応情報を作成する。
【0047】
このように,対象プログラム20の処理により表示された画面40上のGUI部品45を外部から制御するスクリプト12’には,GUI部品45の部品IDや位置情報などの識別情報,またはそれらの識別情報に変換可能な部品識別名などの情報が含まれている必要がある。
【0048】
しかし,ここまで提案した方法には,いくつかの問題点がある。
【0049】
第一の問題は,対象プログラム20の設計段階では,それを制御するためのスクリプト12’を作成できないという問題である。
【0050】
GUI部品45の部品IDや座標は,一般にコーディング段階で,GUIデザイナソフトウェアが生成する数値により初めて決まる数値である。そのため,通常の開発においては,作成者は,GUI部品45が配置された画面40のイメージが決まっていても,対象プログラム20の設計段階でスクリプト12’を作成することはできない。
【0051】
画面40に配置するGUI部品45の座標情報などを仕様書の段階で決めてしまうと,GUIデザイナソフトウェアが使えなくなってしまう。そればかりではなく,仕様変更によりGUI部品45の位置の再配置があった場合に,仕様書の改版において数値の再計算が必要になり,設計の工数が増大する。そのため,一般に仕様書の段階でGUI部品45の座標情報を決定するようなことは行われない。
【0052】
第二の問題は,スクリプト12’における手順の記述が煩雑となるため,スクリプト12’の作成に労力がかかるという問題である。
【0053】
スクリプト12’を記述する際には,作成者は,記述する識別情報が確かに目的のGUI部品45と対応しているかどうかを,絶えず確認しながらスクリプト12’を作成する必要がある。その確認作業は,作成者である人間が行うので,スクリプト12’の記述効率が悪くなってしまう,スクリプト12’に誤った手順を記述してしまうなどの問題が発生する。
【0054】
図3,図4に示すスクリプト12’の記述例を見ると,スクリプト12’の作成のために労力がかかることが容易にわかる。制御対象のGUI部品45の特定情報が作成者にとって無意味に見える数字となる図3(A),図3(B)に示すスクリプト12’の記述例では,作成者が誤った記述をしないように注意するための労力が必要となる。図4(A)に示すスクリプト12’の記述例でも,作成者が必ずしも自分で定めたとは限らない命名規則を念頭におきながらスクリプト12’を記述することは,一般に労力を要する。
【0055】
例えば,“IDC _EDIT_TO_FIND_STRING”という一意名を,人間の記憶を頼りにスクリプト12’に記述するケースについて考える。このとき,作成者は,“IDC _EDIT_TO_FIND_STRING”という一意名が,“EDIT_IDC _TO_FIND_STRING”でも,“IDC _EDIT_TO_FINDSTRING”でもないということを,いちいち確認してスクリプト12’に記述する必要がある。似たような一意名を持つGUI部品45が多数あるような場合には,それらを確認することなくスクリプト12’に記述することは,困難である。
【0056】
なお,対象プログラム20の実行ファイルの入手後に限れば,実際にマウスなどを動かしたユーザのGUI部品45に対する操作を自動的にスクリプト12’に記録し,そのスクリプト12’自体は隠蔽してユーザに意識させない方法もある。
【0057】
しかし,この方法を用いても,対象プログラム20の実行ファイルが入手されるまではスクリプト12’の作成ができないため,上述の第一の問題は解決されない。また,この方法を対象プログラム20の開発サイドで用いることを想定すると,自動作成されたスクリプト12’に対して修正や追加などの編集を行う必要性は当然あるものと考えられ,結局は最初から作成者がスクリプト12’を書き下した方が効率がよい。
【0058】
以下では,これらの問題の解決が図られた,対象プログラム20の処理により表示された画面40上のGUI部品45を外部から制御する,本実施の形態の技術について説明する。
【0059】
図5は,本実施の形態による制御プログラムを含むコンピュータシステムの構成例を示す図である。
【0060】
コンピュータ1は,CPU,メモリ,ディスク等のハードウェア資源(図示省略)を備え,それらのハードウェア資源を用いてソフトウェアプログラムを実行する。また,コンピュータ1は,OS30を備える。
【0061】
コンピュータ1では,対象プログラム20の実行ファイルが,ディスク領域に格納されている。対象プログラム20が実行されると,その実行過程において,OS30の機能を介して,コンピュータ1のディスプレイ(図示省略)に,複数のGUI部品45を有する画面40が表示されるものとする。本実施の形態では,対象プログラム20によって表示される画面40は,図2の例に示す画面40であるものとする。
【0062】
また,コンピュータ1では,対象プログラム20を制御する制御プログラム10の実行ファイルが,ディスク領域に格納されている。制御プログラム10には,対象プログラム20への制御指示が記述されたスクリプト12と,そのスクリプト12を実行するスクリプト制御エンジン11とが含まれる。
【0063】
スクリプト12には,対象プログラム20が表示する画面40上のGUI部品45への制御指示が含まれている。本実施の形態のスクリプト12では,制御対象のGUI部品45が,所定のルールに従って決められる簡明な順序の情報で指定されている。
【0064】
スクリプト制御エンジン11は,スクリプト12に記述された対象プログラム20への制御指示を解釈し,実行する。特に,本実施の形態のスクリプト制御エンジン11は,スクリプト12において制御対象のGUI部品45が順序で指定された制御指示の記述を解釈し,指定されたGUI部品45に対する制御を実行する。
【0065】
スクリプト制御エンジン11は,GUI部品情報取得部111,順序決定部112,情報記憶部113,GUI部品制御部114を備える。スクリプト制御エンジン11が備える各機能部は,コンピュータ1が備えるCPU,メモリ等のハードウェアとソフトウェアプログラムとにより実現される。
【0066】
GUI部品情報取得部111は,対象プログラム20の処理により表示された画面40上のGUI部品45の情報を取得する。このとき取得されるGUI部品45の情報には,少なくとも各GUI部品45の位置情報が含まれる。ここでは,位置情報を含むGUI部品45の情報をGUI部品情報と呼ぶ。取得されたGUI部品情報は,情報記憶部113に記憶される。
【0067】
順序決定部112は,情報記憶部113に記憶されたGUI部品情報に含まれるGUI部品45,すなわち対象プログラム20の処理により表示された画面40上のGUI部品45の順序を,各GUI部品45の位置情報に基づいて,所定のルールに従って決定する。順序決定部112は,GUI部品45と決定された順序との対応情報を情報記憶部113に記憶する。ここでは,GUI部品45と順序との対応情報を,GUI部品・順序対応情報と呼ぶ。GUI部品・順序対応情報は,部品IDや座標などのOS30が理解できるGUI部品45に固有の識別情報と,所定のルールに従って決定された順序を表す情報との対応が示された情報である。
【0068】
情報記憶部113は,GUI部品情報やGUI部品・順序対応情報などの情報を記憶する,コンピュータ1がアクセス可能なメモリ,ディスク等の記憶装置である。
【0069】
GUI部品制御部114は,情報記憶部113に記憶されたGUI部品・順序対応情報を参照し,スクリプト12において順序を用いて制御対象のGUI部品45を特定した制御指示に従って,制御対象のGUI部品45への制御を実行する。
【0070】
以下,図6から図13を用いて,対象プログラム20の処理により表示された画面40上のGUI部品45への,制御プログラム10からの制御を,具体的な例を挙げて説明する。ここでは,図2に示す画面40上のGUI部品45を,スクリプト12とスクリプト制御エンジン11とによって,操作するものとする。
【0071】
まず,本実施の形態による,対象プログラム20の処理により表示された画面40上のGUI部品45への制御手順が記述されたスクリプト12の作成について,説明する。
【0072】
図6は,本実施の形態によるスクリプト作成の例を説明する図である。
【0073】
コンピュータ1で表示される画面40は,そのほとんどが「横書き文書」の流れで設計されている。そのため,ユーザは,コンピュータ1で表示される画面40に対して,「横書きの文章」のイメージを持っている。ここでは,ユーザが持っている画面40に対する「横書きの文章」のイメージを利用して,画面40上のGUI部品45に対する順序付けが行われるものとする。
【0074】
図6(A)は,GUI部品の順序を決定する規則の例を示す。例えば,スクリプト12によって制御する対象のGUI部品45を有する画面が図2に示す画面40であった場合,「横書き文書」のイメージでGUI部品45に順序付けすると,図6(A)に示す通りとなる。
【0075】
図6(A)に示す画面40において,太矢印線は,「横書き文書」の流れをイメージしたものである。一般的に,「横書き文書」のルールでは,文書は,上の行から下の行へ読み進める方向で書かれる。また,「横書き文書」のルールでは,文書は,同じ行において,左から右に読み進める方向で書かれる。
【0076】
スクリプト12の作成者は,このような「横書き文書」の流れの方向に従って,画面40上のGUI部品45への順序付けを行う。図6(A)に示す画面40において,各GUI部品45を示す枠内の点線丸中の数字が,「横書き文書」の流れに従って順序付けされた各GUI部品45の順序である。
【0077】
図6(B)に,制御対象のGUI部品45の特定情報が「横書き文書」の流れで決定された順序の情報であるスクリプト12の記述例を示す。図6(B)に示すスクリプト12の記述例の各行は,図3に示すスクリプト12’の記述例の各行と同様に,
Edit 制御対象のGUI部品45の特定情報,入力文字列
の形式で記述されているものとする。なお,図6(B)では,スクリプト12のGUI部品45への制御手順が記述された部分のみが示されているが,実際のスクリプト12には,それ以外の制御手順も記述されている。
【0078】
作成者は,図6(B)に示すように,制御対象のGUI部品45の特定情報として「横書き文書」のルールに従って決定された順序を用いて,画面40上のGUI部品45への制御指示をスクリプト12に記述する。
【0079】
このように,スクリプト12の作成者は,部品IDや座標,部品識別名などのわかりにくいGUI部品45の識別情報を知らなくても,人にとって視覚的にわかりやすいルールで決定される順序の情報で,簡単にGUI部品45を特定したスクリプト12を作成できる。例えば,上述の「横書き文書」の流れに従った順序付けは,コンピュータの世界では最もポピュラーな文書の記述方向に従った順序付けであるので,コンピュータを使用する人にとって視覚的にとてもわかりやすいルールとなる。
【0080】
また,あらかじめ画面40上のGUI部品45に対する順序付けのルールが決まっていれば,スクリプト12の作成者は,GUI部品45の部品IDや座標,部品識別名などを知らなくても,簡明な順序情報でGUI部品を特定したスクリプト12を作成できる。すなわち,作成者は,制御対象のGUI部品45を含む画面40のイメージさえあれば,対象プログラム20やそのソースコードなどがなくても,画面40上のGUI部品45を制御するスクリプト12を作成することができる。
【0081】
次に,本実施の形態による,対象プログラム20の処理により表示された画面40上のGUI部品45に対する,制御プログラム10からの制御について,説明する。ユーザは,対象プログラム20の実行ファイルが入手できた段階で,作成されたスクリプト12を走行させる。
【0082】
上述したように,コンピュータ1のディスク領域には,対象プログラム20の実行ファイル,スクリプト制御エンジン11の実行ファイル,スクリプト12のファイルが格納されている。ユーザは,コンピュータ1上で,対象プログラム20と,スクリプト制御エンジン11とを実行状態にする。
【0083】
スクリプト制御エンジン11において,GUI部品情報取得部111は,制御対象である画面40上のGUI部品45の情報を取得する。
【0084】
具体的には,GUI部品情報取得部111は,対象プログラム20の処理により表示された制御対象の画面40の情報をOS30に問い合わせ,画面40上のGUI部品45の情報の一覧を取得する。ここで取得されたGUI部品45の情報には,GUI部品45の位置情報も含まれている。GUI部品情報取得部111は,取得されたGUI部品45の情報の一覧を,GUI部品情報として情報記憶部113に記憶する。
【0085】
図7は,本実施の形態によるGUI部品情報の例を示す図である。
【0086】
図7に示すGUI部品情報では,図2に示す画面40上の各GUI部品45の情報として,各GUI部品45の部品IDと座標とが記録されている。
【0087】
図7に示すGUI部品情報において,部品ID“15”のレコードは,図2におけるGUI部品45dの情報である。部品ID“8823”のレコードは,図2におけるGUI部品45cの情報である。部品ID“5465”のレコードは,図2におけるGUI部品45bの情報である。部品ID“40032”のレコードは,図2におけるGUI部品45eの情報である。部品ID“32768”のレコードは,図2におけるGUI部品45aの情報である。
【0088】
なお,図7に示すGUI部品情報において,各GUI部品45の左端と右端の座標値は,画面40の最左端の座標を水平方向の原点(すなわち水平方向の座標値0)とした水平方向の座標値であり,画面40の右側に向かうほど値が大きくなる。また,図7に示すGUI部品情報において,各GUI部品45の上端と下端の座標値は,画面40の最上端の座標を垂直方向の原点(すなわち垂直方向の座標値0)とした垂直方向の座標値であり,画面40の下側に向かうほど値が大きくなる。
【0089】
ここでは,図7に示すGUI部品情報が取得され,情報記憶部113に記憶されたものとする。図7のGUI部品情報に示すように,画面40から取得されるGUI部品45の情報は,不規則な数値である部品IDや座標などの情報である。
【0090】
スクリプト制御エンジン11において,順序決定部112は,取得された各GUI部品45の位置情報に基づいて,制御対象である画面40上の各GUI部品45の順序を,所定のルールに従って決定する。
【0091】
具体的には,まず,順序決定部112は,情報記憶部113に記憶されたGUI部品情報に含まれる各GUI部品45に対して,仮の順序付けを行う。ここでは,情報が取得された順番に,仮の順序付けを行うものとする。
【0092】
図8は,本実施の形態によるGUI部品に対する仮の順序付けが行われた例を示す図である。
【0093】
例えば,図7に示すGUI部品情報において,上のレコードから順に各GUI部品45の情報が取得されたものとする。順序決定部112は,図8に示すように,図7に示すGUI部品情報に対して,上のレコードから順に仮の順序付けを行う。
【0094】
順序決定部112は,所定のルールに従うように,各GUI部品45に仮に付けられた順序をソートしていく。ここで説明している具体例では,所定のルールが「横書き文書」の流れに従ったルールであるので,順序決定部112は,各GUI部品45の座標の値を利用して,「横書き文書」の流れに従うように各GUI部品45に仮に付けられた順序をソートしていく。
【0095】
上述したように,一般的に,「横書き文書」のルールでは,文書は,上の行から下の行へ読み進める方向で書かれる。また,「横書き文書」のルールでは,文書は,同じ行において,左から右に読み進める方向で書かれる。このような「横書き文書」のルールに従ってGUI部品45に順序付けを行うものとすると,GUI部品45に対する順序付けのルールは,例えば,
・上端の座標が小さいGUI部品45の順序がより先になるように順序付けを行う
・上端の座標が同じであれば,左端の座標が小さいGUI部品45の順序がより先になるように順序付けを行う
となる。
【0096】
このようなGUI部品45に対する順序付けのルールに基づいた,2つのGUI部品45間の順序をソートする条件を示すソート規則は,例えば,次のような条件文で表現できる。
【0097】
規則A:(Top α<Top β)and (n>m)
規則B:(Top α=Top β)and (Leftα<Leftβ)and (n>m)
規則A,規則Bにおいて,α,βは,それぞれ比較を行う2つのGUI部品45を表している。また,図7のGUI部品情報にも示すように,Leftは左端の座標値,Top は上端の座標値を表す。すなわち,Top α,Leftαは,それぞれαのGUI部品45の上端座標値,左端座標値を表し,Top β,Leftβは,それぞれβのGUI部品45の上端座標値,左端座標値を表す。また,nは,その時点でαのGUI部品45に付されている順序を示し,mは,その時点でβのGUI部品45に付されている順序を示す。
【0098】
順序決定部112は,規則A,規則Bに示すソート規則の条件を満たす関係にある2つのGUI部品45間の順序を入れ替える。規則Aによるソートでは,α,βの2つのGUI部品45について,αの上端の座標値がβの上端の座標値より小さく,αの順序がβの順序より後である場合には,αの順序とβの順序とが入れ替えられる。規則Bによるソートでは,α,βの2つのGUI部品45について,αの上端の座標値とβの上端の座標値とが同じであるときに,αの左端の座標値がβの左端の座標値より小さく,αの順序がβの順序より後である場合には,αの順序とβの順序とが入れ替えられる。
【0099】
しかし,ソート規則が規則A,規則Bのみだと,目的である人の「横書き文書」へのイメージに合わないケースが発生する。
【0100】
図9は,人の「横書き文書」に対するイメージに適応したGUI部品の順序の入れ替えを説明する図である。
【0101】
例えば,GUI部品45iとGUI部品45jとの関係が,図9(A)に示すような左下−右上の位置関係であるものとする。このとき,上記の規則A,規則Bによって順序のソートを行うと,図9(A)に示すように,GUI部品45iの順序(図9(A)では8番目)よりもGUI部品45jの順序(図9(A)では7番目)の方が先になる。
【0102】
しかし,図9(A)に示す例では,GUI部品45jの上端の方がGUI部品45iの上端よりわずかに上であるが,GUI部品45iとGUI部品45jの垂直方向の占有座標は,相互に重なっている。図9(A)に示すような関係でGUI部品45が配置されている場合には,GUI部品45iの順序がGUI部品45jの順序より先である方が,人の視覚的な「横書き文書」のイメージに合うものと考えられる。
【0103】
GUIデザイナソフトウェアによる画面40へのGUI部品45の配置では,マウスなどを用いて作業を行うのが一般的で,1ピクセル単位まで精密にGUI部品45の位置を合わせることは困難である。そのため,画面40の設計者が「横書き文書」で同じ行の位置に2つのGUI部品45を配置したつもりであっても,2つのGUI部品45の垂直方向にずれが発生して,図9(A)に示すような関係になってしまう場合もある。
【0104】
そこで,本実施の形態では,垂直方向の占有座標が相互に重なり,互いに左下−右上の関係に配置された2つのGUI部品45については,左下のGUI部品45の方が先になるように順序付けが行われる。
【0105】
このような順序付けのルールに基づいた第3のソート規則は,例えば,次のような条件文で表現できる。
【0106】
規則C:(Top α<Bottomβ)and (Leftα<Leftβ)and (n>m)
ここに示す規則Cの条件の記述は,上記の規則A,規則Bの条件の記述と同様である。すなわち,規則Cにおいて,α,βは,それぞれ比較を行う2つのGUI部品45を表している。また,図7のGUI部品情報にも示すように,Leftは左端の座標値,Top は上端の座標値,Bottomは下端の座標値を表す。また,nは,その時点でαのGUI部品45に付されている順序を示し,mは,その時点でβのGUI部品45に付されている順序を示す。
【0107】
順序決定部112は,規則Cに示すソート規則の条件を満たす関係にある2つのGUI部品45間の順序を入れ替える。規則Cによるソートでは,α,βの2つのGUI部品45について,αの上端の座標値がβの下端の座標値より小さく,αの左端の座標値がβの左端の座標値より小さく,αの順序がβの順序より後である場合には,αの順序とβの順序とが入れ替えられる。
【0108】
規則Cのソート規則に従った順序の入れ替えにより,図9(B)に示すように,垂直方向の占有座標が相互に重なった左下−右上の関係にあったGUI部品45iの順序とGUI部品45jの順序とが,入れ替えられる。これにより,制御プログラム10による処理で,人の視覚的な「横書き文書」のイメージにより近いGUI部品45への順序付けができるようになる。
【0109】
図10,図11は,本実施の形態によるGUI部品に付する順序のソート手順を説明する図である。
【0110】
図10,図11に示す画面40において,各GUI部品45を示す枠内の点線丸中の数字が,それぞれの段階においてGUI部品45に対して付されている順序を示す。
【0111】
順序決定部112は,図8に示すように,情報が取得された順に,画面40上のGUI部品に対して仮の順序付けを行う。この仮に付けられた順序を画面40上のGUI部品45に表すと,図10(A)に示す通りとなる。図10(A)に示すように,この段階で各GUI部品45に付されている順序は,人の視覚的にはまったく不規則な順序である。
【0112】
まず,順序決定部112は,上記の規則Aを用いて,GUI部品45に付された順序のソートを行う。具体的には,順序決定部112は,2つのGUI部品45間で座標値や付された順序の比較を行い,規則Aの条件を満たす場合にそのGUI部品45間で順序を入れ替える処理を,すべての2つのGUI部品45の組合せについて実行する。これによって,上端の座標値がより小さいGUI部品45の順序が先になるように,各GUI部品45に付された順序がソートされる。
【0113】
規則Aを用いたソートの結果を画面40上のGUI部品45に表すと,図10(B)に示す通りとなる。人の視覚的に画面40上でより上に位置するGUI部品45の順序が先になるように,各GUI部品45に付された順序が更新されている。
【0114】
次に,順序決定部112は,上記の規則Bを用いて,GUI部品45に付された順序のソートを行う。具体的には,順序決定部112は,2つのGUI部品45間で座標値や付された順序の比較を行い,規則Bの条件を満たす場合にそのGUI部品45間で順序を入れ替える処理を,すべての2つのGUI部品45の組合せについて実行する。これによって,上端の座標値が同じである場合には,左端の座標値がより小さいGUI部品45の順序が先になるように,各GUI部品45に付された順序がソートされる。
【0115】
規則Bを用いたソートの結果を画面40上のGUI部品45に表すと,図11(A)に示す通りとなる。人の視覚的に画面40上でより左に位置するGUI部品45の順序が先になるように,各GUI部品45に付された順序が更新されている。ただし,GUI部品45dとGUI部品45eとの間では,データ上GUI部品45eの方が上に位置しているため,この段階では,例外的に右側のGUI部品45eの順序が先になったままである。
【0116】
さらに,順序決定部112は,上記の規則Cを用いて,GUI部品45に付された順序のソートを行う。具体的には,順序決定部112は,2つのGUI部品45間で座標値や付された順序の比較を行い,規則Cの条件を満たす場合にそのGUI部品45間で順序を入れ替える処理を,すべての2つのGUI部品45の組合せについて実行する。これによって,垂直方向の占有座標が相互に重なっているGUI部品45間では,左端の座標値がより小さいGUI部品45の順序が先になるように,各GUI部品45に付された順序がソートされる。
【0117】
規則Cを用いたソートの結果を画面40上のGUI部品45に表すと,図11(B)に示す通りとなる。これが,順序決定部112による画面40上のGUI部品45に対する順序付けの最終結果となる。図11(B)に示す画面40上のGUI部品45に付された順序は,図6(A)に示す,スクリプト12の作成者が視覚的に「横書き文書」のイメージで画面40上のGUI部品45に付した順序と一致する。
【0118】
図12は,本実施の形態によるGUI部品に対する順序付けの結果の例を示す図である。
【0119】
図11(B)に示す画面40上のGUI部品45に対する順序付けの最終結果をデータで表すと,例えば,図12に示す通りとなる。図12に示すGUI部品45に対する順序付けの結果は,図8に示すGUI部品情報に付された仮の順序を,上記の規則A〜Cを用いて,画面40を見る人の視覚的な「横書き文書」のイメージに応じた順序に並べ替えたものとなる。
【0120】
順序決定部112は,画面40上の各GUI部品45に対して所定のルールに従って順序付けを行った最終結果を,GUI部品・順序対応情報として情報記憶部113に格納し直す。図12に示すようなGUI部品情報にそのまま順序情報を付した情報を,GUI部品・順序対応情報として情報記憶部113に記憶するようにしてもよい。GUI部品情報から部品IDや座標などのOS30が理解できるGUI部品45に固有の識別情報を一部抽出したものと,順序情報との対応情報を,GUI部品・順序対応情報として情報記憶部113に記憶するようにしてもよい。
【0121】
図13は,本実施の形態によるGUI部品・順序対応情報の例を示す図である。
【0122】
図13に示すGUI部品・順序対応情報は,OS30が理解できるGUI部品45に固有の識別情報として図7に示すGUI部品情報から抽出された各GUI部品45の部品IDと,各GUI部品45に付された順序との対応が記録されたGUI部品・順序対応情報の例である。
【0123】
スクリプト制御エンジン11において,GUI部品制御部114は,情報記憶部113に記憶されたGUI部品・順序対応情報を参照し,制御対象のGUI部品45が順序で記述されたスクリプト12の指示に従って,画面40上のGUI部品45への制御を実行する。
【0124】
具体的には,スクリプト制御エンジン11は,スクリプト12のファイルを読み込み,スクリプト12に記述された指示を順に実行していく。このとき,スクリプト12にGUI部品45に対する制御指示があれば,GUI部品制御部114は,その制御指示に記述された制御対象のGUI部品45の特定情報を取り出し,メモリに格納する。このとき取り出される制御対象のGUI部品45の特定情報は,例えば図6(B)のスクリプト12の記述例に示すような,簡明な順序情報である。
【0125】
GUI部品制御部114は,スクリプト12から取り出された順序情報で情報記憶部113に格納されたGUI部品・順序対応情報を検索し,その順序情報を,部品IDや座標などのOS30が理解できるGUI部品45に固有の識別情報に変換する。GUI部品制御部114は,順序情報から変換された部品IDや座標などのOS30が理解できるGUI部品45に固有の識別情報を,パラメータとしてOS30に渡し,画面40上の制御対象となるGUI部品45への操作を実行する。
【0126】
例えば,図6(B)に示すスクリプト12の記述例の1行目の制御指示に対する処理において,GUI部品制御部114は,図13に示すGUI部品・順序対応情報を用いて,順序“1”から部品ID“32768”を取得する。GUI部品制御部114は,取得された部品ID“32768”で画面40上のGUI部品45を指定して,テキストボックスに文字列“置換前”を入力する制御を実行する。
【0127】
このように,本実施の形態のスクリプト制御エンジン11は,スクリプト12に記述された簡明な順序の情報を,部品IDや座標などのGUI部品45の固有情報に変換することができる。GUI部品45に固有の識別情報と順序の情報との対応を示すGUI部品・順序対応情報は,スクリプト制御エンジン11自身が生成するため,スクリプト12の作成者等が図4(B),図4(C)に示すような対応情報をあらかじめ用意しておく必要はない。また,スクリプト12の作成者が,スクリプト12の作成時点でGUI部品45に固有の識別情報を知っておく必要もない。
【0128】
以下,図14から図16のフローチャートを用いて,本実施の形態のスクリプト制御エンジン11によるGUI部品制御処理の流れの例を説明する。
【0129】
図14は,本実施の形態のスクリプト制御エンジンによるGUI部品制御処理フローチャートである。
【0130】
スクリプト制御エンジン11において,GUI部品情報取得部111は,制御対象の画面40上の,少なくとも位置情報を含むGUI部品45の情報を取得する(ステップS10)。GUI部品情報取得部111は,取得されたGUI部品45の情報を,GUI部品情報として情報記憶部113に記憶する。
【0131】
順序決定部112は,画面40上の各GUI部品45に対して付する順序を,GUI部品情報に含まれる各GUI部品の位置情報に基づいた所定のルールに従って決定する,GUI部品順序決定処理を行う(ステップS11)。GUI部品順序決定処理の詳細については,後述する。
【0132】
順序決定部112は,画面40上のGUI部品45と決定された順序との対応を示す情報を,GUI部品・順序対応情報として,情報記憶部113に記憶する(ステップS12)。
【0133】
GUI部品制御部114は,情報記憶部113に記憶されたGUI部品・順序対応情報を参照し,順序を用いて制御対象のGUI部品45を特定したスクリプト12の制御指示に従って,制御対象のGUI部品45への制御を実行する(ステップS13)。
【0134】
図15は,本実施の形態の順序決定部によるGUI部品順序決定処理フローチャートである。
【0135】
順序決定部112は,情報が取得された順番で,情報記憶部113に記憶されたGUI部品情報の各GUI部品45に対して仮の順序を付ける(ステップS20)。
【0136】
順序決定部112は,ソート規則として上記の規則Aを用いて,GUI部品45に付された順序をソートするGUI部品順序ソート処理を行う(ステップS21)。また,順序決定部112は,ソート規則として上記の規則Bを用いて,GUI部品45に付された順序をソートするGUI部品順序ソート処理を行う(ステップS22)。また,順序決定部112は,ソート規則として上記の規則Cを用いて,GUI部品45に付された順序をソートするGUI部品順序ソート処理を行う(ステップS23)。GUI部品順序ソート処理の詳細については,後述する。
【0137】
図16は,本実施の形態の順序決定部によるGUI部品順序ソート処理フローチャートである。
【0138】
順序決定部112は,GUI部品情報に含まれる全GUI部品45から,2つのGUI部品45の組合せを,すべて列挙する(ステップS30)。
【0139】
順序決定部112は,GUI部品45の組合せを1つ選択する(ステップS31)。
【0140】
順序決定部112は,選択されたGUI部品45の組合せが,ソート規則の条件に合致するかを判定する(ステップS32)。ソート規則の条件に合致する場合には(ステップS32のYES),順序決定部112は,それら2つのGUI部品45に付されている順序を入れ替える(ステップS33)。
【0141】
順序決定部112は,列挙された一通りのGUI部品45の組合せについて処理が終了したかを判定する(ステップS34)。
【0142】
まだ列挙された一通りのGUI部品45の組合せについて処理が終了していない場合には(ステップS34のNO),順序決定部112は,ステップS31に戻って次のGUI部品45の組合せの処理に移る。
【0143】
列挙された一通りのGUI部品45の組合せについて処理が終了した場合には(ステップS34のYES),順序決定部112は,今回の一通りのGUI部品45の組合せに対する処理で,GUI部品45間の順序の入れ替えがあったかを判定する(ステップS35)。
【0144】
GUI部品45間の順序の入れ替えがあった場合には(ステップS35のYES),順序決定部112は,ステップS30の処理に戻り,再チェックを行う。
【0145】
GUI部品45間の順序の入れ替えがなかった場合には(ステップS35のNO),順序決定部112は,処理を終了する。
【0146】
以上説明した本実施の形態によるGUI部品45への制御技術により,上述の第一の問題と第二の問題とが解決され,
1)スクリプト12の作成が可能な時期が早くなる
2)スクリプト12の作成工数が短くなる
といった効果が得られる。
【0147】
まず,1)の効果が得られる理由としては,本実施の形態によるGUI部品45への制御技術では,対象プログラム20やそのソースコードの完成前でも,画面40のイメージさえ入手できれば,スクリプト12が作成できることが挙げられる。
【0148】
図17は,本実施の形態によるGUI部品制御技術の効果を説明する図である。
【0149】
図17のa)には,図3に示すような,部品IDや座標などのGUI部品45に固有の識別情報が直接に記述された,スクリプト12’を作成する場合の作業手順が示されている。
【0150】
図17のa)に示すように,直接記述の場合には,作業者は,対象プログラム20やそのソースコードの入手後に,それらを解析してGUI部品45に固有の識別情報を取得してから,スクリプト12’の作成作業に取り掛かることになる。
【0151】
図17のb)には,図4(B),(C)に示すような部品識別名とGUI部品45に固有の識別情報との対応情報を使用し,図4(A)に示すような部品識別名で記述されたスクリプト12’を作成する場合の作業手順が示されている。
【0152】
図17のb)に示すように,対応情報使用の場合には,作業者は,制御対象の画面40のイメージを入手した時点で,その画面40上のGUI部品45に対して任意に部品識別名を割り当て,割り当てられた部品識別名を用いて,スクリプト12’の作成作業を行うことができる。しかし,部品識別名とGUI部品45に固有の識別情報との対応情報については,作業者は,対象プログラム20やそのソースコードの入手後に,それらを解析してからでないと作成できない。
【0153】
このように,図17a),b)に示すような直接記述,対応情報使用の場合では,対象プログラム20やそのソースコードの入手後に,何らかの面倒な作業を行わないと,スクリプト12’を走行させることができない。図17a),b)に示すような直接記述,対応情報使用の場合には,スクリプト12’の作成作業は,対象プログラム20の作成作業に従属する作業となる。
【0154】
なお,図17には示されていないが,上述の実際にマウスなどを動かしたユーザのGUI部品45に対する操作を自動的にスクリプト12’に記録する技術も,対象プログラム20の実行ファイルが入手されるまではスクリプト12’の作成ができない。
【0155】
図17のc)には,図6(B)に示すような,制御対象のGUI部品45の特定情報が人の視覚的な判断で所定のルールに従って付けられた簡明な順序情報で記述された,本実施の形態のスクリプト12を作成する場合の作業手順が示されている。
【0156】
図17のc)に示すように,本実施の形態の順序記述の場合には,作業者は,制御対象の画面40のイメージを入手した時点で,すぐに,スクリプト12の作成作業に取り掛かることができる。また,作業者は,対象プログラム20やそのソースコードの入手後に,特に面倒な作業を行う必要はなく,すぐにスクリプト12を走行させることができる。図17のc)に示すような本実施の形態の順序記述の場合には,スクリプト12’の作成作業は,対象プログラム20の作成作業と独立した作業となる。
【0157】
次に,上記の2)の効果が得られる理由としては,本実施の形態によるGUI部品45への制御技術では,スクリプト12への制御対象のGUI部品45を特定する情報の記述に,簡明な順序情報を用いることが挙げられる。
【0158】
図3に示すようなGUI部品45に固有の識別情報で制御対象のGUI部品45を特定する場合には,作成者は,スクリプト12’に直感的にはわかりにくい数値を入力する必要がある。そのため,わかりにくい数値の確認などで入力速度が遅くなる,わかりにくい数値の入力ミスの修正が多く発生する,といった問題が起こる可能性も高い。図4(A)に示すような部品識別名で制御対象のGUI部品45を特定する場合でも,部品識別名の付け方によっては,同様の問題が起こり得る。
【0159】
これに対して,図6(B)に示すような本実施の形態の順序記述の場合には,直感的にわかりやすい順序情報で制御対象のGUI部品45を特定するため,入力する情報の確認に時間が取られず,作業者によるスクリプト12の入力速度が大幅に向上する。また,簡明な順序情報の入力なので,作成者の入力ミスも減り,その修正による時間の無駄をなくすことができる。このような効果が見込まれるため,本実施の形態の順序記述によって,スクリプト12作成の工数が短くなる。
【0160】
以上,本実施の形態について説明したが,本発明はその主旨の範囲において種々の変形が可能であることは当然である。
【0161】
例えば,本実施の形態では,人が視覚的にわかりやすい,GUI部品45への順序付けのルールとして,「横書き文書」のルールを用いたGUI部品45への順序付けが行われているが,必ずしも「横書き文書」のルールである必要はない。例えば,元来の日本語文書の記述方向に従った「縦書き文書」のルールが用いられてもよい。GUI部品45に対する制御を順序情報で記述する側と,その順序情報をもとにGUI部品45を特定して制御を実行する側とで,共通のGUI部品45に対する順序付けのルールが用いられれば,問題はない。
【0162】
図18は,順序を決定するルールのバリエーションを示す図である。
【0163】
図18において,ソート方向は,順序を決定する方向を言葉で表したものであり,矢印図は,順序を決定する方向を矢印で表したものである。ソート規則は,αとβの2つのGUI部品45間で,付された順序の入れ替えが発生する条件である。
【0164】
なお,図18に示す各ルールにおけるソート規則では,図7のGUI部品情報にも示すように,左端の座標値がLeftで,右端の座標値がRight で,上端の座標値がTop で,下端の座標値がBottomで表わされている。また,ソート規則において,nはαのGUI部品45に付されている順序を示し,mはβのGUI部品45に付されている順序を示す。
【0165】
また,本実施の形態では,GUI部品45への制御の例として,テキストボックスのGUI部品45への制御の例を挙げているが,アイコン,ボタン,チェックボックスなど,他のGUI部品45への制御も,本実施の形態と同様に可能である。
【0166】
また,本実施の形態では,順序を示す情報として数字(1,2,... )を用いているが,例えばアルファベット(A,B,... 等)やかな文字(い,ろ,... 等),文字・数字の組合せ(A1,A2,... 等),単語(one,two,... 等)など,順序を表すことができれば何を用いてもよい。
【0167】
また,本実施の形態では,画面40上のGUI部品45を「横書き文書」のルールで順序付けするために用いるソート規則として,
規則A:(Top α<Top β)and (n>m)
規則B:(Top α=Top β)and (Leftα<Leftβ)and (n>m)
規則C:(Top α<Bottomβ)and (Leftα<Leftβ)and (n>m)
を用いる例を説明したが,必ずしもこれらのソート規則に限るものではない。
【0168】
例えば,規則Aにおいて(Top α<Top β)の代わりに(Bottomα<Bottomβ)を用いてもよいし,規則Bにおいて(Top α=Top β)の代わりに(Bottomα=Bottomβ)を用いてもよい。また,規則B,規則Cの(Leftα<Leftβ)のかわりに(Right α<Right β)を用いてもよい。また,GUI部品45が重なり合わないことが条件であれば,規則B,規則Cの(Leftα<Leftβ)のかわりに(Right α<Leftβ)を用いてもよい。
【0169】
また,本実施の形態では,対象プログラム20が有するGUI部品45を,スクリプト12等を用いて制御する例について説明したが,GUI部品45を有するプログラムと,GUI部品45を制御するプログラムとの関係は,必ずしもこの例に限られるものではない。本実施の形態の例は,あるプロセスが有するGUI部品45を別のプロセスから制御する例である。
【0170】
これ以外にも,あるプログラムが有するGUI部品45を,別のプログラムから制御する様々な形態が考えられる。例えば,
・あるスレッドが表示するGUI部品45を,同じプロセスの別のスレッドから制御する
・ある関数が表示するGUI部品45を,別の関数から制御する
・あるクラスが表示するGUI部品45を,別のクラスが制御する
・あるコンピュータのプロセスが表示するGUI部品45を,ネットワークで接続された別のコンピュータのプロセスから制御する
などの様々な形態が考えられる。ここに挙げたすべての例では,前者のプログラムが本実施の形態の対象プログラム20に相当し,後者のプログラムが本実施の形態の制御プログラム10に相当する。いずれの形態でも,制御を行う後者のプログラムには,所定のルールで決定された順序で制御対象のGUI部品45を特定した制御命令と,取得されたGUI部品45の位置情報から所定のルールで画面40上のGUI部品45の順序を決定する機能とが含まれる。
【0171】
例えば,アプリケーションソフトの開発において,アプリケーションソフトに含まれるある関数により表示される画面40上のGUI部品45を,同じアプリケーションソフトに含まれる別の関数から制御する例について考える。このとき,後者の関数の開発では,前者の関数により表示される画面40上の制御対象のGUI部品45を特定した制御命令をプログラムしなければならない。本実施の形態の順序情報を用いたGUI部品45への制御技術を後者の関数の開発に用いれば,前者のGUI部品45を表示する関数の開発と,後者のGUI部品45を制御する別の関数の開発とを,同時並行的に行うことができる。このように,同じ1つのアプリケーションに含まれる,あるプログラムにより表示されるGUI部品45を,別のプログラムから制御する場合でも,本実施の形態の順序情報を用いたGUI部品45への制御技術を適用することが可能である。
【0172】
また,本実施の形態では,順序情報を用いたGUI部品45への制御技術を,対象プログラム20の動作検証に使用する例を説明したが,他にも様々な用途に使用可能である。
【0173】
例えば,順序情報を用いたGUI部品45への制御技術を,スクリプト12の記載手順に従って対象プログラム20のオートデモンストレーションを行う場合に使用することも可能である。また例えば,順序情報を用いたGUI部品45への制御技術を,自分が開発するソフトウェアのGUI部品45に影響を与えるルーチンの内部処理に使用することも可能である。また例えば,順序情報を用いたGUI部品45への制御技術を,キーボードショートカットで「横書き文書」の順に画面40の操作対象のGUI部品45を移動していく処理などを有するプログラムにも使用可能である。
【0174】
以上説明した本実施の形態の特徴を列挙すると以下のとおりである。
【0175】
(付記1)
あるプログラムが表示する画面のGUI部品を制御する別のプログラムであって,
コンピュータに,
少なくとも前記GUI部品の前記画面上の位置情報を含む,前記画面の前記GUI部品の情報を取得する手順と,
前記GUI部品の前記画面上の位置情報に基づいて,前記画面の前記GUI部品の順序を所定のルールで決定する手順と,
前記GUI部品と決定された順序との対応情報を,前記コンピュータがアクセス可能な記憶装置に記憶する手順と,
前記順序を用いて制御の対象となる前記GUI部品を特定した指示に対して,前記記憶装置に記憶された前記GUI部品と順序との対応情報を参照して制御の対象となる前記GUI部品を特定し,前記画面の前記GUI部品への制御を行う手順とを
実行させるためのGUI部品制御プログラム。
【0176】
(付記2)
前記所定のルールは,前記画面において,より位置が上となるGUI部品の順序が先になるように,さらには垂直方向の占有座標が互いに重なるGUI部品間ではより位置が左となるGUI部品の順序が先になるように,前記GUI部品の順序を決定するルールである
ことを特徴とする付記1に記載のGUI部品制御プログラム。
【0177】
(付記3)
前記所定のルールは,前記画面において,前記GUI部品が展開される平面座標系を,垂直方向座標成分を上から下に向かって増加することと定め,水平座標成分を左から右に向かって増加することと定め,さらに,座標成分のどちらか一方を第一座標,他方を第二座標と定めたとき,より第一座標成分が減少する方向に位置するGUI部品の順序が先になるように,さらに第一座標成分方向の占有座標が互いに重なるGUI部品間では,より第二座標成分が減少する方向に位置するGUI部品の順序が先になるように,前記GUI部品の順序を決定するルールである
ことを特徴とする付記1に記載のGUI部品制御プログラム。
【0178】
(付記4)
前記所定のルールが,付記3に記載の説明を,垂直方向成分の増分方向を下から上とした場合,および水平成分の増分方向を右から左とした場合,およびそれらの両方の方向を反転した場合それぞれにおける,付記1に記載のGUI部品制御プログラム。
【0179】
(付記5)
あるプログラムが表示する画面のGUI部品を,別のプログラムから制御するGUI部品制御方法であって,
前記別のプログラムを実行するコンピュータが,
少なくとも前記GUI部品の位置情報を含む,前記画面の前記GUI部品の情報を取得する過程と,
前記GUI部品の位置情報に基づいて,前記画面の前記GUI部品の順序を所定のルールで決定する過程と,
前記GUI部品と決定された順序との対応情報を,前記コンピュータがアクセス可能な記憶装置に記憶する過程と,
前記順序を用いて制御の対象となる前記GUI部品を特定した指示に対して,前記記憶装置に記憶された前記GUI部品と順序との対応情報を参照して制御の対象となる前記GUI部品を特定し,前記画面の前記GUI部品への制御を行う過程とを実行する
ことを特徴とするGUI部品制御方法。
【0180】
(付記6)
あるプログラムが表示する画面のGUI部品を,別のプログラムにより制御するGUI部品制御装置であって,
少なくとも前記GUI部品の位置情報を含む,前記画面の前記GUI部品の情報を取得するGUI部品情報取得部と,
前記GUI部品の位置情報に基づいて,前記画面の前記GUI部品の順序を所定のルールで決定する順序決定部と,
前記GUI部品と決定された順序との対応情報を記憶する情報記憶部と,
前記順序を用いて制御の対象となる前記GUI部品を特定した指示に対して,前記情報記憶部に記憶された前記GUI部品と順序との対応情報を参照して制御の対象となる前記GUI部品を特定し,前記画面の前記GUI部品への制御を行うGUI部品制御部とを備える
ことを特徴とするGUI部品制御装置。
【符号の説明】
【0181】
1 コンピュータ
10 制御プログラム
11 スクリプト制御エンジン
111 GUI部品情報取得部
112 順序決定部
113 情報記憶部
114 GUI部品制御部
12 スクリプト
20 対象プログラム
30 OS
40 画面
45 GUI部品

【特許請求の範囲】
【請求項1】
あるプログラムが表示する画面のGUI部品を制御する別のプログラムであって,
コンピュータに,
少なくとも前記GUI部品の前記画面上の位置情報を含む,前記画面の前記GUI部品の情報を取得する手順と,
前記GUI部品の前記画面上の位置情報に基づいて,前記画面の前記GUI部品の順序を所定のルールで決定する手順と,
前記GUI部品と決定された順序との対応情報を,前記コンピュータがアクセス可能な記憶装置に記憶する手順と,
前記順序を用いて制御の対象となる前記GUI部品を特定した指示に対して,前記記憶装置に記憶された前記GUI部品と順序との対応情報を参照して制御の対象となる前記GUI部品を特定し,前記画面の前記GUI部品への制御を行う手順とを
実行させるためのGUI部品制御プログラム。
【請求項2】
前記所定のルールは,前記画面において,より位置が上となるGUI部品の順序が先になるように,さらには垂直方向の占有座標が互いに重なるGUI部品間ではより位置が左となるGUI部品の順序が先になるように,前記GUI部品の順序を決定するルールである
ことを特徴とする請求項1に記載のGUI部品制御プログラム。
【請求項3】
あるプログラムが表示する画面のGUI部品を,別のプログラムから制御するGUI部品制御方法であって,
前記別のプログラムを実行するコンピュータが,
少なくとも前記GUI部品の位置情報を含む,前記画面の前記GUI部品の情報を取得する過程と,
前記GUI部品の位置情報に基づいて,前記画面の前記GUI部品の順序を所定のルールで決定する過程と,
前記GUI部品と決定された順序との対応情報を,前記コンピュータがアクセス可能な記憶装置に記憶する過程と,
前記順序を用いて制御の対象となる前記GUI部品を特定した指示に対して,前記記憶装置に記憶された前記GUI部品と順序との対応情報を参照して制御の対象となる前記GUI部品を特定し,前記画面の前記GUI部品への制御を行う過程とを実行する
ことを特徴とするGUI部品制御方法。
【請求項4】
あるプログラムが表示する画面のGUI部品を,別のプログラムにより制御するGUI部品制御装置であって,
少なくとも前記GUI部品の位置情報を含む,前記画面の前記GUI部品の情報を取得するGUI部品情報取得部と,
前記GUI部品の位置情報に基づいて,前記画面の前記GUI部品の順序を所定のルールで決定する順序決定部と,
前記GUI部品と決定された順序との対応情報を記憶する情報記憶部と,
前記順序を用いて制御の対象となる前記GUI部品を特定した指示に対して,前記情報記憶部に記憶された前記GUI部品と順序との対応情報を参照して制御の対象となる前記GUI部品を特定し,前記画面の前記GUI部品への制御を行うGUI部品制御部とを備える
ことを特徴とするGUI部品制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate