(57)【特許請求の範囲】
【請求項１】
対象ソフトウェアのＧＵＩを操作することで当該対象ソフトウェアに対する作業を自動化する制御プログラムの作成またはデバッグ作業に際して、前記対象ソフトウェアの代わりに利用可能なプログラムであるＧＵＩスタブを自動的に生成する装置であって、
前記対象ソフトウェアへのオペレータによる操作を契機に、その操作内容と、そのときの対象ソフトウェアのＧＵＩの構造情報および画像情報のペアよりなるＧＵＩ状態とを含む操作ログを取得する操作ログ取得手段と、
前記取得した操作ログを、そのＧＵＩ状態をノード、操作内容をエッジとして表した任意形式の系列として記録する操作ログ記録手段と、
前記操作ログ記録手段に記録されている系列またはこれとともにＧＵＩスタブに対して観測された操作内容から次に再構成するＧＵＩ状態を選定して出力する遷移先選定手段と、
前記出力されたＧＵＩ状態を入力として、構造情報に含まれる全てのＧＵＩ部品を探索し、各ＧＵＩ部品の個別情報を読み取り、当該個別情報に一致するようにＧＵＩ部品を作成してＧＵＩスタブを構築するＧＵＩ構築手段と、
前記構築されたＧＵＩスタブに対する制御プログラムの作成またはデバッグを目的とした操作内容を観測する操作観測手段と、
制御プログラムの作成またはデバッグ作業に必要な、少なくともＧＵＩスタブに対する操作内容およびＧＵＩスタブの構造情報を出力する情報出力手段とを備えた
ことを特徴とするＧＵＩスタブの自動生成装置。
【請求項２】
制御プログラムの作成またはデバッグ時のパラメータを入力として、構築されるＧＵＩスタブに対して実装の変換がパラメータとして与えられた場合に、構造情報を当該パラメータに応じて変換し、対象ソフトウェアと異なる実装でＧＵＩスタブを構築するＧＵＩ変換処理を行うＧＵＩ構築手段をさらに備えた
ことを特徴とする請求項１に記載のＧＵＩスタブの自動生成装置。
【請求項３】
制御プログラムの作成またはデバッグ時のパラメータを入力として、制御プログラムの作成またはデバッグ時に不要となるＧＵＩ部品の削除、もしくはそのサイズまたは配置の変化であるＧＵＩ変化についてパラメータが与えられた場合に、構築されるＧＵＩスタブに当該パラメータに応じて変化を加えるＧＵＩ変化処理を行うＧＵＩ構築手段をさらに備えた
ことを特徴とする請求項１に記載のＧＵＩスタブの自動生成装置。
【請求項４】
制御プログラムの作成またはデバッグ時のパラメータを入力として、画像情報による補完有りがパラメータとして与えられた場合に、構造情報の不完全な部分に対して当該部分に対応する画像情報をクリッピングして配置することでＧＵＩの外観を補完し、再現率を高めるＧＵＩ画像補完処理を行うＧＵＩ構築手段をさらに備えた
ことを特徴とする請求項１に記載のＧＵＩスタブの自動生成装置。
【請求項５】
前記ＧＵＩ変換処理を含んで構築されたＧＵＩスタブに対して、制御プログラムの作成またはデバッグを目的とした操作を観測した場合は、変換される前のＧＵＩの構造情報と、変換された後のＧＵＩの構造情報とを対比させることで、操作内容を変換前のＧＵＩへの操作内容に変換して出力する操作変換処理を行う操作観測部をさらに備えた
ことを特徴とする請求項２に記載のＧＵＩスタブの自動生成装置。
【請求項６】
前記ＧＵＩ変化処理を含んで構築されたＧＵＩスタブに対して、制御プログラムの作成またはデバッグを目的とした操作を観測した場合は、変化が加えられる前のＧＵＩの構造情報と、変化が加えられた後のＧＵＩの構造情報とを対比させることで、操作内容を変化前のＧＵＩへの操作内容に変換して出力する操作変換処理を行う操作観測部をさらに備えた
ことを特徴とする請求項３に記載のＧＵＩスタブの自動生成装置。
【請求項７】
ＧＵＩスタブに対する観測された操作内容を入力として、操作内容に該当する遷移先が操作ログ上に記録されていない場合に、操作ログ内のＧＵＩ状態の類似性や観測された操作内容の類似性、あるいは事前に与えられた教示をもとに、遷移先のＧＵＩ状態を推定して出力する遷移先推定処理を行う遷移先選定部をさらに備えた
ことを特徴とする請求項１乃至６のいずれかに記載のＧＵＩスタブの自動生成装置。
【請求項８】
ＧＵＩスタブに対する観測された操作内容とともに、特定のパス情報および特定の遷移先を含むコンテキスト情報を入力として、前記パス情報に従う操作内容やＧＵＩ状態の系列が観測された場合に前記特定の遷移先を遷移先として推定するコンテキスト推定処理を行う遷移先選定部をさらに備えた
ことを特徴とする請求項１乃至６のいずれかに記載のＧＵＩスタブの自動生成装置。
【請求項９】
対象ソフトウェアのＧＵＩを操作することで当該対象ソフトウェアに対する作業を自動化する制御プログラムの作成またはデバッグ作業に際して、前記対象ソフトウェアの代わりに利用可能なプログラムであるＧＵＩスタブを自動的に生成する方法であって、
前記対象ソフトウェアへのオペレータによる操作を契機に、その操作内容と、そのときの対象ソフトウェアのＧＵＩの構造情報および画像情報のペアよりなるＧＵＩ状態とを含む操作ログを取得する第１のステップと、
前記取得した操作ログを、そのＧＵＩ状態をノード、操作内容をエッジとして表した任意形式の系列として記録する第２のステップと、
前記記録された系列またはこれとともにＧＵＩスタブに対して観測された操作内容から次に再構成するＧＵＩ状態を選定して出力する第３のステップと、
前記出力されたＧＵＩ状態を入力として、構造情報に含まれる全てのＧＵＩ部品を探索し、各ＧＵＩ部品の個別情報を読み取り、当該個別情報に一致するようにＧＵＩ部品を作成してＧＵＩスタブを構築する第４のステップと、
前記構築されたＧＵＩスタブに対する制御プログラムの作成またはデバッグを目的とした操作内容を観測する第５のステップと、
制御プログラムの作成またはデバッグ作業に必要な、少なくともＧＵＩスタブに対する操作内容およびＧＵＩスタブの構造情報を出力する第６のステップとを含む
ことを特徴とするＧＵＩスタブの自動生成方法。
【請求項１０】
コンピュータを、請求項１乃至８のいずれかに記載のＧＵＩスタブの自動生成装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのＧＵＩを操作する制御プログラムの作成を支援する技術に関する。
【背景技術】
【０００２】
ソフトウェアを制御するためのインタフェースは数多く存在するが、ほとんどのソフトウェアが具備しているインタフェースとして、人による操作を想定したグラフィカルユーザインタフェース（ＧＵＩ）がある。このＧＵＩを、人ではなく他のソフトウェア（エージェント）が制御することで、ＧＵＩを具備するソフトウェアを人を介さずに操作し、当該ソフトウェアに対する作業を自動化する等の応用が近年開発されている。
【０００３】
ＧＵＩを自動操作するためには、ＧＵＩの制御プログラムを作成する必要がある。制御プログラムの作成／実行を行うための従来の手法として、ＵＭＳ，ＵＷＳＣ，ＡｕｔｏＩｔ等のツールが知られている（非特許文献１，２，３参照）。これらのツールによれば、ＧＵＩへの自動操作の内容をマクロ／スクリプトやフローチャートなど様々な形式で記述し、制御プログラムを作成することが可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし上記の従来のツールでは、制御プログラムの作成において実際のシステム、即ち自動操作の対象となるソフトウェア（以下、対象ソフトウェア）を必要とするという問題があった。
【０００５】
制御プログラムを作成する段階では、望みどおりの自動操作を得るために、試行錯誤と制御プログラムの修正（デバッグ作業）を繰り返す必要があるが、このようなデバッグ作業を対象ソフトウェア上で実施するのはリスクが大きい。その理由は、デバッグ作業の過程では完成していない制御プログラムを何度も実行することになり、間違ってデータを削除するなどの望まれない操作が対象ソフトウェアに実行／反映されてしまう可能性があるからである。対象ソフトウェアが稼働中の業務システムであるような場合、このようなリスクは許容できない。
【０００６】
そこで本発明では、対象ソフトウェアのＧＵＩを操作する制御プログラムを、当該対象ソフトウェアに影響を与えることなく作成し、デバッグを可能にするという課題を解決する。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明では、ＧＵＩスタブの自動生成装置、その方法およびプログラムを提案する。
【０００８】
ここで、「ＧＵＩスタブ」とは、制御プログラムの作成またはデバッグ作業において対象ソフトウェアの代わりに利用できるプログラムを指し、
１．対象ソフトウェアと同じ画面（外観と構造）を有する、
２．対象ソフトウェアと同じ画面遷移を行う、
３．ＧＵＩスタブを操作したときに観測される操作イベントが対象ソフトウェアを操作したときと同じである、
という要件を有するものである。
【０００９】
具体的には、
対象ソフトウェアのＧＵＩを操作することで当該対象ソフトウェアに対する作業を自動化する制御プログラムの作成またはデバッグ作業に際して、前記対象ソフトウェアの代わりに利用可能なプログラムであるＧＵＩスタブを自動的に生成する装置であって、
前記対象ソフトウェアへのオペレータによる操作を契機に、その操作内容と、そのときの対象ソフトウェアのＧＵＩの構造情報および画像情報のペアよりなるＧＵＩ状態とを含む操作ログを取得する操作ログ取得手段と、
前記取得した操作ログを、そのＧＵＩ状態をノード、操作内容をエッジとして表した任意形式の系列として記録する操作ログ記録手段と、
前記操作ログ記録手段に記録されている系列またはこれとともにＧＵＩスタブに対して観測された操作内容から次に再構成するＧＵＩ状態を選定して出力する遷移先選定手段と、
前記出力されたＧＵＩ状態を入力として、構造情報に含まれる全てのＧＵＩ部品を探索し、各ＧＵＩ部品の個別情報を読み取り、当該個別情報に一致するようにＧＵＩ部品を作成してＧＵＩスタブを構築するＧＵＩ構築手段と、
前記構築されたＧＵＩスタブに対する制御プログラムの作成またはデバッグを目的とした操作内容を観測する操作観測手段と、
制御プログラムの作成またはデバッグ作業に必要な、少なくともＧＵＩスタブに対する操作内容およびＧＵＩスタブの構造情報を出力する情報出力手段とを備えたことを特徴とする。
【００１０】
本発明によれば、対象ソフトウェアの操作ログよりＧＵＩスタブを自動生成し、当該ＧＵＩスタブに対して制御プログラムの作成またはデバッグ作業を行うことにより、対象ソフトウェアへの影響をなくすことができる。
【００１１】
また、本発明の好適な形態としては、前記ＧＵＩ構築部において、パラメータを入力として、画像情報によりＧＵＩの構築を補完する処理や、ＧＵＩの実装を変換する処理、ＧＵＩの外観を変化させる処理を含むことを特徴とするものが挙げられる。
【００１２】
即ち、対象ソフトウェアと完全に同じＧＵＩを構築するだけではなく、パラメータに応じてＪａｖａ（登録商標）で実装されたＧＵＩをＷｅｂ用のＧＵＩに変換して構築したり、制御プログラム作成では不要となるＧＵＩ部品の削除等の変化を加えたＧＵＩ構築や、構築が不完全な場合には画像情報と組合せることで再現率を向上させることができる。
【００１３】
また、同様に本発明の好適な形態としては、前記操作観測部において、前記ＧＵＩ構築部で変換または変化されたＧＵＩに対する操作を観測した場合に、その操作内容を変換／変化前のＧＵＩと対応させた操作内容に変換して出力する処理を含むことを特徴とするものが挙げられる。これにより、ＧＵＩの変換／変化の有無にかかわらず同一の操作内容を遷移先選定部に対して出力することができるとともに、変換／変化が加わって構築されたＧＵＩスタブに対して制御プログラムの作成またはデバッグを行った場合であっても、変換／変化前の当該自動操作対象ソフトウェアへの操作内容やＧＵＩ状態が情報出力部により出力され、変換／変化の影響を取り除いて当該自動操作対象ソフトウェアで動作する制御プログラムを作成することができる。
【００１４】
また、同様に本発明の好適な形態としては、前記遷移先選定部において、操作ログに記録されていない未知の遷移先が存在する場合において、遷移先を推定する処理を含むことを特徴とするものが挙げられる。即ち、操作内容とＧＵＩ状態の類似性から遷移先と同じと類推されるＧＵＩ状態を選定することで、不十分な操作ログからのＧＵＩスタブ作成を可能とする。
【発明の効果】
【００１５】
本発明によれば、対象ソフトウェアのＧＵＩを自動操作する制御プログラムの作成またはデバッグ作業において、当該対象ソフトウェアを利用せずにＧＵＩスタブの適用が可能となり、対象ソフトウェアへの影響を回避することが可能となる。また、制御プログラムの作成／デバッグ時の状況に応じてパラメータを入力することで、変換／変化を加えたＧＵＩスタブの作成や、未知の遷移先のＧＵＩ状態の推定を可能とした。これらにより、対象ソフトウェアとは異なるプラットフォームでの制御プログラム作成や、不十分な操作ログからのＧＵIスタブの作成が可能となり、制御プログラムの作成／デバッグ作業をより強力に支援できるようになる。
【図面の簡単な説明】
【００１６】
【図１】本発明のＧＵＩスタブ自動生成装置の実施の形態の一例を示す構成図
【図２】対象ソフトウェアのＧＵＩの構造情報の一例を示す説明図
【図３】操作ログを表した系列の例を示す説明図
【図４】遷移先選定部における動作の説明図
【図５】本発明のＧＵＩスタブ自動生成装置の動作フローチャート
【図６】本発明のＧＵＩスタブ自動生成装置を用いた制御プログラム作成／デバッグツールの動作フローチャート
【図７】ＧＵＩ変換処理の一例を示す説明図
【図８】ＧＵＩ変化処理の一例を示す説明図
【図９】ＧＵＩ画像補完処理の一例を示す説明図
【図１０】遷移先推定処理の一例を示す説明図
【図１１】コンテキスト推定処理の一例を示す説明図
【図１２】操作変換処理の一例を示す説明図
【発明を実施するための形態】
【００１７】
本発明の実施の形態の一例について図面を参照して説明する。
【００１８】
図１は、本発明のＧＵＩスタブ自動生成装置の実施の形態の一例を、対象ソフトウェアおよび制御プログラム作成／デバッグツールの動作環境とともに示すものである。
【００１９】
即ち、自動操作しようとする対象ソフトウェアＡがコンピュータ１０上で動作し、当該対象ソフトウェアＡを自動操作するための制御プログラムの作成またはデバッグを行うツールである制御プログラム作成／デバッグツールＢがコンピュータ２０上で動作する場合において、本実施の形態に係るＧＵＩスタブ自動生成装置３０は、制御プログラム作成／デバッグツールＢに対して、対象ソフトウェアＡの代わりにＧＵＩスタブＣを提供することで制御プログラムの作成またはデバッグ作業を支援するサービスを行う。
【００２０】
ここで、制御プログラム作成／デバッグツールＢは様々な形態が考えられ、例えば対象ソフトウェアＡ本体の構造情報や画像情報を用いて、スクリプト言語やフローチャートにより制御プログラムを作成するツールなどが挙げられる。
【００２１】
また、コンピュータ１０は、対象ソフトウェアＡの実行環境としてのＯＳ１１とともに、当該対象ソフトウェアＡを操作するオペレータ４１へのユーザインターフェースとしてのキーボードやマウスなどの入力デバイス１２および表示装置であるディスプレイ１３を有する。また、コンピュータ２０は、制御プログラム作成／デバッグツールＢの実行環境としてのＯＳ２１とともに、当該制御プログラム作成／デバッグツールＢを操作する制御プログラム作成者４２へのユーザインターフェースとしてのキーボードやマウスなどの入力デバイス２２および表示装置であるディスプレイ２３を有する。
【００２２】
なお、ＯＳ１１とＯＳ２１は同じでも良く、異なっていても良い。また、ここでは対象ソフトウェアＡと制御プログラム作成／デバッグツールＢが別々のコンピュータ上で動作しているものとしたが、同じコンピュータ上で動作していても良い。
【００２３】
以下、本実施の形態に係るＧＵＩスタブ自動生成装置３０について詳述する。
【００２４】
即ち、ＧＵＩスタブ自動生成装置３０は、図１に示すように、操作ログ取得部３１、操作ログ記録部３２、遷移先選定部３３、ＧＵＩ構築部３４、操作観測部３５および情報出力部３６を備えて構成され、ＧＵＩスタブＣを作成する。
【００２５】
また、ＧＵＩスタブ自動生成装置３０は、コンピュータとプログラムによって実現することもでき、コンピュータ１０および２０とネットワークを介して遠隔において繋がったコンピュータで動作可能であるとともに、コンピュータ１０または２０において動作することも可能である。さらに、各機能部３１〜３６は一つのコンピュータ上に存在する必要はなく、分散した環境でも動作可能である。
【００２６】
操作ログ取得部３１は、対象ソフトウェアＡが実際に運用されているときの操作ログを取得する。詳細には、ＯＳやＷｅｂブラウザやそれに付随するシステムライブラリ等の提供する機能を用いて、対象ソフトウェアＡへのオペレータ４１による操作を契機に、その操作内容と、そのときの対象ソフトウェアＡのＧＵＩの構造情報および画像情報のペアよりなるＧＵＩ状態とを含む操作ログを取得する。システムライブラリの一例としては、Ｗｉｎｄｏｗｓ（登録商標）のＡｃｃｅｓｓｉｂｉｌｉｔｙ  ＡＰＩやＵＩ  Ａｕｔｏｍａｔｉｏｎ、ＷｅｂブラウザのシステムであればＤＯＭ等があり、その他にも任意のものを利用できる。
【００２７】
図２は構造情報の一例を示すもので、ボタンやエディットなどのＧＵＩ部品をノードとした階層構造であり、各ＧＵＩ部品（各ノード）について位置やサイズ、名前など種々の個別情報を保持している。画像情報はディスプレイ１３に表示されている対象ソフトウェアＡのＧＵＩ全体をキャプチャした画像データである。オペレータ４１の操作内容は、ディスプレイ１３に表示された対象ソフトウェアＡのＧＵＩに対するマウスからのクリックやキーボードからの入力、個々のＧＵＩ部品等に対する操作（ボタンを押した、チェックボックスのオン／オフ等）の他、入力デバイス１２からの種々のユーザ操作を操作内容として取得する。
【００２８】
操作ログ記録部３２は、操作ログ取得部３１によって取得した操作ログを記録する。詳細には、取得した操作ログを、そのＧＵＩ状態をノード、操作内容をエッジとして表した任意形式の系列として記録する。
【００２９】
図３は操作ログを表した系列の例、ここでは状態遷移図、リスト群、多分木の各形式による系列の例を示す。系列はＧＵＩ状態（Ｓ０，Ｓ１，Ｓ２…）をノード、操作内容（Ｏ１，Ｏ２，Ｏ３…）をエッジとして表現する。
【００３０】
遷移先選定部３３は、操作ログ記録部３２に記録された操作ログまたはこれとともにＧＵＩスタブＣに対する観測された操作から次に再構成するＧＵＩ状態を選定して出力する。詳細には、操作ログ記録部３２に記録されている操作ログとしての系列またはこれとともに後述の操作観測部３５からの操作内容を入力として、次に再構成するＧＵＩ状態を選定して出力する。
【００３１】
図４を参照して遷移先選定部３３について説明する。図４に示すように、現在再構成されているＧＵＩ状態から伸びているエッジ（操作内容）に対して、操作観測部３５において観測され出力された操作内容と一致するものを探索し、一致するものが見つかった場合には、そのエッジの先のＧＵＩ状態を次に再構成するＧＵＩ状態として選定して出力する。
【００３２】
さらに、遷移先選定部３３では、操作観測部３５からの操作内容に対応する遷移先が存在しない場合には、遷移先のＧＵＩ状態を推定する遷移先推定処理を含む。遷移先推定処理については後述する。
【００３３】
ＧＵＩ構築部３４は、遷移先選定部３３から出力されたＧＵＩ状態を入力として対象ソフトウェアＡと同様の外観を有するＧＵＩスタブＣを構築する。詳細には、遷移先選定部３３から出力されたＧＵＩ状態を入力として、構造情報の全てのノード（ＧＵＩ部品）を探索し、各ＧＵＩ部品の位置やサイズ、名前などの個別情報を読み取り、当該個別情報に一致するようにＧＵＩ部品を作成してＧＵＩスタブＣを構築する。
【００３４】
さらに、ＧＵＩ構築部３４では、制御プログラムの作成またはデバッグ時のパラメータを入力として、ＧＵＩの実体の種類を変換するＧＵＩ変換処理と、構築されたＧＵＩの実体を対象ソフトウェアＡの外観から変化させるＧＵＩ変化処理と、構造情報が不完全な場合に画像情報によりＧＵＩを補完するＧＵＩ画像補完処理と、を行う。ＧＵＩ画像補完処理、ＧＵＩ変換処理およびＧＵＩ変化処理については後述する。
【００３５】
操作観測部３５は、構築されたＧＵＩスタブＣに対する制御プログラムの作成またはデバッグを目的とした操作を観測し、その操作内容を出力する。詳細には、操作ログ取得部３１における操作内容の取得と同様であり、マウスからのクリックやキーボードからの入力、個々のＧＵＩ部品等に対する操作（ボタンを押した、チェックボックスのオン／オフ等）の他、入力デバイス２２からの種々の操作内容を取得する。さらに、構築されたＧＵＩスタブＣがＧＵＩ変換処理またはＧＵＩ変化処理を伴う場合には操作変換処理を行う。操作変換処理については後述する。
【００３６】
情報出力部３６は、制御プログラムの作成またはデバッグ作業に必要な情報を出力する。詳細には、制御プログラム作成／デバッグツールＢの要求に応じて、制御プログラムの作成またはデバッグ作業に必要な情報として、ＧＵＩスタブＣに加えられた操作内容やそのときのＧＵＩ状態の情報を出力する。
【００３７】
次に、図５を参照して本実施の形態に係るＧＵＩスタブ自動生成装置３０の動作について説明する。
【００３８】
図５に示すように、まず操作ログ取得部３１が、ＧＵＩスタブを作成したい対象ソフトウェアＡに対するオペレータ４１の操作を契機に、当該対象ソフトウェアＡのＧＵＩの構造情報および画像情報と、操作内容とを操作ログとして取得する（ステップｓ１）。
【００３９】
次に、操作ログ記録部３２が操作ログを順次記録し、ＧＵＩの構造情報および画像情報のペアをＧＵＩ状態とし、ＧＵＩ状態をノード、操作内容をエッジとする任意形式の系列を作成する（ステップｓ２）。このとき、対象ソフトウェアＡの起動時のＧＵＩ状態を初期状態とする。
【００４０】
次に、遷移先選定部３３が、ステップｓ５の出力（ＧＵＩスタブＣへの操作内容）と操作ログ記録部３２の系列を入力として次に再構成するＧＵＩ状態を選定して出力する（最初は初期状態を出力する）（ステップｓ３）。
【００４１】
次に、操作ログを任意時間蓄積した後に、ＧＵＩ構築部３４が遷移先選定部３３から出力されたＧＵＩ状態（最初は初期状態）を読み取り、ＧＵＩスタブＣを構築する（ステップｓ４）。
【００４２】
次に、操作観測部３５が、構築されたＧＵＩスタブＣに対する、制御プログラムの作成またはデバッグを目的とした操作を観測してその内容を出力する（ステップｓ５）。
【００４３】
次に、制御プログラム作成／デバッグツールＢの要求に応じて、操作内容またはＧＵＩ状態を制御プログラム作成／デバッグツールＢに出力する（ステップｓ６）。以後ステップｓ３からステップｓ６を完了するまで繰り返す。
【００４４】
次に、図６を参照して本発明のＧＵＩスタブ自動生成装置を用いた制御プログラム作成／デバッグツールＢの動作について説明する。ここでは、制御プログラム作成／デバッグツールＢとして、対象ソフトウェアＡに対する自動操作の制御プログラムを制御プログラム作成者４２がコンピュータ２０において実施する場合を例にとって説明する。
【００４５】
図６に示すように、制御プログラム作成／デバッグツールＢは、ＧＵＩスタブ自動生成装置３０によって作成されたＧＵＩスタブＣに対して、制御プログラムの作成またはデバッグを目的として操作を加える（ステップｓ１１）。
【００４６】
次に、ＧＵＩスタブ自動生成装置３０の情報出力部３６が、ＧＵＩスタブＣに対して加えられた操作内容や、そのときのＧＵＩ状態などの制御プログラムの作成またはデバッグのために必要な情報を制御プログラム作成／デバッグツールＢに出力する（ステップｓ１２）。
【００４７】
制御プログラム作成／デバッグツールＢはステップｓ１２の情報をもとに制御プログラムの作成またはデバッグを行う（ステップｓ１３）。当該制御プログラムの作成またはデバッグ処理の内容については従来周知のものと同様なので詳述は省略する。
【００４８】
最後に、操作内容に応じてＧＵＩスタブＣが次の画面に遷移し、以後、ステップｓ１１からｓ１３を繰り返す。
【００４９】
ところで本発明では、ＧＵＩ構築部３４により、制御プログラムの作成またはデバッグ時のパラメータを入力として、ＧＵＩ変換処理、ＧＵＩ変化処理、ＧＵＩ画像補完処理のいずれか１つまたは２つ以上を加えることができる。
【００５０】
ここで、ＧＵＩ変換処理とは、構築されるＧＵＩスタブに対して実装の変換がパラメータとして与えられた場合に、構造情報を当該パラメータに応じて変換し、対象ソフトウェアと異なる実装でＧＵＩスタブを構築する処理をいう。また、ＧＵＩ変化処理とは、制御プログラムの作成／デバッグ時に不要となるＧＵＩ部品の削除、そのサイズや配置の変化などのＧＵＩ変化についてパラメータが与えられた場合に、構築されるＧＵＩスタブに当該パラメータに応じて変化を加える処理をいう。さらにまた、ＧＵＩ画像補完処理とは、画像情報による補完有りがパラメータとして与えられた場合に、構造情報の不完全な部分に対して当該部分に対応する画像情報をクリッピングして配置することでＧＵＩの外観を補完し、再現率を高める処理をいう。
【００５１】
これらは、制御プログラムの作成またはデバッグを実際の対象ソフトウェアとは異なる端末やプラットフォームで実施することや、制御プログラムの作成またはデバッグに不要なＧＵＩ部品を取り除くもしくは形を変えること、ＧＵＩスタブの再現率を高めることを可能にしている。
【００５２】
具体的には、ＧＵＩ変換処理の一例として、変換対象の実装毎に構造情報の変換マップを適用する方法を図７に示す。図７に示すように、構造情報に含まれるＧＵＩ部品の情報を変換マップによってＨＴＭＬ用の表現や、ＸＡＭＬ用の表現に変換することでＧＵＩ構築の際に異なる実装で構築することができる。
【００５３】
また、ＧＵＩ変化処理の一例として、スタイルシートにより変化を定義する方法を図８に示す。図８に示すように、例えば削除したいＧＵＩ部品の定義、そのサイズや配置を変えたいＧＵＩ部品の定義をスタイルシートに記述することで、ＧＵＩ構築の際に変化が反映された形で構築することができる。
【００５４】
また、ＧＵＩ画像補完処理の一例として、構築されたＧＵＩのキャプチャ画像と操作ログの画像情報との比較による方法を図９に示す。ＧＵＩ部品によっては構造情報が完全に取得できない場合がある。例えば、独自に作成されたＧＵＩ部品やＪａｖａ（登録商標）で実装された一部のＧＵＩ部品などは構造情報を取得できない。そのため図９に示すように構造情報のみから作成されたＧＵＩスタブに欠損が生じ、画像情報と差が生まれる場合がある。ＧＵＩ画像補完処理では２つの画像の比較により構築されたＧＵＩの欠損部分を認識し、欠損部分に画像情報をクリップしたものを埋め込むことにより外観としての再現率を高めることができる。
【００５５】
さらに、対象ソフトウェアの全てのＧＵＩ状態の遷移先が、操作ログとして記録されていることは少なく、ＧＵＩスタブを作成する場合にＧＵＩ状態遷移図に存在しない遷移先が必要となる場合がある。このような場合には、遷移先選定部３３により、記録されていない遷移先を推定して出力することで、操作ログの不備を補完する。
【００５６】
記録されている操作ログから未知の遷移先を推定する処理の一例としては、図１０に示すように操作ログ内のＧＵＩ状態の類似性や観測された操作内容の類似性から同一と推定されるＧＵＩ状態を出力する方法がある。
【００５７】
ＧＵＩ状態の類似性を求める方法としては、構造情報に対しては木構造の編集距離に基づく類似度などの任意の既存手法が適用でき、画像情報に関しては画素値の平均やヒストグラムを用いた類似度など任意の既存手法が適用できる。また、操作内容の類似性については、各操作の種類に応じて任意の定義が可能である。例えば、「座標（Ｘ，Ｙ）をクリック」という操作内容と「座標（Ｘ’，Ｙ’）をクリック」という操作内容の類似度は、（Ｘ，Ｙ）と（Ｘ’，Ｙ’）のユークリッド距離による類似度により定義することができる。その他にも、完全に一致する場合にのみ類似性を認め、それ以外は類似性を認めないといった定義も可能である。
【００５８】
また、遷移先の推定では類似度による方法の他に、記録されている操作ログに対して存在しないエッジを人が事前に教示する（付け加える）こともできる。
【００５９】
加えて、過去の操作内容やＧＵＩ状態の系列に応じて遷移先が決定するような複雑な遷移の場合には、コンテキスト情報を事前に与えることで遷移先を推定するコンテキスト推定処理により遷移先を決定する。具体的には図１１に示すように、コンテキスト情報として特定のパス情報（条件）および特定の遷移先（動作）を与えたとき、このような特定のパスが観測された場合に特定の遷移先を示す、ここでは禁止操作として警告をＧＵＩスタブ上に表示するといったことが可能である。
【００６０】
さらに、本発明では前記ＧＵＩ変換処理または変化処理を含む場合に、対象ソフトウェアおよび操作ログに記録されている情報とは異なる（変化した）ＧＵＩを構築することができる。これにより、変換または変化処理が加わったＧＵＩに対して行われた操作は、対象ソフトウェアへの操作や操作ログに記録されている操作から変様してしまう。
【００６１】
例えば図１２に示すように、ＧＵＩ変化処理によりボタンの位置を変更して構築した場合に、当該ボタンに操作が行われたとき、「座標（Ｘ’，Ｙ’）をクリック」という操作が操作観測部３５によって観測されるが、実際のソフトウェア上あるいは操作ログのＧＵＩ状態遷移図に記録されているのは「座標（Ｘ，Ｙ）をクリック」という操作である。
【００６２】
操作変換処理では、ＧＵＩ変換処理またはＧＵＩ変化処理に伴う操作内容の変様を取り除き、対象ソフトウェアあるいは操作ログに記憶されている操作に変換する。具体的には、操作観測部３５により、ＧＵＩ変換処理または変化処理で用いられた変換マップやスタイルシートの情報を参照し、変換前または変化前のＧＵＩの構造情報と、変換後または変化後のＧＵＩの構造情報との対応関係を取得することで、操作内容を変換前または変化前のものに変換する。
【００６３】
このように本発明に係るＧＵＩスタブ自動生成装置によれば、操作ログにより自動生成されたＧＵＩスタブにおいて、制御プログラムの作成またはデバッグを実現できるので、デバッグ作業などにおける対象システム本体に対する誤った自動操作などのリスクをなくした制御プログラムの作成またはデバッグが可能となる。また、ＧＵＩ構築において変換処理、変化処理、画像補完処理や操作変換処理により、異なるプラットフォームにおけるＧＵＩスタブ作成や、外観を変化させたＧＵＩスタブ作成を可能にした。さらに、遷移先推定処理により不十分な操作ログからのＧＵＩスタブ作成を可能にした。これにより、制御プログラムの作成またはデバッグにおけるリスク低減だけではなく、制御プログラム開発を強力に支援できるようになる。
【符号の説明】
【００６４】
１０，２０：コンピュータ、１１，２１：ＯＳ、１２，２２：入力デバイス、１３，２３：ディスプレイ、３０：ＧＵＩスタブ自動生成装置、３１：操作ログ取得部、３２：操作ログ記録部、３３：遷移先選定部、３４：ＧＵＩ構築部、３５：操作観測部、３６：情報出力部、４１：オペレータ、４２：制御プログラム作成者、Ａ：対象ソフトウェア、Ｂ：制御プログラム作成／デバッグツール、Ｃ：ＧＵＩスタブ。
【先行技術文献】
【非特許文献】
【００６５】
【非特許文献１】横瀬、田中、豊田、堀田、井上、杉本、「端末操作自動化ソフトＵＭＳの概要と適用事例」、信学技報、vol.111、no.488、ICM2011-73、2012年3月、pp.149-154
【非特許文献２】”Ｗｉｎｄｏｗｓ自動化ソフト  ＵＷＳＣ”、［ｏｎｌｉｎｅ］、umiumi、［平成２５年８月５日検索］、インターネット＜ＵＲＬ：http://www.uwsc.info/＞
【非特許文献３】”自動化スクリプト言語  ＡｕｔｏＩｔ”、［ｏｎｌｉｎｅ］、AutoIt Consulting Ltd.、［平成２５年８月５日検索］、インターネット＜ＵＲＬ：http://www.autoitscript.com/site/＞
【図１】
0006052892.tif 000002
【図２】
0006052892.tif 000003
【図３】
0006052892.tif 000004
【図４】
0006052892.tif 000005
【図５】
0006052892.tif 000006
【図６】
0006052892.tif 000007
【図７】
0006052892.tif 000008
【図８】
0006052892.tif 000009
【図９】
0006052892.tif 000010
【図１０】
0006052892.tif 000011
【図１１】
0006052892.tif 000012
【図１２】
0006052892.tif 000013