(57)【特許請求の範囲】
【請求項１】
ソフトウェアが表示する画面のキャプチャ画像を含む当該ソフトウェアの操作手順書を生成する装置であって、
前記ソフトウェアに対する操作毎に当該ソフトウェアが表示する画面をキャプチャすることを複数回の操作について行うことにより、当該ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得する画像取得部と、
前記複数のキャプチャ画像を、意味のあるまとまりを構成する少なくとも１回の操作に応じて取得された少なくとも１つのキャプチャ画像が各々に属する複数のキャプチャ画像群に分割する分割部と、
前記複数のキャプチャ画像群の各キャプチャ画像群について当該各キャプチャ画像群に属する一のキャプチャ画像を含む前記操作手順書を生成する生成部と
を含む、装置。
【請求項２】
前記ソフトウェアが表示する複数のオブジェクトに関するオブジェクト情報を取得する情報取得部を更に含み、
前記分割部は、前記オブジェクト情報を用いて、前記複数のキャプチャ画像を前記複数のキャプチャ画像群に分割する、請求項１の装置。
【請求項３】
前記情報取得部は、前記ソフトウェアが表示する一のオブジェクトに対する操作に応じて、当該一のオブジェクトとは異なる他のオブジェクトが出現したかどうかを示す前記オブジェクト情報を取得し、
前記分割部は、前記他のオブジェクトが出現したことを前記オブジェクト情報が示す場合に、前記一のオブジェクトに対する操作に応じて取得されたキャプチャ画像と、当該操作の１つ前又は１つ後の操作に応じて取得されたキャプチャ画像とが別々のキャプチャ画像群に属するように、前記複数のキャプチャ画像を前記複数のキャプチャ画像群に分割する、請求項２の装置。
【請求項４】
前記情報取得部は、前記複数のオブジェクトのうちの２つのオブジェクトが表示される領域が重なるかどうかを示す前記オブジェクト情報を取得し、
前記分割部は、前記２つのオブジェクトが表示される領域が重ならないことを前記オブジェクト情報が示す場合に、当該２つのオブジェクトのうちの第１のオブジェクトに対する操作に応じて取得されたキャプチャ画像と、当該２つのオブジェクトのうちの第２のオブジェクトに対する操作に応じて取得されたキャプチャ画像とが別々のキャプチャ画像群に属するように、前記複数のキャプチャ画像を前記複数のキャプチャ画像群に分割する、請求項２又は請求項３の装置。
【請求項５】
前記分割部は、前記ソフトウェアが表示する１つのオブジェクトに対する連続しない２回の操作に応じて取得された２つのキャプチャ画像が別々のキャプチャ画像群に属するように、前記複数のキャプチャ画像を前記複数のキャプチャ画像群に分割する、請求項１乃至請求項４の何れかの装置。
【請求項６】
前記分割部は、前記操作手順書に含めるキャプチャ画像の数の前記複数のキャプチャ画像の数に対する割合の指定に基づいて、前記複数のキャプチャ画像を前記複数のキャプチャ画像群に分割する、請求項１乃至請求項５の何れかの装置。
【請求項７】
前記生成部は、前記複数のキャプチャ画像群の各キャプチャ画像群について、前記少なくとも１回の操作のうちの最後の操作に応じて取得されたキャプチャ画像と、当該少なくとも１回の操作の順序を示す情報とを含む前記操作手順書を生成する、請求項１乃至請求項６の何れかの装置。
【請求項８】
ソフトウェアが表示する画面のキャプチャ画像を含む当該ソフトウェアの操作手順書を生成する装置であって、
前記ソフトウェアに対する操作毎に当該ソフトウェアが表示する画面をキャプチャすることを複数回の操作について行うことにより、当該ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得する画像取得部と、
前記ソフトウェアが表示する複数のオブジェクトの階層構造を示す階層構造情報を取得し、かつ、当該複数のオブジェクトのうちの一のオブジェクトに対する操作に応じて、当該一のオブジェクトとは異なる他のオブジェクトが出現したことを示す出現情報を取得する情報取得部と、
前記階層構造情報に基づいて、前記複数のオブジェクトにそれぞれ対応する複数のノードと、当該複数のノードのうちの親子関係にある２つのノードを結合する複数のリンクとを含む木構造を生成する木構造生成部と、
前記複数のリンクのうち、前記一のオブジェクトに対応するノードと、前記他のオブジェクトに対応するノードとの間にあるリンクに、前記出現情報を付加する付加部と、
前記木構造において、前記複数のオブジェクトに対する操作の順に当該複数のオブジェクトにそれぞれ対応する複数のノードを走査した際に、前記出現情報が付加されたリンクを通過すれば、前記一のオブジェクトに対する操作に応じて取得されたキャプチャ画像と、当該操作の１つ前又は１つ後の操作に応じて取得されたキャプチャ画像とが別々のキャプチャ画像群に属するように、前記複数のキャプチャ画像を複数のキャプチャ画像群に分割する分割部と、
前記複数のキャプチャ画像群の各キャプチャ画像群について当該各キャプチャ画像群に属する一のキャプチャ画像を含む前記操作手順書を生成する操作手順書生成部と
を含む、装置。
【請求項９】
ソフトウェアが表示する画面のキャプチャ画像を含む当該ソフトウェアの操作手順書を生成する装置であって、
前記ソフトウェアに対する操作毎に当該ソフトウェアが表示する画面をキャプチャすることを複数回の操作について行うことにより、当該ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得する画像取得部と、
前記ソフトウェアが表示する複数のオブジェクトの階層構造を示す階層構造情報と、当該複数のオブジェクトのうちの表示される領域が重ならない２つのオブジェクトを示す領域情報とを取得する情報取得部と、
前記階層構造情報に基づいて、前記複数のオブジェクトにそれぞれ対応する複数のノードを含む木構造を生成する木構造生成部と、
前記複数のノードのうち、前記２つのオブジェクトにそれぞれ対応する２つのノードの親のノードを、前記領域情報に基づいて特定する特定部と、
前記木構造において、前記複数のオブジェクトに対する操作の順に当該複数のオブジェクトにそれぞれ対応する複数のノードを走査した際に、前記親のノードを通過すれば、当該２つのオブジェクトのうちの第１のオブジェクトに対する操作に応じて取得されたキャプチャ画像と、当該２つのオブジェクトのうちの第２のオブジェクトに対する操作に応じて取得されたキャプチャ画像とが別々のキャプチャ画像群に属するように、前記複数のキャプチャ画像を複数のキャプチャ画像群に分割する分割部と、
前記複数のキャプチャ画像群の各キャプチャ画像群について当該各キャプチャ画像群に属する一のキャプチャ画像を含む前記操作手順書を生成する操作手順書生成部と
を含む、装置。
【請求項１０】
ソフトウェアが表示する画面のキャプチャ画像を含む当該ソフトウェアの操作手順書を生成する方法であって、
前記ソフトウェアに対する操作毎に当該ソフトウェアが表示する画面をキャプチャすることを複数回の操作について行うことにより、当該ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得するステップと、
前記複数のキャプチャ画像を、意味のあるまとまりを構成する少なくとも１回の操作に応じて取得された少なくとも１つのキャプチャ画像が各々に属する複数のキャプチャ画像群に分割するステップと、
前記複数のキャプチャ画像群の各キャプチャ画像群について当該各キャプチャ画像群に属する一のキャプチャ画像を含む前記操作手順書を生成するステップと
を含む、方法。
【請求項１１】
ソフトウェアが表示する画面のキャプチャ画像を含む当該ソフトウェアの操作手順書を生成する装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
前記ソフトウェアに対する操作毎に当該ソフトウェアが表示する画面をキャプチャすることを複数回の操作について行うことにより、当該ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得する画像取得部と、
前記複数のキャプチャ画像を、意味のあるまとまりを構成する少なくとも１回の操作に応じて取得された少なくとも１つのキャプチャ画像が各々に属する複数のキャプチャ画像群に分割する分割部と、
前記複数のキャプチャ画像群の各キャプチャ画像群について当該各キャプチャ画像群に属する一のキャプチャ画像を含む前記操作手順書を生成する生成部と
して機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作手順書を生成する装置及び方法に関する。特に、本発明は、ソフトウェアが表示する画面のキャプチャ画像を含むそのソフトウェアの操作手順書を生成する装置及び方法に関する。
【背景技術】
【０００２】
ソフトウェアの操作手順をそのソフトウェアが表示する画面のキャプチャ画像を用いながら文書化してソフトウェアの操作手順書を作成する作業は、様々な場面で行われている。例えば、ソフトウェアのマニュアルの作成、テストの手順書の作成、チーム内での知識の共有、開発者への問題報告での再現する手順の記述等の場面である。
【０００３】
ところが、ソフトウェアの操作手順書を人手で作成する作業には、非常に多くの時間と手間がかかる。また、ソフトウェアの操作手順書の作成者によって、操作手順書の書き方や詳細度に差が出てしまう。
【０００４】
そこで、ソフトウェアの操作手順書をコンピュータで自動生成することが求められており、操作手順書の自動生成装置は、公報記載の技術としても知られている（例えば、特許文献１、２参照）。
【０００５】
特許文献１は、ユーザが、ルートURLを指定すると、ルートURLが示すWebアプリケーションサーバーのWebアプリケーションの画面にアクセスする手段と、アクセスした画面を引数として画面解析処理を呼び出す手段と、画面解析処理によって、解析対象の画面のHTMLを解析し、画面中に存在する全てのリンク、フォームの情報を取得し、画面情報記憶部に登録する手段と、解析対象の画面をキャプチャし、それを画像ファイルに変換し、画面画像記憶部に保存する手段と、取得したすべてのリンク、フォームについて、アクセス、又は、フォーム送信を行い、画面遷移を行う手段等を備えたWebアプリケーションの操作手順書生成システムを開示する。
【０００６】
特許文献２は、アプリケーションの表示画面のデータを、アプリケーションへの操作イベントが発生する毎に取得し、作業順序や遷移レベルを示す番号を対応させて管理し、利用者が正常系の手順書を作る旨の指示を行うと、自動的に正常遷移の画面が選択され、手順書に採用され、また、異常系の遷移画面を選択することも可能であり、更に、利用者は、手動で、手順書に使用する画面を選択することも可能である操作手順書の自動生成装置を開示する。
【０００７】
また、ソフトウェアの操作手順書を自動生成する際に用いることが可能なプログラム製品の開発も行われている（例えば、非特許文献１、２参照）。
【０００８】
非特許文献１は、キャプチャ画像をタブで撮り溜めし、後から画像編集等を行うことができるマニュアル作成用キャプチャソフトを開示する。
【０００９】
非特許文献２は、テスト中のアプリケーションのＵＩで実行した各操作をテキストとしてファイルに格納する操作ログを作成できるテストケース作成支援ツールを開示する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−７９３４２号公報
【特許文献２】特開２００７−１１５３２号公報
【非特許文献１】マニュアル作成用キャプチャソフト ＴａｂＤｅＣａｐｔｕｒｅ、［online］、［平成２５年５月１５日検索］、インターネット＜URL：http://www.vector.co.jp/soft/winnt/art/se462159.html＞
【非特許文献２】Ｖｉｓｕａｌ Ｓｔｕｄｉｏ テストケース生成支援ツール、［online］、［平成２５年５月１５日検索］、インターネット＜URL：http://msdn.microsoft.com/ja-jp/library/vstudio/dd421944.aspx＞
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１、２の発明では、アプリケーションでイベントが発生する毎に画面のキャプチャ画像を取得し、これを使用して操作手順書を自動生成している。
【００１２】
しかしながら、アプリケーションでイベントが発生する毎に画面のキャプチャ画像を取得したのでは、画像量が膨大になり、操作手順書のファイルサイズも大きくなってしまう。また、イベント毎の画面のキャプチャ画像が貼られた操作手順書は、読み手にとって非常に冗長に感じられる。
【００１３】
尚、非特許文献１、２は、ソフトウェアの操作手順書を自動生成する際に用いることが可能なプログラム製品を開示するに過ぎず、このような問題に対する解決手段を提案するものではない。
【００１４】
本発明の目的は、ソフトウェアが表示する画面のキャプチャ画像を含む操作手順書を生成する際に、操作手順書に含めるキャプチャ画像の量を抑えることにある。 
【課題を解決するための手段】
【００１５】
かかる目的のもと、本発明は、ソフトウェアが表示する画面のキャプチャ画像を含むソフトウェアの操作手順書を生成する装置であって、ソフトウェアに対する複数回の操作に応じて、ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得する画像取得部と、複数のキャプチャ画像を、意味のあるまとまりを構成する少なくとも１回の操作に応じて取得された少なくとも１つのキャプチャ画像が各々に属する複数のキャプチャ画像群に分割する分割部と、複数のキャプチャ画像群の各キャプチャ画像群について各キャプチャ画像群に属する一のキャプチャ画像を含む操作手順書を生成する生成部とを含む、装置を提供する。
【００１６】
ここで、この装置は、ソフトウェアが表示する複数のオブジェクトに関するオブジェクト情報を取得する情報取得部を更に含み、分割部は、オブジェクト情報を用いて、複数のキャプチャ画像を複数のキャプチャ画像群に分割する、ものであってよい。その場合、情報取得部は、ソフトウェアが表示する一のオブジェクトに対する操作に応じて、一のオブジェクトとは異なる他のオブジェクトが出現したかどうかを示すオブジェクト情報を取得し、分割部は、他のオブジェクトが出現したことをオブジェクト情報が示す場合に、一のオブジェクトに対する操作に応じて取得されたキャプチャ画像と、操作の１つ前又は１つ後の操作に応じて取得されたキャプチャ画像とが別々のキャプチャ画像群に属するように、複数のキャプチャ画像を複数のキャプチャ画像群に分割する、ものであってよい。或いは、情報取得部は、複数のオブジェクトのうちの２つのオブジェクトが表示される領域が重なるかどうかを示すオブジェクト情報を取得し、分割部は、２つのオブジェクトが表示される領域が重ならないことをオブジェクト情報が示す場合に、２つのオブジェクトのうちの第１のオブジェクトに対する操作に応じて取得されたキャプチャ画像と、２つのオブジェクトのうちの第２のオブジェクトに対する操作に応じて取得されたキャプチャ画像とが別々のキャプチャ画像群に属するように、複数のキャプチャ画像を複数のキャプチャ画像群に分割する、ものであってもよい。
【００１７】
また、分割部は、ソフトウェアが表示する１つのオブジェクトに対する連続しない２回の操作に応じて取得された２つのキャプチャ画像が別々のキャプチャ画像群に属するように、複数のキャプチャ画像を複数のキャプチャ画像群に分割する、ものであってよい。
【００１８】
更に、分割部は、操作手順書に含めるキャプチャ画像の数の複数のキャプチャ画像の数に対する割合の指定に基づいて、複数のキャプチャ画像を複数のキャプチャ画像群に分割する、ものであってよい。
【００１９】
一方、生成部は、複数のキャプチャ画像群の各キャプチャ画像群について、少なくとも１回の操作のうちの最後の操作に応じて取得されたキャプチャ画像と、少なくとも１回の操作の順序を示す情報とを含む操作手順書を生成する、ものであってよい。
【００２０】
また、本発明は、ソフトウェアが表示する画面のキャプチャ画像を含むソフトウェアの操作手順書を生成する装置であって、ソフトウェアに対する複数回の操作に応じて、ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得する画像取得部と、ソフトウェアが表示する複数のオブジェクトの階層構造を示す階層構造情報を取得し、かつ、複数のオブジェクトのうちの一のオブジェクトに対する操作に応じて、一のオブジェクトとは異なる他のオブジェクトが出現したことを示す出現情報を取得する情報取得部と、階層構造情報に基づいて、複数のオブジェクトにそれぞれ対応する複数のノードと、複数のノードのうちの親子関係にある２つのノードを結合する複数のリンクとを含む木構造を生成する木構造生成部と、複数のリンクのうち、一のオブジェクトに対応するノードと、他のオブジェクトに対応するノードとの間にあるリンクに、出現情報を付加する付加部と、木構造において、複数のオブジェクトに対する操作の順に複数のオブジェクトにそれぞれ対応する複数のノードを走査した際に、出現情報が付加されたリンクを通過すれば、一のオブジェクトに対する操作に応じて取得されたキャプチャ画像と、操作の１つ前又は１つ後の操作に応じて取得されたキャプチャ画像とが別々のキャプチャ画像群に属するように、複数のキャプチャ画像を複数のキャプチャ画像群に分割する分割部と、複数のキャプチャ画像群の各キャプチャ画像群について各キャプチャ画像群に属する一のキャプチャ画像を含む操作手順書を生成する操作手順書生成部とを含む、装置も提供する。
【００２１】
また、本発明は、ソフトウェアが表示する画面のキャプチャ画像を含むソフトウェアの操作手順書を生成する装置であって、ソフトウェアに対する複数回の操作に応じて、ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得する画像取得部と、ソフトウェアが表示する複数のオブジェクトの階層構造を示す階層構造情報と、複数のオブジェクトのうちの表示される領域が重ならない２つのオブジェクトを示す領域情報とを取得する情報取得部と、階層構造情報に基づいて、複数のオブジェクトにそれぞれ対応する複数のノードを含む木構造を生成する木構造生成部と、複数のノードのうち、２つのオブジェクトにそれぞれ対応する２つのノードの親のノードを、領域情報に基づいて特定する特定部と、木構造において、複数のオブジェクトに対する操作の順に複数のオブジェクトにそれぞれ対応する複数のノードを走査した際に、親のノードを通過すれば、２つのオブジェクトのうちの第１のオブジェクトに対する操作に応じて取得されたキャプチャ画像と、２つのオブジェクトのうちの第２のオブジェクトに対する操作に応じて取得されたキャプチャ画像とが別々のキャプチャ画像群に属するように、複数のキャプチャ画像を複数のキャプチャ画像群に分割する分割部と、複数のキャプチャ画像群の各キャプチャ画像群について各キャプチャ画像群に属する一のキャプチャ画像を含む操作手順書を生成する操作手順書生成部とを含む、装置も提供する。
【００２２】
更に、本発明は、ソフトウェアが表示する画面のキャプチャ画像を含むソフトウェアの操作手順書を生成する方法であって、ソフトウェアに対する複数回の操作に応じて、ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得するステップと、複数のキャプチャ画像を、意味のあるまとまりを構成する少なくとも１回の操作に応じて取得された少なくとも１つのキャプチャ画像が各々に属する複数のキャプチャ画像群に分割するステップと、複数のキャプチャ画像群の各キャプチャ画像群について各キャプチャ画像群に属する一のキャプチャ画像を含む操作手順書を生成するステップとを含む、方法も提供する。
【００２３】
更にまた、本発明は、ソフトウェアが表示する画面のキャプチャ画像を含むソフトウェアの操作手順書を生成する装置として、コンピュータを機能させるプログラムであって、コンピュータを、ソフトウェアに対する複数回の操作に応じて、ソフトウェアが表示する複数の画面の複数のキャプチャ画像を取得する画像取得部と、複数のキャプチャ画像を、意味のあるまとまりを構成する少なくとも１回の操作に応じて取得された少なくとも１つのキャプチャ画像が各々に属する複数のキャプチャ画像群に分割する分割部と、複数のキャプチャ画像群の各キャプチャ画像群について各キャプチャ画像群に属する一のキャプチャ画像を含む操作手順書を生成する生成部として機能させる、プログラムも提供する。
【発明の効果】
【００２４】
本発明によれば、ソフトウェアが表示する画面のキャプチャ画像を含む操作手順書を生成する際に、操作手順書に含めるキャプチャ画像の量を抑えることができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態における操作手順書生成装置の機能構成例を示したブロック図である。
【図２】本発明の実施の形態におけるオブジェクトツリー生成部が生成した初期段階のオブジェクトツリーを示した図である。
【図３】本発明の実施の形態におけるオブジェクトツリー生成部が不要な情報を削除した後のオブジェクトツリーを示した図である。
【図４】本発明の実施の形態における出現情報付加部が出現情報を付加した後のオブジェクトツリーを示した図である。
【図５】オブジェクトツリーに含まれる複数のパネルオブジェクトの表示領域の一例を示した図である。
【図６】本発明の実施の形態における領域情報付加部が領域情報を付加した後のオブジェクトツリーを示した図である。
【図７】本発明の実施の形態における第１グルーピング部の処理開始時に操作情報記憶部に記憶されている操作情報の一例を示した図である。
【図８】本発明の実施の形態における第１グルーピング部がグルーピングを行った後の操作グループ情報を示したである。
【図９】（ａ），（ｂ）は、タイプ１のリンクがある場合のセパレータの設定を説明するための図である。
【図１０】（ａ）〜（ｃ）は、タイプ３のリンクがある場合のセパレータの設定を説明するための図である。
【図１１】本発明の実施の形態における第１グルーピング部がグルーピングを行う際の動作例を示したフローチャートである。
【図１２】本発明の実施の形態における第２グルーピング部がグルーピングを行った後の操作グループ情報を示した図である。
【図１３】本発明の実施の形態における第２グルーピング部が第１のグルーピングを行う際の動作例を示したフローチャートである。
【図１４】本発明の実施の形態における第２グルーピング部が第２のグルーピングを行う際の動作例を示したフローチャートである。
【図１５】本発明の実施の形態における第３グルーピング部がグルーピングを行った後の操作グループ情報を示した図である。
【図１６−１】本発明の実施の形態における第３グルーピング部がグルーピングを行う際の動作例を示したフローチャートである。
【図１６−２】本発明の実施の形態における第３グルーピング部がグルーピングを行う際の動作例を示したフローチャートである。
【図１７】本発明の実施の形態におけるキャプチャ画像マージ部がキャプチャ画像をマージする際の加工処理について示した図である。
【図１８】本発明の実施の形態におけるキャプチャ画像マージ部が加工処理を行う際の動作例を示したフローチャートである。
【図１９】本発明の実施の形態におけるキャプチャ画像マージ部がキャプチャ画像をマージする際の別の加工処理を説明するための図である。
【図２０】本発明の実施の形態におけるキャプチャ画像マージ部が別の加工処理を行う際の動作例を示したフローチャートである。
【図２１】本発明の実施の形態を適用可能なコンピュータのハードウェア構成例を示した図である。
【発明を実施するための形態】
【００２６】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。本実施の形態では、意味のあるまとまりを構成する複数ステップの操作を１ステップの操作として記述した簡潔な操作手順書を生成する。具体的には、操作毎にキャプチャ画像を取得する際に、操作対象のオブジェクトに関する情報（以下、「オブジェクト情報」という）も取得する。このオブジェクト情報は、詳しくは後述するが、オブジェクトの階層構造、表示領域、出現及び消滅のタイミング等の情報を含む。そして、このオブジェクト情報に基づいて、意味のあるまとまりを構成する複数の操作に対応するキャプチャ画像が１つのグループに属するようにグループ化し、グループ化されたキャプチャ画像をマージする。
【００２７】
［操作手順書生成装置の機能構成］
図１は、本実施の形態における操作手順書生成装置１の機能構成例を示したブロック図である。図示するように、操作手順書生成装置１は、キャプチャ画像／オブジェクト情報取得部１０と、オブジェクト情報処理部２０と、操作情報グルーピング部３０と、キャプチャ画像マージ部４０と、これらの各機能部への入力データ又はこれらの各機能部からの出力データを記憶する各種記憶部とを備えている。
【００２８】
（キャプチャ画像／オブジェクト情報取得部）
図示するように、キャプチャ画像／オブジェクト情報取得部１０は、操作検出部１１と、画面キャプチャ部１２と、オブジェクト情報取得部１３と、イベント処理部１４とを含む。
【００２９】
操作検出部１１は、操作手順書が対象とするソフトウェアが起動され、図示しない操作開始ボタンが押下されると、このソフトウェアに対するユーザ操作を検出し、操作ＩＤと操作内容とを対応付けた操作情報を生成する。ここで、操作ＩＤとは、ユーザ操作が発生する順に割り振られた連番であり、操作を一意に識別する情報である。操作ＩＤは、例えば同じオブジェクトに対する複数のユーザ操作の重複が排除されたような場合であっても変化しない。尚、この操作情報は、各種記憶部の１つである操作情報記憶部１５に記憶される。また、操作検出部１１は、図示しない操作終了ボタンが押下されると、このソフトウェアに対するユーザ操作の検出を終了する。
【００３０】
画面キャプチャ部１２は、操作検出部１１がユーザ操作を検出する毎に、そのときソフトウェアが表示している画面をキャプチャする。ユーザ操作により画面が変更される場合は、変更前の画面をキャプチャする。そして、操作ＩＤとキャプチャ画像とを対応付けたキャプチャ情報を生成する。尚、このキャプチャ情報は、各種記憶部の１つであるキャプチャ情報記憶部１６に記憶される。本実施の形態では、複数のキャプチャ画像を取得する画像取得部の一例として、画面キャプチャ部１２を設けている。
【００３１】
オブジェクト情報取得部１３は、操作検出部１１がユーザ操作を検出する毎に、操作対象のオブジェクトに関するオブジェクト情報を取得する。ここで、オブジェクト情報は、オブジェクトの階層構造を示す階層情報と、オブジェクトの表示領域を示す領域情報（座標等）とを含む。また、オブジェクト情報は、新しいオブジェクトの出現を示す出現情報も含む。更に、この出現情報には、１つ前に操作したオブジェクトがアクティブ（操作可能）かインアクティブ（操作不可能）かを示す情報や、これまでに操作したパネルオブジェクト（後述）のうち非表示になったものを示す情報も含まれ得る。尚、このオブジェクト情報は、各種記憶部の１つであるオブジェクト情報記憶部１７に記憶される。本実施の形態では、オブジェクト情報を取得する情報取得部、階層構造情報と出現情報とを取得する情報取得部、階層構造情報と領域情報とを取得する情報取得部の一例として、オブジェクト情報取得部１３を設けている。
【００３２】
イベント処理部１４は、操作検出部１１が検出したユーザ操作に応じたイベント処理を実行する。
【００３３】
尚、これらの機能部は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、ＣＰＵ９０ａ（図２１参照）が、操作検出部１１、画面キャプチャ部１２、オブジェクト情報取得部１３、イベント処理部１４を実現するプログラムを例えば磁気ディスク装置９０ｇ（図２１参照）からメインメモリ９０ｃ（図２１参照）に読み込んで実行することにより、これらの機能部は実現される。また、操作情報記憶部１５、キャプチャ情報記憶部１６、オブジェクト情報記憶部１７は、例えば磁気ディスク装置９０ｇ（図２１参照）により実現される。
【００３４】
（オブジェクト情報処理部）
図示するように、オブジェクト情報処理部２０は、オブジェクトツリー生成部２１と、出現情報付加部２２と、領域情報付加部２３とを含む。
【００３５】
オブジェクトツリー生成部２１は、オブジェクト情報記憶部１７に記憶されたオブジェクト情報に含まれる階層情報を用いて、ソフトウェアが表示する複数のオブジェクトの階層構造を表すオブジェクトツリーを生成する。具体的には、複数のオブジェクトにそれぞれ対応する複数の要素（ノード）を含み、あるオブジェクトが別のオブジェクトを含む場合に、前者のオブジェクトに対応する要素が、後者のオブジェクトに対応する要素の上位に位置付けられるオブジェクトツリーを生成する。尚、このオブジェクトツリーは、各種記憶部の１つであるオブジェクトツリー記憶部２４に記憶される。また、オブジェクトツリー生成部２１は、オブジェクトツリーに含まれる要素のうち、操作情報グルーピング部３０で参照されない要素を、不要な情報として削除する処理も行う。本実施の形態では、木構造を生成する木構造生成部の一例として、オブジェクトツリー生成部２１を設けている。
【００３６】
出現情報付加部２２は、オブジェクト情報記憶部１７に記憶されたオブジェクト情報に含まれる出現情報を、オブジェクトツリー記憶部２４に記憶されたオブジェクトツリーに付加する。具体的には、あるオブジェクトを操作することにより別のオブジェクトが出現したことを出現情報が示していれば、オブジェクトツリーにおいて、前者のオブジェクトに対応する要素から後者のオブジェクトに対応する要素までのパスに含まれるリンクに出現情報を付加する。本実施の形態では、出現情報を付加する付加部の一例として、出現情報付加部２２を設けている。
【００３７】
領域情報付加部２３は、オブジェクト情報記憶部１７に記憶されたオブジェクト情報に含まれる領域情報を、オブジェクトツリー記憶部２４に記憶されたオブジェクトツリーに付加する。具体的には、あるオブジェクトの表示領域を示す領域情報を、オブジェクトツリーにおいて、そのオブジェクトに対応する要素に付加する。また、領域情報付加部２３は、排他的に配置された複数の子のパネルオブジェクトを持つ親のパネルオブジェクトを特定し、このパネルオブジェクトの情報を、オブジェクトグループの情報として、領域情報に含める。本実施の形態では、親のノードを特定する特定部の一例として、領域情報付加部２３を設けている。但し、領域情報付加部２３は領域情報を付加する処理までを行い、親のパネルオブジェクトを特定する処理は、後述する第３グルーピング部３３が行うようにしてもよい。
【００３８】
尚、これらの機能部は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、ＣＰＵ９０ａ（図２１参照）が、オブジェクトツリー生成部２１、出現情報付加部２２、領域情報付加部２３を実現するプログラムを例えば磁気ディスク装置９０ｇ（図２１参照）からメインメモリ９０ｃ（図２１参照）に読み込んで実行することにより、これらの機能部は実現される。また、オブジェクトツリー記憶部２４は、例えば磁気ディスク装置９０ｇ（図２１参照）により実現される。
【００３９】
（操作情報グルーピング部）
図示するように、操作情報グルーピング部３０は、第１グルーピング部３１と、第２グルーピング部３２と、第３グルーピング部３３とを含む。本実施の形態では、複数のキャプチャ画像を複数のキャプチャ画像群に分割する分割部の一例として、第１グルーピング部３１、第２グルーピング部３２及び第３グルーピング部３３を設けている。
【００４０】
第１グルーピング部３１は、操作情報記憶部１５に記憶された操作情報に対して、オブジェクトツリー記憶部２４に記憶されたオブジェクトツリーに付加された出現情報に基づくグルーピングを行い、操作情報のグループを示す情報（以下、「操作グループ情報」という）を生成する。尚、この操作グループ情報は、各種記憶部の１つである操作グループ情報記憶部３４に記憶される。
【００４１】
第２グルーピング部３２は、操作グループ情報記憶部３４に記憶された操作グループ情報に対して、同じグループ内の同じオブジェクトに対する複数の操作に着目したグルーピングを行う。
【００４２】
第３グルーピング部３３は、操作グループ情報記憶部３４に記憶された操作グループ情報に対して、ユーザが指定した圧縮率と、領域情報に含められたオブジェクトグループの情報とに基づくグルーピングを行う。
【００４３】
尚、これらの機能部は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、ＣＰＵ９０ａ（図２１参照）が、第１グルーピング部３１、第２グルーピング部３２、第３グルーピング部３３を実現するプログラムを例えば磁気ディスク装置９０ｇ（図２１参照）からメインメモリ９０ｃ（図２１参照）に読み込んで実行することにより、これらの機能部は実現される。また、操作グループ情報記憶部３４は、例えば磁気ディスク装置９０ｇ（図２１参照）により実現される。
【００４４】
（キャプチャ画像マージ部）
キャプチャ画像マージ部４０は、操作グループ情報記憶部３４に記憶された操作グループ情報が示す操作情報のグループごとに、最後の操作ＩＤをキーとして、キャプチャ情報記憶部１６に記憶されたキャプチャ情報からキャプチャ画像を取り出し、取り出したキャプチャ画像をマージする。その際、操作情報のグループごとに、キャプチャ画像に対して、操作番号等の情報を付加する。また、新たに出現したオブジェクトをハイライトする処理を行ってもよい。本実施の形態では、各キャプチャ画像群に属する一のキャプチャ画像を含む操作手順書を生成する生成部、各キャプチャ画像群に属する一のキャプチャ画像を含む操作手順書を生成する操作手順書生成部の一例として、キャプチャ画像マージ部４０を設けている。
【００４５】
尚、このキャプチャ画像マージ部４０は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、ＣＰＵ９０ａ（図２１参照）が、キャプチャ画像マージ部４０を実現するプログラムを例えば磁気ディスク装置９０ｇ（図２１参照）からメインメモリ９０ｃ（図２１参照）に読み込んで実行することにより、このキャプチャ画像マージ部４０は実現される。
【００４６】
［操作手順書生成装置の動作］
次に、本実施の形態における操作手順書生成装置１の動作について詳細に説明する。但し、ここでは、キャプチャ画像／オブジェクト情報取得部１０の動作については、既に説明した通りなので省略し、オブジェクト情報処理部２０、操作情報グルーピング部３０、及び、キャプチャ画像マージ部４０の動作について説明する。
【００４７】
（オブジェクト情報処理部）
まず、オブジェクト情報処理部２０の各処理部の動作について詳細に説明する。
【００４８】
第一に、オブジェクトツリー生成部２１の動作について詳細に説明する。
オブジェクトツリー生成部２１は、オブジェクト情報記憶部１７に記憶されたオブジェクト情報に含まれる階層情報を用いてオブジェクトツリーを生成する。図２は、オブジェクトツリー生成部２１が生成した初期段階のオブジェクトツリーを示した図である。図において、Ｃ１，Ｃ２，Ｃ３，…と記された矩形の要素はＵＩコンポーネントを表し、Ｐ１，Ｐ２，Ｐ３，…と記された矩形の要素はパネルオブジェクトを表す。ここで、ＵＩコンポーネントとは、テキストボックス、ボタン等のユーザが操作できるオブジェクトである。パネルオブジェクトとは、少なくとも１つのオブジェクトをまとめて配置するためのオブジェクトであり、例えば、ボタンとラベルをまとめて配置したオブジェクトや、複数のパネルオブジェクトを配置したウィンドウ等である。
【００４９】
また、図には、何も記されていない矩形の要素も示されている。これは、ＵＩコンポーネント及びパネルオブジェクト以外のオブジェクトを表し、操作手順書の作成に不要な情報である。また、あるパネルオブジェクトと別のパネルオブジェクトとの間に分岐がない１対１の親子関係がある場合における子のパネルオブジェクト（例えば、図のＰ２，Ｐ８）も、操作手順書の作成に不要な情報である。そこで、オブジェクトツリー生成部２１は、これらの不要な情報を削除することにより、初期段階のオブジェクトツリーを、操作手順書の作成に必要な情報のみからなる操作手順書作成用オブジェクトツリーに変換する。
【００５０】
図３は、オブジェクトツリー生成部２１がこのような変換を行うことによって得られる操作手順書作成用オブジェクトツリーを示した図である。この図では、図２のオブジェクトツリーから、何も記されていなかった矩形の要素と、Ｐ２と記されていた矩形の要素と、Ｐ８と記されていた矩形の要素とが削除されている。
【００５１】
第二に、出現情報付加部２２の動作について詳細に説明する。
出現情報付加部２２は、図３に示したオブジェクトツリーに出現情報を付加する。ここで、出現情報は、上述したように、新しいオブジェクトが出現したことを示す情報である。但し、出現情報は、新しいオブジェクトが出現した際に、そのために操作されたオブジェクト、つまり、新しいオブジェクトの出現のトリガーとなったオブジェクト（以下、「トリガーオブジェクト」という）がアクティブ（操作可能）であるかインアクティブ（操作不可能）であるかを示す情報も含む。また、出現情報は、新しいオブジェクトが出現した際に、別のオブジェクトが非表示となっているか、つまり、消滅したかを示す情報も含む。
【００５２】
即ち、新しいオブジェクトが出現する場合としては、以下の３つのタイプが考えられる。
【００５３】
タイプ１は、トリガーオブジェクトがインアクティブになって、新しいオブジェクトが表示される、というタイプである。例えば、新しいオブジェクトとして子パネルが表示され、それまで表示されていたパネルが操作不可能な状態になる場合等がこのタイプに該当する。
【００５４】
タイプ２は、トリガーオブジェクトはアクティブのまま、新しいオブジェクトが表示される、というタイプである。例えば、ツリー構造のＵＩにおいて、親のオブジェクトをクリックすると、新しいオブジェクトとして、子のオブジェクトが表示される場合等がこのタイプに該当する。この場合、親のオブジェクトはアクティブであるので、これをクリックすることにより、子のオブジェクトを再び非表示にすることも可能である。
【００５５】
タイプ３は、トリガーオブジェクトはアクティブのまま、別のオブジェクトが非表示になって、新しいオブジェクトが表示される、というタイプである。例えば、タブをクリックすると、新しいオブジェクトとして、そのタブに対応するパネルが、それまで表示されていたパネルの代わりに表示される場合等がこのタイプに該当する。
【００５６】
そこで、出現情報付加部２２は、図３に示したオブジェクトツリーにおける新たに出現したオブジェクトに対応する要素とその親要素との間のリンクに対し、出現情報を、これら３つのタイプの何れに対するものであるかが分かるように付加する。
【００５７】
図４は、出現情報付加部２２がこのように出現情報を付加した後のオブジェクトツリーを示した図である。図中、細い破線は、タイプ１の出現情報が付加されたリンク（タイプ１のリンク）を表し、太い実線は、タイプ２の出現情報が付加されたリンク（タイプ２のリンク）を表し、太い破線は、タイプ３の出現情報が付加されたリンク（タイプ３のリンク）を表す。また、タイプ１〜３のリンクの近くに記述された「＜ｔｒｉｇｇｅｒ＝Ｃｍ＞」は、そのリンクに接続されたパネルオブジェクトのうちの下位のパネルオブジェクトが、ＵＩコンポーネントＣｍに対する操作をトリガーとして出現したことを表し、タイプ３のリンクの近くに記述された「＜ｒｅｍｏｖｅ＝Ｐｎ＞」は、そのリンクに接続されたパネルオブジェクトのうちの下位のパネルオブジェクトが出現した際に、パネルオブジェクトＰｎが消滅したことを表す。
【００５８】
即ち、図４は、ＵＩコンポーネントＣ２を操作することによりＵＩコンポーネントＣ２はインアクティブになってパネルオブジェクトＰ４が表示されたこと、ＵＩコンポーネントＣ１を操作することによりＵＩコンポーネントＣ１はインアクティブになってパネルオブジェクトＰ３が表示されたこと、ＵＩコンポーネントＣ４を操作することによりＵＩコンポーネントＣ４はアクティブのままパネルオブジェクトＰ７が表示されたこと、及び、ＵＩコンポーネントＣ５を操作することによりＵＩコンポーネントＣ５はアクティブのままパネルオブジェクトＰ９が非表示になってパネルオブジェクトＰ１０が表示されたことを示している。
【００５９】
第三に、領域情報付加部２３の動作について詳細に説明する。
領域情報付加部２３は、図３に示したオブジェクトツリーに領域情報を付加する。ここで、領域情報は、上述したように、オブジェクトの表示領域を示す情報である。
【００６０】
図５は、オブジェクトツリーに含まれる複数のパネルオブジェクトの表示領域の一例を示した図である。尚、パネルオブジェクトＰ１，Ｐ３は同じ領域を指しているが、これは、パネルオブジェクトＰ１の子パネルとして、図示しないパネルオブジェクトＰ４を表示するために、パネルオブジェクトＰ３を仮想的に設定したからである。また、パネルオブジェクトＰ９，Ｐ１０も同じ領域を指しているが、これは、これらのパネルオブジェクトとして、タブによって切り替えられるパネルを想定しているからである。
【００６１】
領域情報付加部２３は、図３に示したオブジェクトツリーにおけるパネルオブジェクトに対応する要素に対し、そのパネルオブジェクトの表示領域を示す領域情報を付加する。
【００６２】
図６は、パネルオブジェクトの表示領域が図５に示すようになっている場合において領域情報付加部２３が領域情報を付加した後のオブジェクトツリーを示した図である。図中、パネルオブジェクトに対応する要素の近くに記述された「＜Ｘ，Ｙ，Ｗ，Ｈ＞」が領域情報を表し、このうち、Ｘが表示領域の左上点のＸ座標を、Ｙが表示領域の左上点のＹ座標を、Ｗが表示領域の幅を、Ｈが表示領域の高さを、それぞれ表す。尚、Ｘ座標は、図５の右方向が正方向となるように設定され、Ｙ座標は、図５の下方向が正方向となるように設定される。
【００６３】
また、領域情報付加部２３は、オブジェクトツリーに付加された領域情報に基づいて、複数の子のパネルオブジェクトが排他的に配置された親のパネルオブジェクトをオブジェクトグループとし、階層が上位のものから順に列挙する。図５及び図６の例では、パネルオブジェクトＰ３が、排他的に配置されたパネルオブジェクトＰ５，Ｐ６を子のパネルオブジェクトとして持つので、１つ目のオブジェクトグループとされる。また、パネルオブジェクトＰ６が、排他的に配置されたパネルオブジェクトＰ１１，Ｐ１２を子のパネルオブジェクトとして持つので、２つ目のオブジェクトグループとされる。尚、このようにして列挙されたオブジェクトグループの配列も、領域情報に含めて、オブジェクトツリー記憶部２４に記憶されるものとする。
【００６４】
尚、図４では出現情報のみが付加されたオブジェクトツリーを示し、図６では領域情報のみが付加されたオブジェクトツリーを示した。操作情報グルーピング部３０で出現情報のみを用いて操作情報のグルーピングを行うのであれば、図４に示したオブジェクトツリーをオブジェクトツリー記憶部２４に記憶しておけばよいし、操作情報グルーピング部３０で領域情報のみを用いて操作情報のグルーピングを行うのであれば、図６に示したオブジェクトツリーをオブジェクトツリー記憶部２４に記憶しておけばよい。これに対し、操作情報グルーピング部３０で出現情報及び領域情報を用いて操作情報のグルーピングを行うのであれば、出現情報及び領域情報が付加されたオブジェクトツリーをオブジェクトツリー記憶部２４に記憶しておく必要がある。
【００６５】
（操作情報グルーピング部）
次に、このようなオブジェクトツリーがオブジェクトツリー記憶部２４に記憶されているものとして、操作情報グルーピング部３０の各処理部の動作について詳細に説明する。
【００６６】
第一に、第１グルーピング部３１の動作について詳細に説明する。
図７は、第１グルーピング部３１の処理開始時に操作情報記憶部１５に記憶されている操作情報の一例を示した図である。図示するように、操作情報は、操作ＩＤと操作内容とを対応付けたものとなっている。尚、以下では、操作ＩＤが「Ｋ」の操作を操作Ｋと表記することにする。
【００６７】
第１グルーピング部３１は、オブジェクトツリー記憶部２４に記憶されたオブジェクトツリーを参照しながら、操作情報記憶部１５に記憶された操作情報のグルーピングを行う。具体的には、ある操作ＩＤの操作に対応するＵＩコンポーネントと、次の操作ＩＤの操作に対応するＵＩコンポーネントとの間のパスを、オブジェクトツリーから検索する。その際、子のオブジェクトから親のオブジェクトへのリンクについては、特別な処理を行わない。一方、親のオブジェクトから子のオブジェクトへのリンクについては、それがタイプ１〜タイプ３のリンクの何れであるかによって異なる処理を行う。即ち、それがタイプ１のリンクであれば、これら２つの操作ＩＤの操作の間で操作情報を分ける。それがタイプ２のリンクであれば、特別な処理を行わない。それがタイプ３のリンクであれば、これら２つの操作ＩＤのうちの１つ目の操作ＩＤの操作とその１つ前の操作との間で操作情報を分ける。
【００６８】
図８は、第１グルーピング部３１がこのようにしてグルーピングを行った後の操作グループ情報を示した図である。尚、ここでは、２つの操作の間にセパレータを設定することにより、これら２つの操作の間で操作情報を分けるようにしている。例えば、図４を参照すると、操作３に対応するＵＩコンポーネントＣ２から操作４に対応するＵＩコンポーネントＣ１へのパスに含まれる親から子へのリンクの中にタイプ１のリンクがある。従って、図８では、操作３と操作４の間にセパレータ６１１を設定している。また、操作４に対応するＵＩコンポーネントＣ１から操作５に対応するＵＩコンポーネントＣ３へのパスに含まれる親から子へのリンクの中にもタイプ１のリンクがある。従って、図８では、操作４と操作５の間にセパレータ６１２を設定している。一方、操作１３に対応するＵＩコンポーネントＣ５から操作１４に対応するＵＩコンポーネントＣ８へのパスに含まれる親から子へのリンクの中にはタイプ３のリンクがある。従って、図８では、操作１３と操作１４の間ではなく、操作１２と操作１３の間にセパレータ６１３を設定している。このようにセパレータ６１１〜６１３が設定された操作グループ情報は、操作グループ情報記憶部３４に記憶される。
【００６９】
図９（ａ），（ｂ）は、タイプ１のリンクがある場合のセパレータの設定を、具体的な画面例を用いて説明するための図である。ここでは、各図に示した画面は、各図内の太線で囲んだオブジェクトに対する操作に応じてキャプチャされたものとする。即ち、図９（ａ）では、ウィンドウ５１１はアクティブであり、ウィンドウ５１１内のボタン５１２をクリックすることにより、画面がキャプチャされる。また、このとき、図９（ｂ）に示すように、ウィンドウ５１１はインアクティブになり、ウィンドウ５１３が表示され、ウィンドウ５１３内の何れかのオブジェクトを操作することにより、画面がキャプチャされる。この場合、図４のオブジェクトツリーにおいて、ボタン５１２からウィンドウ５１３内のオブジェクトへのパスの中にタイプ１のリンクがあるので、図９（ａ）の画面上で行われた操作と、図９（ｂ）の画面上で行われた操作との間に、セパレータが設定されることになる。
【００７０】
図１０（ａ）〜（ｃ）は、タイプ３のリンクがある場合のセパレータの設定を、具体的な画面例を用いて説明するための図である。ここでも、各図に示した画面は、各図内の太線で囲んだオブジェクトに対する操作に応じてキャプチャされたものとする。即ち、図１０（ａ）では、タブ５３１に対応するパネル５３２が表示され、パネル５３２内のテキストボックス５３３を操作することにより、画面がキャプチャされる。また、図１０（ｂ）では、タブ５３４をクリックすることにより、画面がキャプチャされる。更に、このとき、図１０（ｃ）に示すように、パネル５３２に代えてパネル５３５が表示され、テキストボックス５３６を操作することにより、画面がキャプチャされる。この場合、図４のオブジェクトツリーにおいて、タブ５３４からテキストボックス５３６へのパスの中にタイプ３のリンクがあるので、図１０（ａ）の画面上で行われた操作と、図１０（ｂ）の画面上で行われた操作との間に、セパレータが設定されることになる。
【００７１】
図１１は、第１グルーピング部３１がこのようなグルーピングを行う際の動作例を示したフローチャートである。尚、この動作例では、操作情報記憶部１５に記憶された操作情報から操作対象のオブジェクトを抽出して操作情報における順序で並べた操作オブジェクトリストが第１グルーピング部３１に与えられるものとする。例えば、操作情報記憶部１５に記憶された操作情報が図７に示したようなものだとすると、操作オブジェクトリストＣ３，Ｃ４，Ｃ２，Ｃ１，Ｃ３，…，Ｃ８，Ｃ８，Ｃ９が第１グルーピング部３１に与えられる。
【００７２】
動作を開始すると、第１グルーピング部３１は、まず、操作オブジェクトリストから０番目の要素を取り出し、要素をカウントするための変数Ｎに０を代入する（ステップ３０１）。次に、第１グルーピング部３１は、操作オブジェクトリストに（Ｎ＋１）番目の要素があるかどうかを判定する（ステップ３０２）。その結果、操作オブジェクトリストに（Ｎ＋１）番目の要素がないと判定すれば、第１グルーピング部３１は、処理を終了する。一方、操作オブジェクトリストに（Ｎ＋１）番目の要素があると判定すれば、第１グルーピング部３１は、Ｎを１ずつ増やしながらステップ３０３〜３０８の処理を行う。
【００７３】
即ち、第１グルーピング部３１は、まず、操作オブジェクトリストのＮ番目の要素と（Ｎ＋１）番目の要素との間のパスを、オブジェクトツリー記憶部２４に記憶されたオブジェクトツリーから検索する（ステップ３０３）。例えば、Ｎが２であるとすると、要素Ｃ２と要素Ｃ１との間のパスを検索することになる。また、Ｎが１２であるとすると、要素Ｃ５と要素Ｃ８との間のパスを検索することになる。次に、第１グルーピング部３１は、検索で見つかったパスに含まれるリンクのうち、親要素から子要素へのリンクをリストアップする（ステップ３０４）。例えば、要素Ｃ２と要素Ｃ１との間のパスが見つかったとすると、要素Ｐ１から要素Ｐ４へのリンクと、要素Ｐ４から要素Ｃ１へのリンクとがリストアップされる。また、要素Ｃ５と要素Ｃ８との間のパスが見つかったとすると、要素Ｐ６から要素Ｐ１２へのリンクと、要素Ｐ１２から要素Ｐ１０へのリンクと、要素Ｐ１０から要素Ｃ８へのリンクとがリストアップされる。
【００７４】
これにより、第１グルーピング部３１は、リストアップされたリンクの中にタイプ１のリンクがあるかどうかを判定する（ステップ３０５）。その結果、タイプ１のリンクがないと判定すれば、第１グルーピング部３１は、ステップ３０７へ処理を進める。一方、タイプ１のリンクがあると判定すれば、第１グルーピング部３１は、操作オブジェクトリストのＮ番目の要素と（Ｎ＋１）番目の要素との間にセパレータを挿入する（ステップ３０６）。例えば、要素Ｃ２と要素Ｃ１との間のパスが見つかったとすると、要素Ｐ１から要素Ｐ４へのリンクがタイプ１のリンクなので、要素Ｃ２に対する操作と要素Ｃ１に対する操作との間にセパレータが挿入される。
【００７５】
また、第１グルーピング部３１は、リストアップされたリンクの中にタイプ３のリンクがあるかどうかを判定する（ステップ３０７）。その結果、タイプ３のリンクがないと判定すれば、第１グルーピング部３１は、ステップ３０９へ処理を進める。一方、タイプ３のリンクがあると判定すれば、第１グルーピング部３１は、操作オブジェクトリストの（Ｎ−１）番目の要素とＮ番目の要素との間にセパレータを挿入する（ステップ３０８）。例えば、要素Ｃ５と要素Ｃ８との間のパスが見つかったとすると、要素Ｐ１２から要素Ｐ１０へのリンクがタイプ３のリンクなので、要素Ｃ５に対する操作とその１つ前の要素Ｃ６に対する操作との間にセパレータが挿入される。
【００７６】
その後、第１グルーピング部３１は、Ｎに１を加算して（ステップ３０９）、ステップ３０２へ処理を進める。
【００７７】
第二に、第２グルーピング部３２の動作について詳細に説明する。
第２グルーピング部３２は、オブジェクトツリー記憶部２４に記憶されたオブジェクトツリーとは関係なく、操作グループ情報記憶部３４に記憶された操作グループ情報のグルーピングを行う。具体的には、第１のグルーピングとして、同じオブジェクトに対する操作が連続する場合に、最後の操作のみを残すことにより、操作グループ情報を圧縮する処理を行う。例えばテキストボックスに目的の文字列を入力する操作が分割して記録されている場合等に、同じオブジェクトに対する操作が連続することが起こり得るので、このような処理を行う。これは厳密にはグルーピングではないが、グループ内の要素の整理という意味でグルーピングに含めている。また、第２のグルーピングとして、同じオブジェクトに対する複数の操作が連続しないが１つのグループ内にある場合も、これらの操作が別々のグループに属することとなるようなグルーピングを行う。或いは、これらの操作のうちの少なくとも２つの操作が別々のグループに属することとなるようなグルーピングを行ってもよい。キャプチャ画像マージ部４０がキャプチャ画像をマージする際に同じオブジェクトに対するハイライトが重なることを避けるために、このようなグルーピングを行う。尚、ここでは、第１のグルーピングを行った後の操作グループ情報は一旦操作グループ情報記憶部３４に書き出され、第２のグルーピングを行う際に再び操作グループ情報記憶部３４から読み込まれるものとする。
【００７８】
図１２は、第２グルーピング部３２がこのようにしてグルーピングを行った後の操作グループ情報を示した図である。例えば、図８では、操作６から操作１０までがＵＩコンポーネントＣ６に対する操作となっており、操作１４から操作１６までがＵＩコンポーネントＣ８に対する操作となっていたが、第１のグルーピングにより、それぞれの最後の操作である操作１０及び操作１６のみを残している。また、このように操作の重複を排除しても、３番目のグループ内には、ＵＩコンポーネントＣ６に対する連続しない２つの操作である操作１０及び操作１２が存在しているので、第２のグルーピングを行う。尚、ここでも、２つの操作の間にセパレータを設定することにより、これら２つの操作の間で操作情報を分けるようにしている。例えば、図１２では、操作１１と操作１２の間にセパレータ６１４を設定している。この場合、セパレータ６１４は、操作１０と操作１２とが別々のグループに属するように設定すればよいので、操作１０と操作１１の間に設定してもよい。このようにセパレータ６１１〜６１４が設定された操作グループ情報は、操作グループ情報記憶部３４に再び記憶される。
【００７９】
図１３は、第２グルーピング部３２が第１のグルーピングを行う際の動作例を示したフローチャートである。尚、この動作例では、操作グループ情報記憶部３４に記憶された操作グループ情報から操作対象のオブジェクト及びセパレータを抽出して操作グループ情報における順序で並べた操作オブジェクトリストが第２グルーピング部３２に与えられるものとする。例えば、操作グループ情報記憶部３４に記憶された操作グループ情報が図８に示したようなものだとすると、操作オブジェクトリストＣ３，Ｃ４，Ｃ２，（セパレータ），Ｃ１，…，Ｃ８，Ｃ８，Ｃ９が第２グルーピング部３２に与えられる。
【００８０】
動作を開始すると、第２グルーピング部３２は、まず、操作オブジェクトリストから０番目の要素を取り出し、要素をカウントするための変数Ｎに０を代入する（ステップ３２１）。次に、第２グルーピング部３２は、操作オブジェクトリストに（Ｎ＋１）番目の要素があるかどうかを判定する（ステップ３２２）。その結果、操作オブジェクトリストに（Ｎ＋１）番目の要素がないと判定すれば、第２グルーピング部３２は、処理を終了する。一方、操作オブジェクトリストに（Ｎ＋１）番目の要素があると判定すれば、第２グルーピング部３２は、Ｎを１ずつ増やしながらステップ３２３〜３２４の処理を行う。
【００８１】
即ち、第２グルーピング部３２は、まず、操作オブジェクトリストのＮ番目の要素と（Ｎ＋１）番目の要素とが同じであるかどうかを判定する（ステップ３２３）。その結果、これらの要素が同じであると判定すれば、第２グルーピング部３２は、操作オブジェクトリストからＮ番目の要素を削除する（ステップ３２４）。一方、これらの要素が同じでないと判定すれば、第２グルーピング部３２は、ステップ３２５へ処理を進める。
【００８２】
その後、第２グルーピング部３２は、Ｎに１を加算して（ステップ３２５）、ステップ３２２へ処理を進める。
【００８３】
図１４は、第２グルーピング部３２が第２のグルーピングを行う際の動作例を示したフローチャートである。尚、この動作例でも、操作グループ情報記憶部３４に記憶された操作グループ情報から操作対象のオブジェクト及びセパレータを抽出して操作グループ情報における順序で並べた操作オブジェクトリストが第２グルーピング部３２に与えられるものとする。例えば、操作グループ情報記憶部３４に記憶された操作グループ情報が図８に示したものから連続する操作の重複を排除したものだとすると、操作オブジェクトリストＣ３，Ｃ４，Ｃ２，（セパレータ），Ｃ１，…，Ｃ５，Ｃ８，Ｃ９が第２グルーピング部３２に与えられる。また、操作オブジェクトリストに含まれる操作対象のオブジェクト及びセパレータには、操作オブジェクトリストにおける順番を表すインデックスが付されているものとする。
【００８４】
動作を開始すると、第２グルーピング部３２は、まず、操作オブジェクトリストＬのポインタＰを０に設定する（ステップ３４１）。次に、第２グルーピング部３２は、ポインタＰが、操作オブジェクトリストＬにおける最後の要素のインデックスよりも大きいかどうかを判定する（ステップ３４２）。その結果、ポインタＰが最後の要素のインデックスよりも大きいと判定すれば、第２グルーピング部３２は、処理を終了する。一方、ポインタＰが最後の要素のインデックスよりも大きくないと判定すれば、第２グルーピング部３２は、ステップ３４３〜３５３の処理を行う。
【００８５】
即ち、第２グルーピング部３２は、まず、操作オブジェクトリストＬにおいてポインタＰ以降にセパレータがあれば、Ｐ以降の最初のセパレータのインデックスをポインタＥに代入し、操作オブジェクトリストＬにおいてポインタＰ以降にセパレータがなければ、操作オブジェクトリストＬにおける最後の要素のインデックスをポインタＥに代入する（ステップ３４３）。そして、第２グルーピング部３２は、ポインタＰとポインタＥとが一致するかどうかを判定する（ステップ３４４）。その結果、ポインタＰとポインタＥとが一致すると判定すれば、第２グルーピング部３２は、ポインタＰを１進めて（ステップ３４５）、ステップ３４２へ処理を進める。一方、ポインタＰとポインタＥとが一致しないと判定すれば、第２グルーピング部３２は、ポインタＰが指す要素と同じ要素がポインタＥまでの間に存在するかどうかを調べる処理を行う。
【００８６】
即ち、第２グルーピング部３２は、まず、インデックスリストＬ’にポインタＰを格納する（ステップ３４６）。尚、このステップの実行に先立ち、インデックスリストＬ’は初期化しておくものとする。次に、第２グルーピング部３２は、要素Ｌ（Ｐ＋１）から要素Ｌ（Ｅ）までの要素のうち、要素Ｌ（Ｐ）と同じ要素のインデックスをインデックスリストＬ’に追加する（ステップ３４７）。ここで、Ｌ（Ｘ）とは、操作オブジェクトリストＬにおけるポインタＸが指す要素である。こうしてインデックスリストＬ’が生成されると、第２グルーピング部３２は、インデックスリストＬ’の要素の数が２以上であるかどうかを判定する（ステップ３４８）。その結果、インデックスリストＬ’の要素の数が２以上でないと判定すれば、ポインタＰが指す要素と同じ要素がポインタＥまでの間に存在しないので、第２グルーピング部３２は、ポインタＰを１進めて（ステップ３４９）、処理をステップ３４４へ進める。
【００８７】
一方、インデックスリストＬ’の要素の数が２以上であると判定すれば、ポインタＰが指す要素と同じ要素がポインタＥまでの間に存在するので、第２グルーピング部３２は、ポインタＰが指す要素とこれと同じ要素とが別々のグループに属するようにグルーピングを行う。つまり、第２グルーピング部３２は、まず、インデックスリストＬ’の要素をカウントするための変数ｉに０を代入する（ステップ３５０）。そして、インデックスリストＬ’にインデックスＬ’（ｉ＋１）があるかどうかを判定する（ステップ３５１）。ここで、インデックスＬ’（ｘ）とは、インデックスリストＬ’の変数ｘに対応するインデックスである。その結果、インデックスリストＬ’にインデックスＬ’（ｉ＋１）があると判定すれば、第２グルーピング部３２は、操作オブジェクトリストＬにおけるインデックスＭの要素の後にセパレータを挿入する（ステップ３５２）。この場合、インデックスＭは、例えば、式「Ｍ＝Ｌ’（ｉ）＋ＩＮＴ（（Ｌ’（ｉ＋１）−Ｌ’（ｉ））／２）」によって求めるとよい。そして、第２グルーピング部３２は、変数ｉに１を加算して（ステップ３５３）、ステップ３５１へ処理を進める。一方、インデックスリストＬ’にインデックスＬ’（ｉ＋１）がないと判定すれば、第２グルーピング部３２は、ステップ３４３へ処理を進める。
【００８８】
第三に、第３グルーピング部３３の動作について詳細に説明する。
第３グルーピング部３３は、ユーザが指定した圧縮率と、オブジェクトツリー記憶部２４に記憶されたオブジェクトグループの配列とに基づいて、操作グループ情報記憶部３４に記憶された操作グループ情報のグルーピングを行う。具体的には、第３グルーピング部３３は、ユーザが指定した圧縮率から、グループ内の平均の操作数を計算する。そして、その平均の操作数よりも多い操作が属するグループがあれば、そのグループを更に分けるように、操作グループ情報のグルーピングを行う。
【００８９】
図１５は、第３グルーピング部３３がこのようにしてグルーピングを行った後の操作グループ情報を示した図である。尚、ここでも、２つの操作の間にセパレータを設定することにより、これら２つの操作の間で操作情報を分けるようにしている。例えば、上述したようにオブジェクトグループとしてＰ３，Ｐ６が抽出されているものとし、グループ内の平均の操作数が２である場合を考える。この場合、図１２の３番目のグループについては、図６のオブジェクトツリーにおいて、操作５に対応するＵＩコンポーネントＣ３から操作１０に対応するＵＩコンポーネントＣ６へのパスが通過する最上位のオブジェクトが、オブジェクトグループとして抽出されたＰ３であるので、操作５と操作１０の間にセパレータ６１５を設定している。また、図１２の５番目のグループについては、図６のオブジェクトツリーにおいて、操作１３に対応するＵＩコンポーネントＣ５から操作１６に対応するＵＩコンポーネントＣ８へのパスが通過する最上位のオブジェクトが、オブジェクトグループとして抽出されたＰ６であるので、操作１３と操作１６の間にセパレータ６１６を設定している。
【００９０】
図１６−１及び図１６−２は、第３グルーピング部３３がこのようなグルーピングを行う際の動作例を示したフローチャートである。尚、この動作例でも、操作グループ情報記憶部３４に記憶された操作グループ情報から操作対象のオブジェクト及びセパレータを抽出して操作グループ情報における順序で並べた操作オブジェクトリストが第３グルーピング部３３に与えられるものとする。例えば、操作グループ情報記憶部３４に記憶された操作グループ情報が図１２に示したようなものだとすると、操作オブジェクトリストＣ３，Ｃ４，Ｃ２，（セパレータ），Ｃ１，…，Ｃ５，Ｃ８，Ｃ９が第３グルーピング部３３に与えられる。また、操作オブジェクトリストに含まれる操作対象のオブジェクト及びセパレータには、操作オブジェクトリストにおける順番を表すインデックスが付されているものとする。
【００９１】
動作を開始すると、図１６−１に示すように、第３グルーピング部３３は、まず、オブジェクトグループをカウントするための変数ｉに０を代入する（ステップ３６１）。次に、第３グルーピング部３３は、オブジェクトグループＡ（ｉ）があるかどうかを判定する（ステップ３６２）。その結果、オブジェクトグループＡ（ｉ）がないと判定すれば、第３グルーピング部３３は、処理を終了する。一方、オブジェクトグループＡ（ｉ）があると判定すれば、第３グルーピング部３３は、セパレータ挿入処理を実行し（ステップ３６３）、変数ｉに１を加算して（ステップ３６４）、ステップ３６２へ処理を進める。尚、オブジェクトグループＡ（ｉ）は、排他的に配置された複数の子のパネルオブジェクトを持つ１つの親のパネルオブジェクトに相当する。図５及び図６を参照して説明した例では、オブジェクトグループＡ（０）がＰ３に相当し、オブジェクトグループＡ（１）がＰ６に相当する。つまり、図１６−１は、オブジェクトグループＰ３についてセパレータ挿入処理を呼び出し、その後、オブジェクトグループＰ６についてセパレータ挿入処理を呼び出すことを示している。
【００９２】
このようにセパレータ挿入処理が呼び出されると、図１６−２に示すように、第３グルーピング部３３は、まず、操作オブジェクトリストＬのポインタＰを０に設定する（ステップ３８１）。次に、第３グルーピング部３３は、ポインタＰが、操作オブジェクトリストＬにおける最後の要素のインデックスよりも大きいかどうかを判定する（ステップ３８２）。その結果、ポインタＰが最後の要素のインデックスよりも大きいと判定すれば、第３グルーピング部３３は、処理を終了する。一方、ポインタＰが最後の要素のインデックスよりも大きくないと判定すれば、第３グルーピング部３３は、ステップ３８３〜３９２の処理を行う。
【００９３】
即ち、第３グルーピング部３３は、まず、操作オブジェクトリストＬにおいてポインタＰ以降にセパレータがあるかどうかを判定する（ステップ３８３）。そして、操作オブジェクトリストＬにおいてポインタＰ以降にセパレータがあると判定すれば、第３グルーピング部３３は、Ｐ以降の最初のセパレータのインデックスをポインタＥに代入する（ステップ３８４）。また、操作オブジェクトリストＬにおいてポインタＰ以降にセパレータがないと判定すれば、第３グルーピング部３３は、操作オブジェクトリストＬにおける最後の要素のインデックスに１を加算した値をポインタＥに代入する（ステップ３８５）。
【００９４】
次に、第３グルーピング部３３は、（Ｅ−Ｐ）がグループ内の平均の操作数よりも大きいかどうかを判定する（ステップ３８６）。その結果、（Ｅ−Ｐ）が平均の操作数よりも大きくないと判定すれば、グループ内の操作を圧縮する必要はないので、第３グルーピング部３３は、次のグループについての処理を行うために、（Ｅ＋１）をポインタＰに代入して（ステップ３８７）、ステップ３８２へ処理を進める。一方、（Ｅ−Ｐ）が平均の操作数よりも大きいと判定すれば、第３グルーピング部３３は、ポインタＰが（Ｅ−１）よりも小さいかどうかを判定する（ステップ３８８）。そして、ポインタＰが（Ｅ−１）よりも小さくないと判定すれば、第３グルーピング部３３は、次のグループについての処理を行うために、（Ｅ＋１）をポインタＰに代入して（ステップ３８７）、ステップ３８２へ処理を進める。また、ポインタＰが（Ｅ−１）よりも小さいと判定すると、第３グルーピング部３３は、グループ内の操作を圧縮する処理を行う。
【００９５】
即ち、第３グルーピング部３３は、まず、オブジェクトツリーに含まれる部分ツリーのうち、要素Ｌ（Ｐ）及び要素Ｌ（Ｐ＋１）の両方を含む最小の部分ツリーＴ’を取得する（ステップ３８９）。次に、第３グルーピング部３３は、部分ツリーＴ’のルートオブジェクトがＡ（ｉ）であるかどうかを判定する（ステップ３９０）。その結果、部分ツリーＴ’のルートオブジェクトがＡ（ｉ）であると判定すれば、第３グルーピング部３３は、操作オブジェクトリストＬにおいて要素Ｌ（Ｐ）の後にセパレータを挿入して（ステップ３９１）、ステップ３８３へ処理を進める。一方、部分ツリーＴ’のルートオブジェクトがＡ（ｉ）でないと判定すれば、第３グルーピング部３３は、ポインタＰを１進めて（ステップ３９２）、ステップ３８８へ処理を進める。
【００９６】
尚、以上の操作情報グルーピング部３０の動作例では、操作情報に対して第１グルーピング部３１によるグルーピングを行い、その結果に対して第２グルーピング部３２によるグルーピングを行い、更にその結果に対して第３グルーピング部３３によるグルーピングを行ったが、この限りではない。例えば、操作情報に対して第１グルーピング部３１によるグルーピングのみを行ってもよいし、操作情報に対して第２グルーピング部３２によるグルーピングのみを行ってもよいし、操作情報に対して第３グルーピング部３３によるグルーピングのみを行ってもよい。或いは、操作情報に対して第１グルーピング部３１、第２グルーピング部３２及び第３グルーピング部３３のうちの何れか２つによるグルーピングを行ってもよい。
【００９７】
また、以上の操作情報グルーピング部３０の動作例では、第３グルーピング部３３によるグルーピングにおいてのみ、ユーザが指定した圧縮率を考慮したが、この限りではない。例えば、第１グルーピング部３１によるグルーピングにおいて、ユーザが指定した圧縮率を考慮してもよいし、第２グルーピング部３２によるグルーピングにおいて、ユーザが指定した圧縮率を考慮してもよい。
【００９８】
（キャプチャ画像マージ部）
次いで、キャプチャ画像マージ部４０の動作について詳細に説明する。尚、この動作に先立ち、操作ＩＤとキャプチャ画像とを対応付けたキャプチャ情報がキャプチャ情報記憶部１６に記憶され、例えば図１５に示したような操作グループ情報が操作グループ情報記憶部３４に記憶されているものとする。
【００９９】
図１７は、キャプチャ画像マージ部４０がキャプチャ画像をマージする際の加工処理について示した図である。この加工処理は、グループ内の最後のキャプチャ画像に対して行われる。具体的には、グループ内の最後のキャプチャ画像を、グループ内の各操作の対象のオブジェクトをハイライトするハイライト情報７１１，７１２，７１３で上書きし、各操作についてその順番を示す番号を付ける。また、１番目の操作から２番目の操作への順序を示すシーケンス情報７１４や、２番目の操作から３番目の操作への順序を示すシーケンス情報７１５を付加してもよい。
【０１００】
図１８は、キャプチャ画像マージ部４０がこのような加工処理を行う際の動作例を示したフローチャートである。尚、この動作例では、操作グループ情報記憶部３４に記憶された操作グループ情報から抽出されたグループごとの操作の順序を示す番号（以下、「操作番号」という）の配列とグループごとの操作対象のオブジェクト（以下、「操作オブジェクト」という）の配列とがキャプチャ画像マージ部４０に与えられるものとする。例えば、操作グループ情報記憶部３４に記憶された操作グループ情報が図１５に示したようなものだとすると、１番目のグループについては、操作番号の配列１，２，３と、操作オブジェクトの配列Ｃ３，Ｃ４，Ｃ２とがキャプチャ画像マージ部４０に与えられる。
【０１０１】
動作を開始すると、キャプチャ画像マージ部４０は、グループ内の最後のキャプチャ画像を選択する（ステップ４０１）。具体的には、操作グループ情報記憶部３４に記憶された操作グループ情報からグループ内の最後の操作の操作ＩＤを取得し、キャプチャ情報記憶部１６に記憶されたキャプチャ情報においてこの操作ＩＤに紐付けられたキャプチャ画像を選択する。次に、キャプチャ画像マージ部４０は、グループ内の操作番号を表す変数ｉに０を代入する（ステップ４０２）。次いで、キャプチャ画像マージ部４０は、操作オブジェクトの配列に操作オブジェクトＯＡ（ｉ）があるかどうかを判定する（ステップ４０３）。その結果、操作オブジェクトＯＡ（ｉ）があると判定すれば、操作オブジェクトＯＡ（ｉ）の表示領域をハイライト情報で上書きする（ステップ４０４）。そして、ハイライト情報の右上部分に操作番号ｉを描画する（ステップ４０５）。その後、キャプチャ画像マージ部４０は、変数ｉに１を加算して（ステップ４０６）、ステップ４０３へ処理を進める。
【０１０２】
また、ステップ４０３で操作オブジェクトＯＡ（ｉ）がないと判定すれば、キャプチャ画像マージ部４０は、シーケンス情報を付加するかどうかを判定する（ステップ４０７）。この判定は、例えば、シーケンス情報を付加するかどうかのユーザによる設定に基づいて行えばよい。その結果、シーケンス情報を付加しないと判定すれば、キャプチャ画像マージ部４０は、処理を終了する。一方、シーケンス情報を付加すると判定すれば、キャプチャ画像マージ部４０は、変数ｉに０を代入する（ステップ４０８）。そして、操作オブジェクトの配列に操作オブジェクトＯＡ（ｉ＋１）があるかどうかを判定する（ステップ４０９）。その結果、操作オブジェクトＯＡ（ｉ＋１）がないと判定すれば、キャプチャ画像マージ部４０は、処理を終了する。一方、操作オブジェクトＯＡ（ｉ＋１）があると判定すれば、キャプチャ画像マージ部４０は、シーケンス情報として、操作オブジェクトＯＡ（ｉ）の表示領域から操作オブジェクトＯＡ（ｉ＋１）の表示領域への矢印を描画する（ステップ４１０）。その後、キャプチャ画像マージ部４０は、変数ｉに１を加算して（ステップ４１１）、ステップ４０９へ処理を進める。
【０１０３】
図１９（ａ），（ｂ）は、キャプチャ画像マージ部４０がキャプチャ画像をマージする際の別の加工処理について説明するための図である。この加工処理は、トリガーオブジェクトがアクティブのまま新しいオブジェクトが出現した場合に、ユーザの指定により、図１７のキャプチャ画像における変化した領域をハイライト表示するものである。
【０１０４】
ここでは、各オブジェクト間に、図１９（ａ）に示したような関係があるとする。即ち、ＵＩコンポーネントＣ１を操作すると、ＵＩコンポーネントＣ１はアクティブのまま、ＵＩコンポーネントＣ２，Ｃ３を含むパネルオブジェクトＰ３が表示されるものとする。また、ＵＩコンポーネントＣ２を操作すると、ＵＩコンポーネントＣ２はアクティブのまま、ＵＩコンポーネントＣ４が表示されるものとする。
【０１０５】
この場合、図１９（ｂ）に示すような加工処理が行われる。即ち、図１７に示したのと同様に、グループ内の最後のキャプチャ画像を、グループ内の各操作の対象のオブジェクトをハイライトするハイライト情報７２１，７２２，７２３で上書きし、各操作についてその順番を示す番号を付ける。尚、ハイライト情報７２１でハイライトされたオブジェクトは図１９（ａ）のＵＩコンポーネントＣ１に対応し、ハイライト情報７２２でハイライトされたオブジェクトは図１９（ａ）のＵＩコンポーネントＣ２に対応し、ハイライト情報７２３でハイライトされたオブジェクトは図１９（ａ）のＵＩコンポーネントＣ３に対応している。また、図１９（ｂ）では、これに加えて、ハイライト情報７２１に対応する操作により新たに出現した領域を、ハイライト情報７２１を吹き出し口とする吹き出し７２４の前面に表示し、ハイライト情報７２２に対応する操作により新たに出現した領域を、ハイライト情報７２２を吹き出し口とする吹き出し７２５の前面に表示することで、オブジェクトの出現の順序を分かり易くしている。そして、更に、吹き出し７２４に対して、「Ａｐｐｅａｒｓ  ａｆｔｅｒ  １」という記述７２６を、吹き出し７２５に対して「Ａｐｐｅａｒｓ  ａｆｔｅｒ  ２」という記述７２７を、それぞれ付加してもよい。尚、吹き出し７２４で囲まれたオブジェクトは図１９（ａ）のパネルオブジェクトＰ３に対応し、吹き出し７２５で囲まれたオブジェクトは図１９（ａ）のＵＩコンポーネントＣ４に対応している。
【０１０６】
図２０は、キャプチャ画像マージ部４０がこのような加工処理を行う際の動作例を示したフローチャートである。尚、この動作例では、操作グループ情報記憶部３４に記憶された操作グループ情報から抽出されたグループごとの操作の順序を示す番号（操作番号）の配列とグループごとの操作対象のオブジェクト（操作オブジェクト）の配列とがキャプチャ画像マージ部４０に与えられるものとする。例えば、操作グループ情報記憶部３４に記憶された操作グループ情報が図１５に示したようなものだとすると、１番目のグループについては、操作番号の配列１，２，３と、操作オブジェクトの配列Ｃ３，Ｃ４，Ｃ２とがキャプチャ画像マージ部４０に与えられる。また、ここでは、図１８に示したハイライト情報、操作番号及びシーケンス情報の付加以外の処理について説明する。
【０１０７】
動作を開始すると、キャプチャ画像マージ部４０は、グループ内の最後のキャプチャ画像を選択する（ステップ４２１）。具体的には、操作グループ情報記憶部３４に記憶された操作グループ情報からグループ内の最後の操作の操作ＩＤを取得し、キャプチャ情報記憶部１６に記憶されたキャプチャ情報においてこの操作ＩＤに紐付けられたキャプチャ画像を選択する。次に、キャプチャ画像マージ部４０は、グループ内の操作番号を表す変数ｉに０を代入する（ステップ４２２）。次いで、キャプチャ画像マージ部４０は、操作オブジェクトの配列に操作オブジェクトＯＡ（ｉ＋１）があるかどうかを判定する（ステップ４２３）。その結果、操作オブジェクトＯＡ（ｉ＋１）がないと判定すれば、キャプチャ画像マージ部４０は、処理を終了する。一方、操作オブジェクトＯＡ（ｉ＋１）があると判定すれば、キャプチャ画像マージ部４０は、オブジェクトツリー記憶部２４に記憶されたオブジェクトツリーにおいて、操作オブジェクトＯＡ（ｉ）から操作オブジェクトＯＡ（ｉ＋１）へのパスに含まれるリンクの中にタイプ２のリンクがあるかどうかを判定する（ステップ４２４）。
【０１０８】
その結果、タイプ２のリンクがあると判定すれば、キャプチャ画像マージ部４０は、まず、タイプ２のリンクのリンク先のオブジェクトの表示領域Ｒを取得する（ステップ４２５）。ここで、Ｒは（Ｘ，Ｙ，Ｗ，Ｈ）と表され、このうち、Ｘは表示領域Ｒの左上点のＸ座標を、Ｙは表示領域Ｒの左上点のＹ座標を、Ｗは表示領域Ｒの幅を、Ｈは表示領域Ｒの高さを、それぞれ表す。尚、Ｘ座標は、図１９（ｂ）の右方向が正方向となるように設定され、Ｙ座標は、図１９（ｂ）の下方向が正方向となるように設定される。次に、キャプチャ画像マージ部４０は、ステップ４２１で選択されたキャプチャ画像から表示領域Ｒの画像を切り取って保存する（ステップ４２６）。そして、キャプチャ画像マージ部４０は、操作オブジェクトＯＡ（ｉ）の表示領域を吹き出し口とし、表示領域がＲ’である白塗りの吹き出しを描画する（ステップ４２７）。ここで、Ｒ’は（Ｘ−Δ，Ｙ−Δ，Ｗ＋２×Δ，Ｈ＋２×Δ）と表され、このうち、Δは、表示領域Ｒ’の表示領域Ｒに対する余白の長さを表す。また、キャプチャ画像マージ部４０は、ステップ４２６で保存した表示領域Ｒの画像を同じ領域に貼り付ける（ステップ４２８）。その後、キャプチャ画像マージ部４０は、変数ｉに１を加算して（ステップ４２９）、ステップ４２３へ処理を進める。
【０１０９】
一方、タイプ２のリンクがないと判定すれば、キャプチャ画像マージ部４０は、吹き出しを描画する処理等を行うことなく、変数ｉに１を加算して（ステップ４２９）、ステップ４２３へ処理を進める。
【０１１０】
尚、以上のキャプチャ画像マージ部４０の動作例では、グループ内の最後のキャプチャ画像に対して加工処理を行ったが、この限りではない。グループ内の最後のキャプチャ画像以外の１つのキャプチャ画像を何らかの規則で選択し、この選択されたキャプチャ画像に対して加工処理を行ってもよい。
【０１１１】
以上述べたように、本実施の形態では、操作毎にキャプチャ画像を取得し、これらのキャプチャ画像を、意味のあるまとまりを構成する複数の操作に対応するキャプチャ画像が１つのグループに属するようにグループ化し、グループ化されたキャプチャ画像をマージするようにした。これにより、操作手順書に含めるキャプチャ画像の量を削減することができるので、操作手順書のファイルサイズが小さくなる。
【０１１２】
また、本実施の形態では、ユーザによる圧縮率の指定に基づいて、キャプチャ画像のグループ化を行うようにした。これにより、操作手順書に含めるキャプチャ画像の量をユーザがコントロールできるようになり、同じ操作情報から、粒度の異なる操作手順書を作成することが可能となる。例えば、経験の浅いエンジニアに対しては、圧縮率８０％で操作手順書を作成し、経験のあるエンジニアに対しては、圧縮率３０％で操作手順書を作成することができるようになる。
【０１１３】
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。
【０１１４】
図２１は、このようなコンピュータのハードウェア構成例を示した図である。図示するように、コンピュータは、演算手段であるＣＰＵ（Central Processing Unit）９０ａと、Ｍ／Ｂ（マザーボード）チップセット９０ｂを介してＣＰＵ９０ａに接続されたメインメモリ９０ｃと、同じくＭ／Ｂチップセット９０ｂを介してＣＰＵ９０ａに接続された表示機構９０ｄとを備える。また、Ｍ／Ｂチップセット９０ｂには、ブリッジ回路９０ｅを介して、ネットワークインターフェイス９０ｆと、磁気ディスク装置（ＨＤＤ）９０ｇと、音声機構９０ｈと、キーボード／マウス９０ｉと、フレキシブルディスクドライブ９０ｊとが接続されている。
【０１１５】
尚、図２１において、各構成要素は、バスを介して接続される。例えば、ＣＰＵ９０ａとＭ／Ｂチップセット９０ｂの間や、Ｍ／Ｂチップセット９０ｂとメインメモリ９０ｃの間は、ＣＰＵバスを介して接続される。また、Ｍ／Ｂチップセット９０ｂと表示機構９０ｄとの間は、ＡＧＰ（Accelerated Graphics Port）を介して接続されてもよいが、表示機構９０ｄがＰＣＩ Ｅｘｐｒｅｓｓ対応のビデオカードを含む場合、Ｍ／Ｂチップセット９０ｂとこのビデオカードの間は、ＰＣＩ Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスを介して接続される。また、ブリッジ回路９０ｅと接続する場合、ネットワークインターフェイス９０ｆについては、例えば、ＰＣＩ Ｅｘｐｒｅｓｓを用いることができる。また、磁気ディスク装置９０ｇについては、例えば、シリアルＡＴＡ（AT Attachment）、パラレル転送のＡＴＡ、ＰＣＩ（Peripheral Components Interconnect）を用いることができる。更に、キーボード／マウス９０ｉ、及び、フレキシブルディスクドライブ９０ｊについては、ＵＳＢ（Universal Serial Bus）を用いることができる。
【０１１６】
即ち、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム（装置又は機器）、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。
【０１１７】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【０１１８】
１…操作手順書生成装置、１０…キャプチャ画像／オブジェクト情報取得部、１１…操作検出部、１２…画面キャプチャ部、１３…オブジェクト情報取得部、１４…イベント処理部、１５…操作情報記憶部、１６…キャプチャ情報記憶部、１７…オブジェクト情報記憶部、２０…オブジェクト情報処理部、２１…オブジェクトツリー生成部、２２…出現情報付加部、２３…領域情報付加部、２４…オブジェクトツリー記憶部、３０…操作情報グルーピング部、３１…第１グルーピング部、３２…第２グルーピング部、３３…第３グルーピング部、３４…操作グループ情報記憶部、４０…キャプチャ画像マージ部
【図１】
0005936138.tif 000002
【図２】
0005936138.tif 000003
【図３】
0005936138.tif 000004
【図４】
0005936138.tif 000005
【図５】
0005936138.tif 000006
【図６】
0005936138.tif 000007
【図７】
0005936138.tif 000008
【図８】
0005936138.tif 000009
【図９】
0005936138.tif 000010
【図１０】
0005936138.tif 000011
【図１１】
0005936138.tif 000012
【図１２】
0005936138.tif 000013
【図１３】
0005936138.tif 000014
【図１４】
0005936138.tif 000015
【図１５】
0005936138.tif 000016
【図１６−１】
0005936138.tif 000017
【図１６−２】
0005936138.tif 000018
【図１７】
0005936138.tif 000019
【図１８】
0005936138.tif 000020
【図１９】
0005936138.tif 000021
【図２０】
0005936138.tif 000022
【図２１】
0005936138.tif 000023