(57)【要約】【課題】状態遷移プログラムの開発効率を向上させる。【解決手段】状態遷移図生成部１４が、ステートデータからなる状態遷移情報に基づいて、状態遷移図を生成する。表示部１８は、生成された状態遷移図を表示する。操作部１１は、表示された状態遷移図を操作する。状態遷移エンジン１５は、操作部１１の操作内容に応じて、ステートデータ格納部１３に格納された状態遷移プログラムを実行することで、状態遷移情報を更新する。イベント検出部１９は、イベントを受け付ける。イベント記憶部２３は、受け付けたイベントをイベントリスト２３ａとして記憶する。イベント編集部２０は、イベント記憶部２３に記憶されたイベントリスト２３ａを編集する。本発明の状態遷移プログラムの開発ソフトウェアプログラムに適用することができる。【選択図】図１
2007122253.tif 000002
【特許請求の範囲】
【請求項１】
それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、
前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、
前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、
前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、
前記イベントを受け付ける受付ステップと、
前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、
前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップと
を含む情報処理方法。
【請求項２】
前記イベントは、イベントタイプおよびイベントパラメータにより特定される
請求項１に記載の情報処理方法。
【請求項３】
前記イベント記憶ステップの処理は、前記受付ステップの処理で受け付けられたイベント毎に、前記イベントを受け付けたタイミング、前記イベントの受付前の状態、および前記イベントの受付後の状態を含む情報を対応付けてイベントリストとして記憶する
請求項１に記載の情報処理方法。
【請求項４】
前記編集ステップの処理は、前記イベント記憶ステップの処理により記憶されるイベントリストのうち前記イベントのみを編集する
請求項３に記載の情報処理方法。
【請求項５】
前記受付ステップの処理は、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを受け付ける
請求項１に記載の情報処理方法。
【請求項６】
前記受付ステップの処理は、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを受け付けた順序で、連続的に受け付ける
請求項１に記載の情報処理方法。
【請求項７】
前記イベント記憶ステップの処理は、前記受付ステップの処理で受け付けられたイベント毎に、前記イベントを受け付けたタイミングを含む情報を対応付けてイベントリストとして記憶し、
前記受付ステップの処理は、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを所定のタイミングから受け付ける
請求項１に記載の情報処理方法。
【請求項８】
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付ける場合、前記受付ステップの処理によりイベントが受け付けられた時点での状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付前の状態とを比較する比較ステップとをさらに含む
請求項１に記載の情報処理方法。
【請求項９】
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付けるとき、前記受付ステップの処理により受け付けられたイベントにより遷移した状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付後の状態とを比較する比較ステップとをさらに含む
請求項１に記載の情報処理方法。
【請求項１０】
前記比較ステップの処理により比較結果が一致しない場合、イベント記憶ステップの処理により記憶されているイベントリストのイベントに矛盾があることを警告する警告ステップをさらに含む
請求項８または９に記載の情報処理方法。
【請求項１１】
それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成手段と、
前記生成手段により生成された状態遷移図を表示する表示手段と、
前記表示手段により表示された状態遷移図を操作する操作手段と、
前記操作手段により操作内容に応じて、前記状態遷移情報を更新する更新手段と、
前記イベントを受け付ける受付手段と、
前記受付手段により受け付けたイベントをイベントリストとして記憶するイベント記憶手段と、
前記イベント記憶手段により記憶されたイベントリストを編集する編集手段と
を含む情報処理装置。
【請求項１２】
それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、
前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、
前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、
前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、
前記イベントを受け付ける受付ステップと、
前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、
前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップと
を含むコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項１３】
それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、
前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、
前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、
前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、
前記イベントを受け付ける受付ステップと、
前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、
前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップと
を含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理方法および装置、記録媒体、並びにプログラムに関し、特に、状態遷移図を用いたUI（User Interface）プログラムの開発効率を向上させるようにした情報処理方法および装置、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
アプリケーションソフトウェアプログラムの開発を支援する開発ツールが一般に普及しつつある。例えば、オブジェクト指向型のプログラムの開発を支援するものがある（例えば、特許文献１参照）。
【０００３】
また、UML（Unified Modeling Language）に代表される状態遷移図を用いたアプリケーションソフトウェアプログラムのUI（User Interface）の開発ツールも提案されている。
【０００４】
状態遷移図は、各状態毎に実行されるべき動作が論理的に記述されるとともに、各状態において発生する所定のイベントにより他の状態に遷移する方向が示された図である。上述したアプリケーションソフトウェアプログラムのUIの開発ツールは、プログラムを状態遷移図として表示させると共に、その表示された状態遷移図そのものが操作されると、状態遷移図の操作内容をプログラムに反映させることで、プログラムを編集するものである。
【０００５】
これらのプログラムの編集およびデバッグに用いるものとして、ステップ実行と通常実行とを切替えて、ステップ実行させることにより、個々のステップにおいてバグの発生を確認できるようにさせるものがある（例えば、特許文献２参照）。
【０００６】
また、操作記録としてイベントを記憶させ、ハードウェア障害が発生したような場合、その操作記録である記憶されているイベントに基づいて、動作状態を復旧させるものがある（例えば、特許文献３参照）。
【０００７】
【特許文献１】特開平６−１１０７６７号公報
【０００８】
【特許文献２】特開２００１−１５４８６８号公報
【０００９】
【特許文献３】特開２０００−０１０６９２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、実際にプログラムを実行させて、バグの発生の有無を確認しようとする場合、通常の操作では発生し得ないようなイベントを発生させてバグが発生するか否かを確認するのが困難である。例えば、同一の位置にポインタを固定させた状態で、１秒間に１０回クリック操作するといったイベントを発生させることは、偶発的に発生させることができたとしても、繰り返し再現させることは困難であり、その検証そのものを困難なものとしていた。
【００１１】
また、複数のイベントを所定のタイミングで、所定の順序で実行させた場合のバグの発生の有無を確認したい場合、同一のイベントを繰り返し発生させるためには、イベントを発生させたタイミングと順序を正確に記録し、そして、正確に再現させる必要があり、非常に手間のかかる操作であった。
【００１２】
本発明は、このような状況に鑑みてなされたものであり、特に、各状態におけるイベントを入力するタイミングや順序などをイベントリストとして記憶させることで、高い再現性を実現して上述したようなバグの発生の有無を正しく検証できるようにすると共に、発生させること自体が困難なイベントをも編集により容易に実現させるようにし、正確なバグ除去を実現できるようにすることで、プログラムの開発効率を向上させるものである。
【課題を解決するための手段】
【００１３】
本発明の一側面の情報処理方法は、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、前記イベントを受け付ける受付ステップと、前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップとを含む。
【００１４】
前記イベントは、イベントタイプおよびイベントパラメータにより特定されるようにすることができる。
【００１５】
前記イベント記憶ステップの処理には、前記受付ステップの処理で受け付けられたイベント毎に、前記イベントを受け付けたタイミング、前記イベントの受付前の状態、および前記イベントの受付後の状態を含む情報を対応付けてイベントリストとして記憶させるようにすることができる。
【００１６】
前記編集ステップの処理には、前記イベント記憶ステップの処理により記憶されるイベントリストのうち前記イベントのみを編集させるようにすることができる。
【００１７】
前記受付ステップの処理には、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを受け付けるようにさせることができる。
【００１８】
前記受付ステップの処理には、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを受け付けた順序で、連続的に受け付けるようにさせることができる。
【００１９】
前記イベント記憶ステップの処理には、前記受付ステップの処理で受け付けられたイベント毎に、前記イベントを受け付けたタイミングを含む情報を対応付けてイベントリストとして記憶させ、前記受付ステップの処理には、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを所定のタイミングから受け付けるようにさせることができる。
【００２０】
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付ける場合、前記受付ステップの処理によりイベントが受け付けられた時点での状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付前の状態とを比較する比較ステップとをさらに含ませるようにすることができる。
【００２１】
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付けるとき、前記受付ステップの処理により受け付けられたイベントにより遷移した状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付後の状態とを比較する比較ステップとをさらに含ませるようにすることができる。
【００２２】
前記比較ステップの処理により比較結果が一致しない場合、イベント記憶ステップの処理により記憶されているイベントリストのイベントに矛盾があることを警告する警告ステップをさらに含ませるようにすることができる。
【００２３】
本発明の一側面の情報処理装置は、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成手段と、前記生成手段により生成された状態遷移図を表示する表示手段と、前記表示手段により表示された状態遷移図を操作する操作手段と、前記操作手段により操作内容に応じて、前記状態遷移情報を更新する更新手段と、前記イベントを受け付ける受付手段と、前記受付手段により受け付けたイベントをイベントリストとして記憶するイベント記憶手段と、前記イベント記憶手段により記憶されたイベントリストを編集する編集手段とを含む。
【００２４】
本発明の一側面の記録媒体のプログラムは、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、前記イベントを受け付ける受付ステップと、前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップとを含むコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【００２５】
本発明の一側面のプログラムは、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、前記イベントを受け付ける受付ステップと、前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップとを含む処理をコンピュータに実行させる。
【００２６】
本発明の一側面においては、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図が生成され、生成された状態遷移図が表示され、表示された状態遷移図が操作され、操作内容に応じて、前記状態遷移情報が更新され、前記イベントが受け付けられ、受け付けたイベントがをイベントリストとして記憶され、記憶されたイベントリストが編集される。
【００２７】
情報処理装置は、独立した装置であっても良いし、情報処理装置の情報処理を行うブロックであっても良い。
【発明の効果】
【００２８】
以上のように、本発明の一側面によれば、状態遷移図を用いたプログラムの生成および動作確認を容易にすることができ、UIのプログラムの開発の効率を向上させることが可能となる。
【発明を実施するための最良の形態】
【００２９】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３０】
すなわち、本発明の一側面の情報処理方法およびプログラムは、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップ（例えば、図９のフローチャートにおけるステップＳ１２１乃至Ｓ１２３の処理）と、前記生成ステップの処理により生成された状態遷移図を表示する表示ステップ（例えば、図１０のフローチャートにおけるステップＳ１４１の処理）と、前記表示ステップの処理により表示された状態遷移図を操作する操作ステップ（例えば、図７のフローチャートにおけるステップＳ６３の処理）と、前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップ（例えば、図７のフローチャートにおけるステップＳ６４の処理）と、前記イベントを受け付ける受付ステップと、前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップ（例えば、図１３のフローチャートにおけるステップＳ１６４乃至Ｓ１６８の処理）と、前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップ（例えば、図１５のフローチャートにおけるステップＳ１８３乃至Ｓ１８５，Ｓ１８８，Ｓ１８９の処理）とを含む。
【００３１】
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付ける場合、前記受付ステップの処理によりイベントが受け付けられた時点での状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付前の状態とを比較する比較ステップ（例えば、図２７のフローチャートにおけるステップＳ２８４の処理）とをさらに含ませるようにすることができる。
【００３２】
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付けるとき、前記受付ステップの処理により受け付けられたイベントにより遷移した状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付後の状態とを比較する比較ステップ（例えば、図２７のフローチャートにおけるステップＳ２８８の処理）とをさらに含ませるようにすることができる。
【００３３】
前記比較ステップの処理により比較結果が一致しない場合、イベント記憶ステップの処理により記憶されているイベントリストのイベントに矛盾があることを警告する警告ステップ（例えば、図２７のフローチャートにおけるステップＳ２８９，Ｓ２９０の処理）をさらに含ませるようにすることができる。
【００３４】
本発明の一側面の情報処理装置は、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成手段（例えば、図１の状態遷移図生成部１４）と、前記生成手段により生成された状態遷移図を表示する表示手段（例えば、図１の表示部１８）と、前記表示手段により表示された状態遷移図を操作する操作手段（例えば、図１の操作部１１）と、前記操作手段により操作内容に応じて、前記状態遷移情報を更新する更新手段（例えば、図１の編集部１２）と、前記イベントを受け付ける受付手段（例えば、図１のイベント検出部１９）と、前記受付手段により受け付けたイベントをイベントリストとして記憶するイベント記憶手段（例えば、図１のイベント記録部２１）と、前記イベント記憶手段により記憶されたイベントリストを編集する編集手段（例えば、図１のイベント編集部２０）とを含む。
【００３５】
このように、各状態におけるイベントを入力するタイミングや順序などをイベントリストとして記憶させることで、高い再現性を実現してバグの発生の有無を正しく検証できるようにすると共に、発生させること自体が困難なイベントをも編集により容易に実現させ、正確なバグ除去を実現できるようにすることで、UIプログラムの開発効率を向上させるようにするものである。
【００３６】
図１は、本発明を適用した状態遷移プログラム編集装置１の一実施の形態の構成を示す図である。
【００３７】
状態遷移プログラム編集装置１は、アプリケーションソフトウェアプログラムにおけるUIのプログラムの開発を目的とした編集装置であり、各状態における動作、それぞれの状態における遷移時のイベント、および各イベント毎にどの他の状態に遷移するかを示す遷移方向の情報を含む状態遷移情報（ステートデータ）に基づいて、状態遷移図を生成すると共に、生成した状態遷移図を表示する。さらに、状態遷移プログラム編集装置１は、表示した状態遷移図が操作されることにより変更されると、変更された状態遷移図に対応して、状態遷移情報を更新する。
【００３８】
操作部１１は、マウスやキーボードなどから構成されており、状態遷移プログラム編集装置１を操作するユーザによる操作に対応する信号を発生して編集部１２に供給する。
【００３９】
編集部１２は、ステート編集部３１、トランジション編集部３２、およびスクリプト編集部３３より構成されており、操作部１１より供給されてくる信号に基づいて、状態遷移情報（ステートデータ）を編集する。ステートデータは、各状態（ステート）毎に動作を示す情報（スクリプト情報）およびイベントに応じて遷移する状態の遷移先の情報（トランジション情報）が記述されている。
【００４０】
ステート編集部３１は、状態（ステート）の新規生成、および表示位置や大きさなどの情報を編集し、編集結果をステートデータ格納部１３に格納させる。トランジション編集部３２は、各状態における動作が実行されている間に発生するイベントに応じて、遷移する遷移先となる状態の情報を編集し、ステートデータ格納部１３に格納させる。スクリプト編集部３３は、各状態における動作内容を編集し、ステートデータ格納部１３に格納させる。
【００４１】
ステートデータ格納部１３は、各状態（ステート）ごとに編集部１２によりトランジション情報やスクリプト情報が編集されたステートデータを格納し、必要に応じて状態遷移図生成部１４および状態遷移エンジン１５に供給する。
【００４２】
状態遷移図生成部１４は、ステート枠生成部４１、およびトランジション生成部４２から構成されており、ステートデータ格納部１３に格納されているステートデータを読み出し、状態遷移図を生成する。ステート枠生成部４１は、各状態ごとに矩形の枠（ステート枠）を生成すると共に、状態遷移エンジン１５より供給される今現在の状態の情報に基づいて、今現在の状態を示すステート枠内の表示色を変化させて表示する。トランジション４２は、各状態における動作中に発生するイベントごとに遷移先を示す矢印を生成する。      
【００４３】
状態遷移エンジン１５は、ステートデータ格納部１３に格納されているステートデータを読み出すと共に、イベント検出部１９より供給されるイベントの情報に基づいて、今現在のステートを検索し、検索結果である今現在のステートを示す情報を状態遷移図生成部１４および状態動作実行部１６に供給する。
【００４４】
状態動作実行部１６は、状態遷移エンジン１５より供給される今現在の状態のステートデータに基づいて、現在の状態の動作を実行し、実行結果を表示制御部１７に供給する。
【００４５】
表示制御部１７は、状態遷移図表示制御部５１、状態動作表示制御部５２、イベント表示制御部５３、テスト結果表示制御部５４、および再生コントローラ表示制御部５５より構成され、表示部１８に表示する表示画面を生成して表示させる。
【００４６】
状態遷移図表示制御部５１は、状態遷移図生成部１４より供給されてくる状態遷移図の情報に基づいて、例えば、図２の状態遷移図表示画面１１２を生成し、表示を制御する。図２においては、状態Ａ（State Ａ：ステートＡ）を示すステート枠１３１、状態Ｂ（State Ｂ：ステートＢ）を示すステート枠１３２、状態Ｃ（State Ｃ：ステートＣ）を示すステート枠１３３、および、状態Ｄ（State Ｄ：ステートＤ）を示すステート枠１３４が示されており、それぞれが、トランジション１４１乃至１４８で結ばれている。トランジション１４１乃至１４８は、それぞれ状態間を遷移する方向とイベントを示している。
【００４７】
より詳細には、トランジション１４１は、「KeyPress_x」と示され、矢印が状態Ａから状態Ｄに向って表示されており、状態Ａの動作が実行されている場合、操作部１１の「ｘ」のキーが操作されるというイベントが発生すると、状態Ａから状態Ｂに遷移することを示している。
【００４８】
同様に、トランジション１４２は、「KeyPress_2」と示され、矢印が状態Ａから状態Ｂに向って表示されており、状態Ａの動作が実行されている場合、操作部１１の「2」のキーが操作されるというイベントが発生すると、状態Ａから状態Ｂに遷移することを示している。
【００４９】
また、トランジション１４３は、「KeyPress_3」と示され、矢印が状態Ｂから状態Ａに向って表示されており、状態Ｂの動作が実行されている場合、操作部１１の「3」のキーが操作されるというイベントが発生すると、状態Ｂから状態Ａに遷移することを示している。
【００５０】
さらに、トランジション１４４は、「KeyPress_b」と示され、矢印が状態Ｂから状態Ｃに向って表示されており、状態Ｂの動作が実行されている場合、操作部１１の「b」のキーが操作されるというイベントが発生すると、状態Ｂから状態Ｃに遷移することを示している。
【００５１】
また、トランジション１４５は、「KeyPress_a」と示され、矢印が状態Ｃから状態Ｂに向って表示されており、状態Ｃの動作が実行されている場合、操作部１１の「a」のキーが操作されるというイベントが発生すると、状態Ｃから状態Ｂに遷移することを示している。
【００５２】
さらに、トランジション１４６は、「KeyPress_1」と示され、矢印が状態Ｃから状態Ｄに向って表示されており、状態Ｃの動作が実行されている場合、操作部１１の「1」のキーが操作されるというイベントが発生すると、状態Ｃから状態Ｄに遷移することを示している。
【００５３】
また、トランジション１４７は、「KeyPress_0」と示され、矢印が状態Ｄから状態Ｃに向って表示されており、状態Ｄの動作が実行されている場合、操作部１１の「0」のキーが操作されるというイベントが発生すると、状態Ｄから状態Ｃに遷移することを示している。
【００５４】
さらに、トランジション１４８は、「KeyPress_z」と示され、矢印が状態Dから状態Ａに向って表示されており、状態Ｄの動作が実行されている場合、操作部１１の「z」のキーが操作されるというイベントが発生すると、状態Dから状態Ａに遷移することを示している。
【００５５】
尚、図２においては、表示部１８で表示される表示画面１０１が示されている。表示画面１０１には、動作表示画面１１１、状態遷移図表示画面１１２、実行済みイベントリスト表示画面１１３、次実行イベントリスト表示画面１１４、再生コントローラ表示画面１１５が設けられている。
【００５６】
状態動作表示制御部５２は、状態動作実行部１６より供給される、カレントステートの状態動作の実行結果に基づいて、例えば、図２で示されるような動作表示画面１１１を生成し、表示を制御する。尚、図２においては、カレントステートが設定されておらず、実行されるものがないので、動作表示画面１１１は、黒の画面となっている。
【００５７】
イベントリスト表示制御部５３は、イベント記憶部２３に記憶されているイベントリスト２３ａ乃至２３ｘのうち、既に実行された実行済みイベントリスト表示画面１１３に表示すると共に、これから実行しようとするイベントリストを次実行イベントリスト表示画面１１４に表示する。図２においては、実行済みイベントリスト表示画面１１３には、上から「１．MouseUp（10,10）」、「３．MouseDown（10,10）」、および「７．Key('a')」と表示されており、所定のタイミングから１秒後のタイミングで操作部１１のマウスが操作されて、表示部１８の座標（10,10）上にポインタが操作された状態で上方向に操作されるイベントが発生し、３秒後のタイミングで操作部１１のマウスが操作されて、表示部１８の座標（15,15）上にポインタが操作された状態で下方向に操作されるイベントが発生し、さらに、７秒後のタイミングで操作部１１のキーボードが操作されて、「ａ」のキーが押下されるイベントが発生したことを示している。
【００５８】
また、次実行イベントリスト表示画面１１４には、上から「１０．MouseUp（0,0）」、「１３．MouseDown（0,0）」、および「１７．Key('b')」と表示されており、所定のタイミングから１０秒後のタイミングで操作部１１のマウスが操作されて、表示部１８の座標（0,0）上にポインタが操作された状態で上方向に操作されるイベントが発生し、１３秒後のタイミングで操作部１１のマウスが操作されて、表示部１８の座標（0,0）上にポインタが操作された状態で下方向に操作されるイベントが発生し、さらに、１７秒後のタイミングで操作部１１のキーボードが操作されて、「ｂ」のキーが押下されるイベントが発生することを示している。
【００５９】
ここでいう、イベントリスト２３ａ−１乃至２３ａ−ｎとは、タイミングに対応付けて発生されるイベントのリストを示す。尚、イベントリスト２３ａ−１乃至２３ａ−ｎについては、詳細を後述する。尚、イベントリスト２３ａ−１乃至２３ａ−ｎを個々に区別する必要がない場合、単に、イベントリスト２３ａと称するものとし、その他の構成について、同様に称するものとする。
【００６０】
テスト結果表示制御部５４は、テスト結果比較部２５より供給されてくる、後述する比較結果に基づいて、イベント編集部２０により編集されたイベントリスト２３ａに矛盾があるとき、イベントリストが破綻していることを警告する表示画面を表示する。
【００６１】
再生コントローラ表示制御部５５は、再生コントローラ表示画面１１５の表示を制御する。図２においては、再生コントローラ表示画面１１５には、左から巻き戻しボタン１１５ａ、再生ボタン１１５ｂ、早送りボタン１１５ｃ、テスト再生ボタン１１５ｄ、変換ボタン１１５ｅ、および記録ボタン１１５ｆが表示されている。
【００６２】
巻き戻しボタン１１５ａは、イベントリスト２３ａに記録されているイベントを現在のタイミングからみて所定の時間だけ戻ったタイミングから発生させて、状態遷移プログラムを実行させるとき操作される。再生ボタン１１５ｂは、イベントリスト２３ａに記録されているイベントの情報に基づいて、発生するイベントに対応して状態遷移プログラムを実行させるとき操作される。尚、再生ボタン１１５ｂの操作内容は、通常再生とステップ再生との２種類がある。通常再生は、後述するイベントリスト２３ａに記録された時刻情報に従って順次連続的にイベントが発生させて、状態遷移プログラムの実行を促す処理である。ステップ再生とは、上述した時刻情報とは別に、１個の表示画面（状態遷移プログラムにより表示される画面）が表示される単位（１フレーム単位）で状態遷移プログラムを実行させる処理である。通常再生とステップ再生とは、図示せぬ動作モードを切替えるボタンの操作により切替えることが可能であるが、いずれの再生も、再生ボタン１１５ｂが押下されることにより開始され、再度押下されると停止する。尚、再生ボタン１１５ｂは、巻き戻し再生ボタン１１５ａ、早送り再生１１５ｃ、テスト再生ボタン１１５ｄ、および記録ボタン１１５ｆが一度押下されることにより、各種の再生や記録が開始された後、それらの動作の停止ボタンとして機能する。
【００６３】
早送りボタン１１５ｃは、イベントリスト２３ａに記録されているイベントが、タイミングを無視して順次発生されるようにして、状態遷移プログラムを実行させるとき操作される。テスト再生ボタン１１５ｄは、イベントリスト２３ａに記録されているイベントを順次発生して、状態遷移プログラムを実行させ、実際に実行された状態遷移プログラムにより遷移した状態と、イベントリスト２３ａに記録されたイベントが発生する前の状態または後の状態が一致するか否かにより、イベントリスト２３ａが破綻のないものであるか否かを試すためのテスト再生を実行させるとき操作される。変換ボタン１１５ｅは、イベントリスト２３ａをXML（eXtensible Markup Language）形式の情報に変換するとき操作される。記録ボタン１１５ｆは、状態遷移プログラムが実行されている状態で発生するイベントのタイミングや種類を記録するとき操作され、一度押下されるとイベントの記録が開始され、タイミングと共に順次イベントリスト２３ａに記録され、再度押下されるとイベントの記録が終了する。この処理により、イベントリスト２３ａが順次生成される。
【００６４】
表示部１８は、CRT（Cathode Ray Tube）またはLCD（Liquid Crystal Display）などから構成され、表示制御部１７により生成された画面を表示する。
【００６５】
イベント検出部１９は、操作部１１の操作内容に応じたイベントを検出し、検出したイベントを状態遷移エンジン１５およびイベント記録部２１に供給する。また、イベント検出部１９は、操作部１１の操作内容に応じたイベントに限らず、例えば、図示せぬバッテリ残量が所定値より小さくなったといったイベントなどの操作部１１の操作とは無関係なイベントも検出する。さらに、イベント検出部１９は、イベントコントローラ２２より順次供給されるイベントが発生したことを示し信号に基づいて、イベントを検出し、検出したイベントを状態遷移エンジン１５、およびイベント記録部２１に供給する。
【００６６】
イベント編集部２０は、イベント記憶部２３に記憶されているイベントリスト２３ａを読み出し、操作部１１の操作内容に応じて、イベントリスト２３ａを編集する。イベント記録部２１は、操作部１１が操作されることにより、記録ボタン１１５ｆが押下されるとき、イベント検出部１９により検出されたイベントをイベント記録部２３に供給し、イベントリスト２３ａとして記憶させる。このとき、イベント記録部２１は、内蔵するRTC（Real Time Clock）で発生される時刻の情報と共に、イベントリスト２３ａに記録する。また、イベント記録部２３は、変換部２１ｂを内蔵しており、操作部１１が再生コントローラ表示画面１１５の変換ボタン１１５ｅが操作されるとき、対象となるイベントリスト２３ａをXML形式のファイルに変換する。
【００６７】
イベントコントローラ２２は、図２で示される再生コントローラ表示画面１１５の巻き戻し再生ボタン１１５ａ乃至記録ボタン１１５ｆが操作部１１により操作されるとき、その操作内容に応じて、イベント記録部２１を制御して、イベントリスト２３ａをイベント記憶部２３に記憶させたり、または、RTC２２ａにより発生される時刻情報に基づいて、イベント記憶部２３に記憶されているイベントリスト２３ａを読み出してイベント検出部１９に供給する。
【００６８】
状態読出部２４は、イベントコントローラ２２よりイベント検出部１９に供給されているイベントの情報に基づいて、供給されたイベントにより遷移する前の状態、および、イベントにより遷移した後の状態の情報をイベントリスト２３ａより読み出し、テスト結果比較部２５に供給する。
【００６９】
テスト結果比較部２５は、状態読出部２４より供給されてくる、イベント検出部１９に供給されるイベントにより遷移する前の状態、または、イベントにより遷移した後の状態と、状態遷移エンジン１５より状態動作実行部１６に供給される状態とを比較して、イベントリスト２３ａに記録されているイベントと、イベントにより遷移する前の状態またはイベントにより遷移した後の状態との間に矛盾がないか否かを判定し、矛盾があると判定した場合、イベントリスト２３ａの記述に誤りがあることを示すテスト結果を表示制御部１７に供給する。このとき、表示制御部１７のテスト結果表示制御部５４は、イベントリスト２３ａの記述に誤りがあることを示すテスト結果を表示部１８に表示させる。
【００７０】
次に、図３を参照して、ステートデータ格納部１３に格納されるステート情報について説明する。
【００７１】
ステート情報は、例えば、図２の状態遷移図表示画面１１２で示されるような状態遷移図が構成されるような場合、図３で示されるような状態で、状態Ａ乃至Ｄごとにステートデータ格納部１３に格納されている。図３においては、左から状態Ａ乃至Ｄの順にステート情報のデータ構造が示されている。
【００７２】
各ステート（状態）には、トランジション情報として、各イベントと対応する遷移先となる状態の情報が記録される領域が確保されている。また、各状態におけるスクリプトが記録される領域が確保されている。
【００７３】
すなわち、図３の状態Ａ（State A）においては、トランジション情報として、イベント欄には「KeyPress_2」および「KeyPress_x」が記録され、対応する遷移先として、それぞれ「State B」および「State D」と記録されている。すなわち、このトランジション情報は、図２のトランジション１４２，１４１にそれぞれ対応する情報として記録されている。また、状態Ａの場合、トランジション情報の下には、スクリプト情報として、「スクリプトＡ」が記録されている。
【００７４】
さらに、状態Ｂ（State Ｂ）においては、トランジション情報として、イベント欄には「KeyPress_3」および「KeyPress_b」が記録され、対応する遷移先として、それぞれ「State A」および「State C」と記録されている。すなわち、このトランジション情報は、図２のトランジション１４３，１４４にそれぞれ対応する情報として記録されている。また、状態Ｂの場合、トランジション情報の下には、スクリプト情報として、「スクリプトＢ」が記録されている。
【００７５】
さらに、状態Ｃ（State Ｃ）においては、トランジション情報として、イベント欄には「KeyPress_a」および「KeyPress_1」が記録され、対応する遷移先として、それぞれ「State B」および「State D」と記録されている。すなわち、このトランジション情報は、図２のトランジション１４５，１４６にそれぞれ対応する情報として記録されている。また、状態Cの場合、トランジション情報の下には、スクリプト情報として、「スクリプトC」が記録されている。
【００７６】
さらに、状態D（State D）においては、トランジション情報として、イベント欄には「KeyPress_z」および「KeyPress_0」が記録され、対応する遷移先として、それぞれ「State A」および「State C」と記録されている。すなわち、このトランジション情報は、図２のトランジション１４８，１４７にそれぞれ対応する情報として記録されている。また、状態Dの場合、トランジション情報の下には、スクリプト情報として、「スクリプトD」が記録されている。
【００７７】
次に、図４のフローチャートを参照して、編集部１２による状態遷移プログラム編集処理について説明する。
【００７８】
ステップＳ１において、ステート編集部３１は、操作部１１より供給されてくる信号に基づいて、ステート編集が指示されたか否かを判定する。ステップＳ１において、例えば、ステート編集処理が指示されたと判定された場合、ステップＳ２において、ステート編集部３１は、ステート編集処理を実行し、その処理は、元に戻る。尚、ステート編集処理については、図５を参照して後述する。
【００７９】
ステップＳ１において、例えば、ステート編集処理が指示されていないと判定された場合、ステップＳ３において、トランジション編集部３２は、操作部１１より供給されてくる信号に基づいて、トランジション編集が指示されたか否かを判定する。ステップＳ３において、例えば、トランジション編集処理が指示されたと判定された場合、ステップＳ４において、トランジション編集部３２は、トランジション編集処理を実行し、その処理は、元に戻る。尚、トランジション編集処理については、図６を参照して後述する。
【００８０】
ステップＳ３において、例えば、トランジション編集処理が指示されていないと判定された場合、ステップＳ５において、スクリプト編集部３３は、操作部１１より供給されてくる信号に基づいて、スクリプト編集が指示されたか否かを判定する。ステップＳ５において、例えば、スクリプト編集処理が指示されたと判定された場合、ステップＳ６において、スクリプト編集部３３は、スクリプト編集処理を実行し、その処理は、元に戻る。尚、スクリプト編集処理については、図７を参照して後述する。
【００８１】
以上の処理により、ステートデータが更新されることになるので、対応する状態遷移プログラムが更新される。
【００８２】
次に、図５のフローチャートを参照して、ステート編集処理について説明する。
【００８３】
ステップＳ２１において、ステート編集部３１は、操作部１１からの信号に基づいて、新規のステート（状態）を生成する処理であるか否かを判定する。例えば、図２の表示画面１０１上の図示せぬボタンが操作され、新規のステートを生成する処理が指示された場合、ステップＳ２２において、ステート編集部３１は、新規のステートを生成する。すなわち、ステート編集部３１は、新たな状態に対応するステート情報をステートデータ格納部１３に記録する。
【００８４】
ステップＳ２３において、ステート編集部３１は、新規に生成されたステートを編集対象ステートに設定する。
【００８５】
ステップＳ２４において、ステート編集部３１は、編集対象ステートのステート情報に更新があるか否かを判定する。ここで更新の有無が判定されるのは、ステート情報のうちステート名や対応するステート枠の表示位置などの情報である。すなわち、ステート編集部３１が編集するのは、ステート情報のうち、ステート名およびステート枠の表示位置の情報である。
【００８６】
ステップＳ２４において、ステート情報のうち、ステート名およびステート枠の表示位置の情報に更新があると判定された場合、ステップＳ２５において、ステート編集部３１は、更新された、ステート名およびステート枠の表示位置の情報を編集対象ステートのステート情報に反映させて更新する。
【００８７】
一方、ステップＳ２４において、更新がないと判定された場合、ステップＳ２５の処理は、スキップされる。
【００８８】
ステップＳ２６において、ステート編集処理の終了が指示されたか否かを判定し、終了が指示されない場合、その処理は、ステップＳ２４に戻り、終了が指示されたと判定された場合、ステート編集処理は終了する。
【００８９】
また、ステップＳ２１において、新規のステートの生成ではないと判定された場合、ステップＳ２７において、既存のステートが選択されたか否かが判定される。すなわち、図１０を参照して後述する表示処理により表示される、例えば、図２で示されるような状態遷移図表示画面１１２上に表示された既存のステート枠１３１乃至１３４のいずれかがポインタ１５０が操作部１１１により操作されて選択されたか否かにより、対応するステートＡ乃至Ｄのステートデータ格納部１３により格納されているステート情報のいずれかが選択されたか否かが判定される。例えば、既存のステートのステート情報が選択された場合、ステップＳ２８において、ステート編集部３１は、選択されたステートを編集対象ステートに設定し、その処理は、ステップＳ２４に進む。
【００９０】
一方、ステップＳ２７において、既存のステートが選択されたと判定されなかった場合、その処理は、ステップＳ２１に戻り、それ以降の処理が繰り返される。
【００９１】
すなわち、以上の処理により、新規のステート、または、既存のステートの何れかのステート情報について、ステート名およびステート枠の表示位置が、新たに設定されるか、または、更新されることになる。
【００９２】
次に、図６のフローチャートを参照して、トランジション編集処理について説明する。
【００９３】
ステップＳ４１において、トランジション編集部３２は、既存のステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。すなわち、図１０を参照して後述する表示処理により表示される、例えば、図２で示されるような状態遷移図表示画面１１２上に表示された既存のステート枠１３１乃至１３４のいずれかがポインタ１５０が操作部１１１により操作されて選択されたか否かにより、対応するステートＡ乃至Ｄのステートデータ格納部１３により格納されているステート情報のいずれかが選択されたか否かが判定される。そして、ステップＳ４１において、例えば、既存のステートのステート情報が選択された場合、ステップＳ４２において、トランジション編集部３２は、選択されたステートを編集対象ステートに設定し、その処理は、ステップＳ４３に進む。
【００９４】
ステップＳ４３において、トランジション編集部３２は、編集対象ステートのステート情報のうち、遷移先が指定されたか否かを判定する。すなわち、例えば、図２の状態遷移図表示画面１１２で示されるように、ステート枠１３１乃至１３４で示される状態Ａ乃至Ｄのうち、例えば、状態Ａが選択され、編集対象ステートに設定された場合、操作部１１１によりポインタ１５０をドラッグして状態Ａのステート枠１３１を基点として、例えば、状態Ｄのステート枠１３４を終点とするトランジション１４１で示されるような矢印を引いた場合、遷移先が状態Ｄに設定されることになる。
【００９５】
そこで、ステップＳ４３においては、トランジション編集部３２は、このようにトランジションの矢印が編集対象ステートの状態を示すステート枠から遷移先を示す状態のステート枠までの矢印が引かれたか否かにより、遷移先が設定されたか否かを判定する。
【００９６】
ステップＳ４３において、遷移先が設定されたと判定された場合、ステップＳ４４において、トランジション編集部３２は、イベントを指定するように要求する。より具体的には、例えば、遷移先を指定する処理として、図２のトランジション１４１がポインタ１５０により引かれた場合、トランジション編集部３２は、トランジションの横にイベントを指定する図示せぬ空欄を表示し、入力を促す。
【００９７】
ステップＳ４５において、トランジション編集部３２は、遷移する際のイベントが指定されたか否かを判定し、指定されたと判定されるまで、その処理を繰り返す。すなわち、トランジション編集部３２は、その空欄にイベントを指定する情報が入力されたか否かを判定し、イベントが指定されたか否かを判定する。
【００９８】
ステップＳ４５において、イベントが指定されたと判定された場合、ステップＳ４６において、トランジション編集部３２は、ステートデータ格納部１３にアクセスし、編集対象ステートのステート情報を読み出し、指定された遷移先とイベントの情報を反映させて更新する。すなわち、例えば、図２のトランジション１４１の場合、遷移先として「State D」が指定され、イベントとして、「KeyPress_x」が指定されるので、図３の左部で示されるように、遷移先とイベントに「State D」、および、「KeyPress_x」を追加して更新する。
【００９９】
ステップＳ４３において、遷移先が指定されていない場合、ステップＳ４４乃至Ｓ４６の処理がスキップされ、ステップＳ４７において、トランジション編集処理の終了が指示されたか否かを判定し、終了が指示されない場合、処理は、ステップＳ４３に戻る。すなわち、トランジション編集処理の終了が指示されるまで、ステップＳ４３乃至Ｓ４７の処理が繰り返される。
【０１００】
そして、ステップＳ４７において、トランジション編集処理の終了が指示された場合、その処理は終了する。
【０１０１】
以上の処理により、ポインタ１５０を操作部１１１により操作し、編集対象ステートのステート枠から遷移先のステート枠に矢印を引くだけで、トランジションの情報を編集することが可能となる。
【０１０２】
次に、図７のフローチャートを参照して、スクリプト編集処理について説明する。
【０１０３】
ステップＳ６１において、スクリプト編集部３３は、既存のステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。すなわち、図１０を参照して後述する表示処理により表示される、例えば、図２で示されるような状態遷移図表示画面１１２上に表示された既存のステート枠１３１乃至１３４のいずれかがポインタ１５０が操作部１１１により操作されて選択されたか否かにより、対応するステートＡ乃至Ｄのステートデータ格納部１３により格納されているステート情報のいずれかが選択されたか否かが判定される。そして、ステップＳ６１において、例えば、既存のステートのステート情報が選択された場合、ステップＳ６２において、スクリプト編集部３３は、選択されたステートを編集対象ステートに設定し、その処理は、ステップＳ６３に進む。
【０１０４】
ステップＳ６３において、スクリプト編集部３３は、スクリプトが更新されたか否かを判定する。例えば、操作部１１が操作されて、図示せぬエディタが起動され、対象となるスクリプトが更新された場合、スクリプトが更新されたと判定され、ステップＳ６４において、スクリプト編集部３３は、ステートデータ１３にアクセスし、編集対象ステートのステート情報を読み出し、スクリプト表示画面１１５上で編集された情報に基づいて、スクリプトを変更して、ステート情報を更新する。
【０１０５】
ステップＳ６５において、ステート編集部３３は、ステート編集処理の終了が指示されたか否かを判定し、終了が指示されていない場合、その処理は、ステップＳ６１に戻る。また、ステート編集処理の終了が指示された場合、その処理は、終了する。
【０１０６】
以上の処理により、スクリプトが編集される。
【０１０７】
次に、図８のフローチャートを参照して、状態遷移プログラム実行処理について説明する。
【０１０８】
ステップＳ９１において、状態遷移エンジン１５は、操作部１１より送信されてくる操作信号に基づいて、状態遷移図表示画面１１２上のいずれかのステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。より詳細には、状態遷移エンジン１５は、操作部１１より供給されてくる信号に基づいて、例えば、図２の状態遷移図表示画面１１２上のステート枠１３１乃至１３４のいずれかが、ポインタ１５０により選択されたか否かを判定し、いずれかのステートが選択されるまで、その処理を繰り返す。
【０１０９】
ステップＳ９１において、例えば、いずれかのステートが選択された場合、ステップＳ９２において、状態遷移エンジン１５は、選択されたステートをカレントステートとして設定する。すなわち、状態遷移エンジン１５は、操作部１１からの信号に基づいて、例えば、図２の状態遷移図表示画面１１２上のステート枠１３１乃至１３４のうち、ポインタ１５０により選択されたステート枠に対応するステートをカレントステートに設定する。また、このとき、状態遷移エンジン１５は、カレントステートがいずれのステートであるかを示す情報を状態遷移図生成部１４に供給する。この情報により、図９のフローチャートを参照して、後述する状態遷移図生成処理においてカレントステートのステート枠の表示色を変えて表示させる。
【０１１０】
ステップＳ９３において、状態遷移エンジン１５は、ステートデータ格納部１３にアクセスし、カレントステートのステート情報を読み出し、状態動作実行部１６に供給する。
【０１１１】
ステップＳ９４において、状態動作実行部１６は、供給されたカレントステートのステート情報を解釈する。すなわち、状態動作実行部１６は、供給されたカレントステートのステート情報のうち、特に、スクリプト情報を読み出して、その状態における動作を認識する。
【０１１２】
ステップＳ９５において、状態動作実行部１６は、スクリプト情報に記述されている処理を実行する。
【０１１３】
ステップＳ９６において、状態動作実行部１６は、状態遷移処理の終了が指示されたか否かを判定する。すなわち、状態動作実行部１６は、操作部１１からの信号に基づいて、状態遷移処理の終了が指示されたか否かを判定し、終了が指示されていない場合、その処理は、ステップＳ９７に進む。
【０１１４】
ステップＳ９７において、状態遷移エンジン１５は、イベントが発生したか否かを判定する。すなわち、状態遷移エンジン１５は、イベント検出部１９により検出されたイベントの情報が供給されてきたか否かを判定し、イベントがない場合、その処理は、ステップＳ９５に戻り、以降の処理が繰り返される。すなわち、イベントが検出されるまで、ステップＳ９５乃至Ｓ９７の処理が繰り返される。一方、ステップＳ９７において、イベントがあると判定された場合、その処理は、ステップＳ９８に進む。
【０１１５】
ステップＳ９８において、状態遷移エンジン１５は、供給されてきたイベントの情報により遷移先が設定されているか否かを判定する。すなわち、ステート情報が、図３で示されるものであって、現在の状態がステートＡであった場合、例えば、イベントとして、操作部１１のキーボードのうち「Ａ」のキーが操作されるというイベントが発生したとしても、遷移先が設定されていないことになる。このため、このような場合、その処理は、ステップＳ９５に戻る。すなわち、実質的に、イベントの発生がなかったものとして処理される。
【０１１６】
一方、ステップＳ９８において、遷移先があると判定された場合、すなわち、ステート情報が、図３で示されるものであって、現在の状態がステートＡであった場合、例えば、イベントとして、操作部１１のキーボードのうち「２」のキーが操作されるというイベントが発生すると、遷移先Ｂに設定されている。そこで、ステップＳ９９において、状態遷移エンジン１５は、遷移先のステートをカレントステートに設定し、その処理は、ステップＳ９３に戻り、それ以降の処理が繰り返される。すなわち、この処理により、新たな遷移先となるステートＢをカレントステートに設定し、ステップＳ９３以降の処理が繰り返される。
【０１１７】
以上の処理により、状態遷移エンジン１５が、イベント検出部１９より供給されてくるイベントの情報により状態遷移図に従って状態を変化させると共に、対応する状態のステート情報を読み出して、状態動作実行部１６に供給することが可能となる。また、状態動作実行部１６は、ユーザの操作に基づいて設定されている状態を変化させると共に、状態動作実行部１６は、対応する状態においてスクリプトで規定される動作を実行することが可能となる、
【０１１８】
次に、図９のフローチャートを参照して、状態遷移図生成処理について説明する。
【０１１９】
ステップＳ１２１において、状態遷移図生成部１４は、ステートデータ格納部１３にアクセスし、格納されている全ステートデータを読み出す。
【０１２０】
ステップＳ１２２において、ステート枠生成部４２は、全てのステート情報毎に状態遷移図上のステート枠を生成すると共に、スクリプト情報に基づいて、全スクリプトの記述内容をステート枠内に記述する。
【０１２１】
ステップＳ１２３において、トランジション付加部４３は、ステート情報のうち、イベントと対応する遷移先の情報に基づいて、トランジションを生成する。
【０１２２】
ステップＳ１２４において、状態遷移図生成部１４は、ステート枠生成部４１により生成されたステート枠、トランジション生成部４２により生成されたトランジションに基づいて、状態遷移図を構成する情報を生成し、表示制御部１７に供給する。
【０１２３】
以上の処理により、ステートデータ格納部１３に格納されているステート情報に基づいて、状態遷移図が生成され、表示制御部１７に供給することが可能となる。
【０１２４】
次に、図１０のフローチャートを参照して、表示処理について説明する。
【０１２５】
ステップＳ１４１において、状態遷移図表示制御部５１は、状態遷移図生成部１４より供給されてくる状態遷移図の情報に基づいて、状態遷移図表示画面１１２を表示する。
【０１２６】
ステップＳ１４２において、イベントリスト表示制御部５３は、イベント記憶部２３にアクセスし、格納されているイベントリスト２３ａを読み出し、実行済みのイベントに基づいて、実行済みイベントリスト表示画面１１３を表示し、実行しようとするイベントに基づいて、次実行イベントリスト表示画面１１４を表示する。
【０１２７】
ステップＳ１４３において、再生コントローラ表示制御部５５は、再生コントローラ表示画面１１５を生成して表示する。
【０１２８】
ステップＳ１４４において、状態動作表示制御部５２は、状態遷移図生成部１４より供給される情報に基づいて、カレントステートが指定されているか否かを判定する。ステップＳ１４４において、例えば、カレントステートが指定されていると判定された場合、ステップＳ１４５において、状態動作表示制御部５２は、カレントステートとして設定されている、状態動作実行部１６により実行されている動作内容に基づいて動作表示画面１１１を表示し、その処理は、ステップＳ１４１に戻る。
【０１２９】
ステップＳ１４４において、カレントステートが指定されていない場合、ステップＳ１４５の処理は、スキップされる。
【０１３０】
以上の処理により、図２で示されるような、動作表示画面１１１、状態遷移図表示画面１１２、実行済みイベントリスト表示画面１１３、次実行イベントリスト表示画面１１４、再生コントローラ表示画面１１５からなる表示画面１０１が表示部１８に表示される。
【０１３１】
以上、図４の状態遷移プログラム編集処理、図５のステート編集処理、図６のトランジション編集処理、図７のスクリプト編集処理、図８の状態遷移プログラム実行処理、図９の状態遷移図生成処理、図１０の表示処理により以下のような動作が実現される。
【０１３２】
すなわち、図１１で示されるように、ポインタ１５０が、ステート枠１３４上に存在し、カレントステートとして設定されている場合、カレントステートである状態Ｃのステート枠１３４は、他のステート枠とは異なる色で表示され、動作表示画面１１１には、状態Ｃの動作状態（五重塔のようなもの）が表示されているものとする。このとき、ポインタ１５０を移動させて、図１２で示されるように、ステート枠１３３上に存在させると、状態Ｃがカレントステートとして設定されいるため、ステート枠１３３は他のステート枠とは表示色が異なっている。また、動作表示画面１１１には、カレントステートである状態Ｃにおける処理結果が再生されることが示されている。
【０１３３】
以上においては、ステート毎にイベントを入力し、状態を遷移させ、必要に応じて再びイベントを入力することで、他の状態に遷移させることができる状態となるが、第１の状態から第２の状態に至るまでに必要とされるイベントをイベントリストとして記憶させ、必要に応じて、このイベントリストを読み出し、イベントリストに基づいてイベントを発生させ、第１の状態から第２の状態に遷移させることができる。
【０１３４】
そこで、次に、図１３のフローチャートを参照して、上述したイベントリスト２３ａを生成するイベントリスト生成処理について説明する。
【０１３５】
ステップＳ１６１において、イベントコントローラ２２は、再生コントローラ表示画面１１５の記録ボタン１１５ｆが、操作部１１により操作され、押下されたか否かを判定し、操作されたと判定されるまで、その処理を繰り返す。ステップＳ１６１において、例えば、操作部１１が操作されて、記録ボタン１１５ｆが押下された場合、その処理は、ステップＳ１６２に進む。
【０１３６】
ステップＳ１６２において、イベントコントローラ２２は、イベント記録部２１を制御して、イベント検出部１９により検出されたイベントを、イベントリスト２３ａとしてイベント記憶部２３に記憶させる動作モードに切り替えさせる。
【０１３７】
ステップＳ１６３において、イベント記録部２１は、イベント検出部１９よりイベントが検出されたことを示す信号が供給されてきているか否かを判定する。ステップＳ１６３において、例えば、操作部１１が操作されて、所定のイベントが発生し、イベント検出部１９が、そのイベントを検出すると、イベント検出部１９より状態遷移エンジン１５に供給されるイベントの検出信号と同様の信号が、イベント記録部２３に供給されることになるため、イベントが検出されたと判定され、その処理は、ステップＳ１６４に進む。
【０１３８】
ステップＳ１６４において、イベント記録部２１は、自らのRTC２１ａの発生時刻に基づいて、イベント記憶部２３にイベントリスト２３ａとして時刻の情報を記録する。ここでいう時刻とは、例えば、動作モードが、発生したイベントを記録する動作モードに切替えられたタイミングを基準とする時刻である。
【０１３９】
ステップＳ１６５において、イベント記録部２１は、イベント検出部１９より供給されてきた信号に基づいて、イベント記憶部２３にイベントリスト２３ａとしてイベントタイプの情報を記録する。
【０１４０】
ステップＳ１６６において、イベント記録部２１は、イベント検出部１９より供給されてきた信号に基づいて、イベント記憶部２３にイベントリスト２３ａとしてイベントパラメータの情報を記録する。
【０１４１】
ステップＳ１６７において、イベント記録部２１は、状態遷移エンジン１５から状態動作実行部１６に供給される状態を示す信号に基づいて、イベント記憶部２３にイベントリスト２３ａとして、遷移前の状態の情報を記録する。
【０１４２】
ステップＳ１６８において、イベント記録部２１は、状態遷移エンジン１５から状態動作実行部１６に供給される状態を示す信号に基づいて、イベント記憶部２３にイベントリスト２３ａとして、遷移後の状態の情報を記録する。
【０１４３】
ステップＳ１６９において、イベントコントローラ２２は、再生コントローラ表示画面１１５の記録ボタン１１５ｆが、操作部１１により操作され、再度押下されたか否かを判定し、操作されたと判定されない場合、その処理は、ステップＳ１６３に戻る。また、ステップＳ１６３において、イベントが検出されていないと判定された場合、ステップＳ１６４乃至Ｓ１６８の処理はスキップされる。
【０１４４】
さらに、ステップＳ１６９において、記録ボタン１１５ｆが再度押下されたと判定された場合、ステップＳ１７０において、イベントコントローラ２２は、イベント記録部２１を制御して、イベント検出部１９により検出されたイベントを、イベントリスト２３ａとしてイベント記憶部２３に記憶しない動作モードに切り替えさせ、その処理は、終了する。
【０１４５】
この動作により、例えば、図１４で示されるようなイベントリスト２３ａが記録される。図１４においては、左から時刻、イベントタイプ、イベントパラメータ、遷移前の状態（From）、および遷移後の状態（To）が記録されている。図１４において、時刻の情報は、上から「１．０」、「２．０」、「３．５」、および「４．０」が記録されている。また、イベントタイプの情報は、上から「電源ボタン」、「メニュボタン」、「下ボタン」、および「決定ボタン」が記録されている。さらに、イベントパラメータの情報は、上から「LONG_PUSH」、「PUSH」、「PUSH」、および「PUSH」が記録されている。また、遷移前の状態の情報は、上から「INIT」、「POWER_ON」、「MENU」、および「MENU_CAMERA」が記録されている。さらに、遷移後の状態の情報は、上から「POWER_ON」、「MENU」、「MENU_CAMERA」、および「FUNC_CAMERA」が記録されている。
【０１４６】
すなわち、図１４においては、時刻「１．０」のタイミングで、電源ボタンが長押し（LONG_PUSH）されることにより、状態が初期状態（INIT）から電源オン状態（POWER_ON）状態に遷移することが示されている。また、時刻「２．０」のタイミングで、メニュボタンが押下（PUSH）されることにより、状態が電源オン状態（POWER_ON）からメニュ画面が表示される状態（MENU）状態に遷移することが示されている。さらに、時刻「３．５」のタイミングで、下ボタンが押下（PUSH）されることにより、状態がメニュ画面が表示される状態（MENU）からカメラのメニュ画面が表示される状態（MENU_CAMERA）状態に遷移することが示されている。また、時刻「４．０」のタイミングで、決定ボタンが押下（PUSH）されることにより、状態がカメラのメニュ画面が表示される状態（MENU_CAMERA）からカメラの機能が表示される状態（FUNC_CAMERA）に遷移することが示されている。
【０１４７】
以上の処理により、発生したイベントの情報がイベントリスト２３ａとして記録されることになるので、上述した処理により生成されたステートデータに基づいた状態遷移を、後述するイベントリストの再生処理により再現させることが可能となる。また、所定の動作で、エラーが発生するような場合、以上のような処理により、エラーが発生するイベントの発生パターンを正確に認識することが可能となり、バグの発生個所をより正確に発見することが可能となる。
【０１４８】
次に、図１５のフローチャートを参照して、上述の処理により生成されたイベントリスト２３ａを編集するイベントリスト編集処理について説明する。
【０１４９】
ステップＳ１８１において、イベント編集部２０は、操作部１１が操作されることにより、イベントリスト２３ａの編集が指示されたか否かを判定し、編集が指示されるまで、その処理を繰り返す。ステップＳ１８１において、例えば、編集が指示された場合、その処理は、ステップＳ１８２に進む。尚、ここで、イベントリスト２３ａの編集が指示される場合、いずれか複数にイベントリスト２３ａが存在するとき、イベントリスト２３ａを特定する情報も含めた編集の指示があるものとする。
【０１５０】
ステップＳ１８２において、イベント編集部２０は、編集が指示されたイベントリスト２３ａに対して、イベントを新たに追加するか否かを判定する。ステップＳ１８２において、例えば、イベントが新たに追加される場合、ステップＳ１８３において、イベント記憶部２３のイベントリスト２３ａに新たに追加されるイベントの時刻を記録する。
【０１５１】
ステップＳ１８４において、イベント編集部２０は、イベント記憶部２３のイベントリスト２３ａに新たに追加されるイベントのイベントタイプの情報を記録する。
【０１５２】
ステップＳ１８５において、イベント編集部２０は、イベント検出部１９より供給されてきた信号に基づいて、イベント記憶部２３にイベントリスト２３ａとしてイベントパラメータの情報を記録する。
【０１５３】
ステップＳ１８６において、イベント編集部２０は、操作部１１が操作されて、編集の終了が指示されたか否かを判定し、終了が指示された場合、その処理は終了し、終了が指示されていない場合、その処理は、ステップＳ１８２に戻る。
【０１５４】
ステップＳ１８２において、イベントの追加ではないと判定された場合、ステップＳ１８７において、イベント編集部２０は、イベントの削除が指示されているか否かを判定する。例えば、操作部１１が操作されて、指定のイベントの削除が指示されていた場合、ステップＳ１８８において、イベント編集部２０は、対応するイベントの時刻、イベントタイプ、イベントパラメータ、遷移前の状態、および遷移後の状態の情報を削除する。
【０１５５】
一方、ステップＳ１８７において、イベントの削除ではないと判定された場合、編集処理は、追加、削除、または、変更のいずれかであるので、ここでは、追加でも、削除でもないため、変更であると判定され、その処理は、ステップＳ１８９に進む。
【０１５６】
ステップＳ１８９において、イベント編集部２０は、対応するイベントの時刻、イベントタイプ、イベントパラメータ、遷移前の状態、および遷移後の状態の情報を、編集内容に応じて変更する。
【０１５７】
以上の処理により、例えば、図１４のイベントリスト２３ａを図１６で示されるようなイベントリスト２３ａに編集することが可能となる。尚、図１６においては、時刻「３．５」におけるイベントタイプが「下ボタン」から「上ボタン」に変更されている。この際、遷移前の状態と、遷移後の状態とについては、不明となるため空欄にされているが、操作部１１が操作されることにより、入力できる構成としても良い。また、変更のあったイベント以降のイベントについては、遷移前の状態と、遷移後の状態とが必ずしも同一ではないため、削除されるようにしても良い。図１６においては、変更のあったイベント以降のイベントについては、遷移前の状態と、遷移後の状態とが削除されている。
【０１５８】
以上の処理により、自由にイベントの発生パターンを編集することが可能となる。このため、例えば、同一の位置にポインタを配置した状態で、１秒間に１０回操作ボタンをクリックするといった、通常では再現が困難なイベントを発生させることも可能となり、人為的に偶発的に発生してしまうようなイベントの発生パターンによりエラーが発生するようなバグなどをも正確に発見することが可能となり、より安定したユーザインタフェースを開発することが可能となる。
【０１５９】
次に、図１７のフローチャートを参照して、イベントリスト２３ａをXMLなどの外部ファイルとしてフォーマット変換するイベントリスト変換処理について説明する。
【０１６０】
ステップＳ２０１において、イベントコントローラ２２は、操作部１１が操作されて、イベント記憶部２３に記憶された、いずれかのイベントリスト２３ａが指定され、再生コントローラ表示画面１１５内の変換ボタン１１５ｅが押下されることにより、指定されたイベントリスト２３ａのフォーマット変換が指示されたか否かを判定し、指示されるまで、その処理を繰り返す。
【０１６１】
ステップＳ２０１において、変換ボタン１１５ｅが押下されたと判定された場合、ステップＳ２０２において、イベントコントローラ２２は、イベント記録部２１に指定されたイベントリスト２３ａをXMLフォーマットに変換するように指示する。これにより、イベント記録部２１の変換部２１ｂは、指定されたイベントリスト２３ａの時刻情報を全て読み出す。ステップＳ２０３において、変換部２１ｂは、指定されたイベントリスト２３ａのイベントタイプおよびイベントパターンを全て読み出す。
【０１６２】
ステップＳ２０４において、変換部２１ｂは、読み出した時刻情報と共に、対応付けて、イベントタイプおよびイベントパターンをXMLに変換する。
【０１６３】
ステップＳ２０５において、変換部２１ｂは、XMLに変換したイベントリスト２３ａ’をイベント記憶部２３に記憶させる。XMLに変換されたイベントリスト２３ａ’は、例えば、図１８で示されるように、図１４で示される、時刻、イベントタイプ、およびイベントパラメータの情報より構成されるイベントリスト２３ａ’である。結果として、パーソナルコンピュータなどの汎用の情報処理装置でも認識できる形式で抽出することが可能となる。
【０１６４】
次に、図１９のフローチャートを参照して、上述したイベントリスト生成処理により生成されたイベントリスト２３ａ、または、イベントリスト編集処理により編集されたイベントリスト２３ａに基づいたイベントリスト再生処理を説明する。
【０１６５】
ステップＳ２２１において、イベントコントローラ２２は、操作部１１が操作されて再生ボタン１１５ｂが操作されたか否かを判定し、操作されるまで、その処理を繰り返す。ステップＳ２２１において、再生ボタン１１５ｂが操作されたと判定された場合、ステップＳ２２２において、イベントコントローラ２２は、イベント記憶部２３の所定のイベントリスト２３ａを読み出し、RTC２２ａにより発生される時刻に基づいて、所定の時間が経過したか否かを判定し、経過するまでその処理を繰り返す。この所定の時間については、例えば、状態遷移プログラムを実行させる上で最小単位となる処理時間よりも短い処理時間とすることが望ましい。
【０１６６】
ステップＳ２２２において、所定の時間が経過したと判定された場合、ステップＳ２２３において、イベントコントローラ２２は、イベントリスト２３ａを参照して、所定の時間が経過したタイミングに対応する時刻でイベントの発生が記録されているか否かを判定する。例えば、図１４で示されるイベントリスト２３ａであった場合、所定の時間が経過した時刻が「０．１」であるとすると、最初の処理の場合、「１．０」に至るまではイベントが存在しないので、イベントはないと判定され、その処理は、ステップＳ２２２に戻る。すなわち、所定の時間が経過し、その時刻でイベントがあると判定されるまで、ステップＳ２２２，Ｓ２２３の処理が繰り返されることになる。
【０１６７】
ステップＳ２２３において、例えば、所定の時間が経過したタイミングにおける時刻「１．０」の場合、電源ボタンが長押しされるというイベントがあるので、イベントがあると判定され、その処理は、ステップＳ２２４に進む。
【０１６８】
ステップＳ２２４において、イベントコントローラ２２は、イベントタイプおよびイベントパラメータを読み出す。すなわち、今の場合、イベントタイプとして「電源ボタン」が読み出され、イベントパラメータとして「LONG_PUSH（長押し）」が読み出されることになる。
【０１６９】
ステップＳ２２５において、イベントコントローラ２２は、読み出したイベントタイプおよびイベントパラメータに基づいて、対応するイベントの発生を示す信号を発生し、イベント検出部１９に供給する。この結果、イベント検出部１９は、イベントコントローラ２２により擬似的に発生されたイベントの発生を示す信号に基づいて、イベントを検出する。
【０１７０】
ステップＳ２２６において、イベントコントローラ２２は、再生ボタン１１５ｂが押下されたか、または、イベントリスト２３ａに記録されているすべてのイベントが終了したか否かを判定し、再生ボタン１１５ｂが押下されておらず、かつ、イベントリスト２３ａに記録されているすべてのイベントが終了していない場合、その処理は、ステップＳ２２２に戻る。すなわち、再生ボタン１１５ｂが押下されたか、または、イベントリスト２３ａに記録されているすべてのイベントが終了するまで、ステップＳ２２２乃至Ｓ２２６の処理が繰り返される。
【０１７１】
そして、ステップＳ２２６において、再生ボタン１１５ｂが押下されたか、または、イベントリスト２３ａに記録されているすべてのイベントが終了した場合、その処理は終了する。
【０１７２】
以上の処理により、イベントリスト２３ａに記録されたイベントタイプとイベントパラメータに基づいて指定された少なくとも１以上のイベントが、所定の時刻に、順次発生されることになる。結果として、イベントリスト２３ａに記録された複数のイベントを、同一のパターンで再現性よく繰り返し発生させることが可能となる。
【０１７３】
すなわち、イベントコントローラ２２を用いずに、操作部１１などを操作してイベントを発生させていた場合、ステップ再生させるとき、図２０で示されるように、タイミングＰ１において、操作部１１が操作されてステートデータに基づいた１フレーム分の処理を実行させるように再生ボタン１１５ｂが操作されると、イベント検出部１９は、これに基づいて、各種のイベントの検知を開始し、例えば、タイミングＩ１乃至Ｉ３でイベントを検出して、状態遷移エンジン１５に供給することにより、期間Ｅ１１において状態遷移エンジン１５がステートデータに基づいて、状態遷移処理を実行し、期間Ｅ１２において、状態動作実行部１６が実際の状態動作を実行することで、状態動作表示制御部５２により動作表示画面１１１に動作結果の表示画面が表示される。
【０１７４】
同様にして、タイミングＰ２において、操作部１１が操作されてステートデータに基づいた１フレーム分の処理を実行させるように再生ボタン１１５ｂが操作されると、イベント検出部１９は、これに基づいて、各種のイベントの検知を開始し、例えば、タイミングＩ４，Ｉ５でイベントを検出して、状態遷移エンジン１５に供給することにより、期間Ｅ２１において状態遷移エンジン１５がステートデータに基づいて、状態遷移処理を実行し、期間Ｅ２２において、状態動作実行部１６が実際の状態動作を実行することで、状態動作表示制御部５２により動作表示画面１１１に動作結果の表示画面が表示される。
【０１７５】
従って、上述したようなイベントコントローラ２２を用いずに状態動作プログラムを実行させて、表示画面を表示させようとするとき、操作部１１などのイベント検出部１９がイベントを検出するまで、状態遷移プログラムの動作が決定されないことになるため、複数のイベントを同一のパターンで発生させて、繰り返して状態遷移プログラムを実行させるにあたり、イベントの発生パターンの再現性が低く、イベントの発生パターンに応じた動作の比較や、エラーの発生状況の把握が困難であった。
【０１７６】
尚、図２０においては、上部のタイミングチャートは、再生コントローラ１１５における操作タイミングを示し、下部のタイミングチャートは、イベント検出部１９によりイベントが検出されるタイミングを示している。
【０１７７】
一方、イベントコントローラ２２を用いた場合、図２１で示されるように、タイミングＰ１において、操作部１１が操作されてステートデータに基づいた１フレーム分の処理を実行させるように再生ボタン１１５ｂが操作されると、まず、タイミングＣ１１でイベントコントローラ２２が所定の時間間隔でイベントリスト２３ａにおけるイベントの有無の監視を開始し、次いで、タイミングＥＩ１１で、イベントの発生を示す情報をイベント検出部１９に供給すると、タイミングＣ１２でイベント検出部１９が、各種のイベントの検知を開始する。
【０１７８】
これ以降においては、イベントコントローラ２２が、イベントリスト２３ａに記録された情報に基づいて、例えば、タイミングＩ１’乃至Ｉ３’でイベントを発生し、これをイベント検出部１９が検出して、状態遷移エンジン１５に供給することにより、期間Ｅ１１において状態遷移エンジン１５がステートデータに基づいて、状態遷移処理を実行し、期間Ｅ１２において、状態動作実行部１６が実際の状態動作を実行することで、状態動作表示制御部５２により動作表示画面１１１に動作結果の表示画面が表示される。
【０１７９】
同様にして、タイミングＰ２において、操作部１１が操作されてステートデータに基づいた１フレーム分の処理を実行させるように再生ボタン１１５ｂが操作されると、まず、タイミングＣ２１でイベントコントローラ２２が所定の時間間隔でイベントリスト２３ａにおけるイベントの有無の監視を開始し、次いで、タイミングＥＩ２１で、イベントの発生を示す情報をイベント検出部１９に供給すると、タイミングＣ２２でイベント検出部１９が、各種のイベントの検知を開始する。
【０１８０】
これ以降においては、イベントコントローラ２２が、イベントリスト２３ａに記録された情報に基づいて、例えば、タイミングＩ４’，Ｉ５’でイベントを発生し、これをイベント検出部１９が検出して、状態遷移エンジン１５に供給することにより、期間Ｅ２１において状態遷移エンジン１５がステートデータに基づいて、状態遷移処理を実行し、期間Ｅ２２において、状態動作実行部１６が実際の状態動作を実行することで、状態動作表示制御部５２により動作表示画面１１１に動作結果の表示画面が表示される。
【０１８１】
尚、図２１においては、上部のタイミングチャートは、再生コントローラ１１５における操作タイミングを示し、中部のタイミングチャートは、イベント検出部１９によりイベントが検出されるタイミングを示し、下部のタイミングチャートは、イベントコントローラ２２における動作タイミングを示している。
【０１８２】
このようにイベントコントローラ２２は、予めイベントリスト２３ａに記録されたイベントを記録されたタイミングで発生するので、状態遷移エンジン１５は、再現性の高い動作を繰り返し実現することが可能となるため、イベントの発生パターンに応じた動作の比較や、エラーの発生状況の把握を容易にすることが可能となる。結果として、バグの発生原因を特定し、迅速に状態遷移プログラムの開発を進めることが可能となる。
【０１８３】
次に、図２２のフローチャートを参照して、イベントリスト早送り再生処理について説明する。
【０１８４】
ステップＳ２４１において、イベントコントローラ２２は、操作部１１が操作されて早送りボタン１１５ｃが操作されたか否かを判定し、操作されるまで、その処理を繰り返す。ステップＳ２４１において、早送りボタン１１５ｃが操作されたと判定された場合、ステップＳ２４２において、イベントコントローラ２２は、イベント記憶部２３の所定のイベントリスト２３ａを読み出し、次のイベントが記録されているか否かを判定する。ステップＳ２４２においては、次のイベントがあると判定されるまで、同様の処理が繰り返されることになる。ステップＳ２４２において、例えば、図１４で示されるように、最初の処理であるとき、時刻「１．０」のイベントがあるので、イベントがあると判定され、その処理はステップＳ２４３に進む。
【０１８５】
ステップＳ２４３において、イベントコントローラ２２は、イベントタイプおよびイベントパラメータを読み出す。
【０１８６】
ステップＳ２４４において、イベントコントローラ２２は、読み出したイベントタイプおよびイベントパラメータに基づいて、対応するイベントの発生を示す信号を発生し、イベント検出部１９に供給する。
【０１８７】
ステップＳ２４５において、イベントコントローラ２２は、再生ボタン１１５ｂが押下されたか（再生の停止が指示されたか）、または、イベントリスト２３ａに記録されているすべてのイベントが終了したか否かを判定し、再生ボタン１１５ｂが押下されておらず、かつ、イベントリスト２３ａに記録されているすべてのイベントが終了していない場合、その処理は、ステップＳ２４２に戻る。すなわち、再生ボタン１１５ｂが押下されたか、または、イベントリスト２３ａに記録されているすべてのイベントが終了するまで、ステップＳ２４２乃至Ｓ２４５の処理が繰り返される。
【０１８８】
そして、ステップＳ２４５において、再生ボタン１１５ｂが押下されたか、または、イベントリスト２３ａに記録されているすべてのイベントが終了した場合、その処理は終了する。
【０１８９】
すなわち、図２３で示されるように、タイミングＶ１において、操作部１１が操作されてステートデータに基づいた処理を実行させるように再生ボタン１１５ｂが操作されると、まず、タイミングＣ４１でイベントコントローラ２２がイベントリスト２３ａにおけるイベントの有無の監視を開始し、次いで、タイミングＥＩ１１で、イベントの発生を示す情報をイベント検出部１９に供給すると、タイミングＣ４２でイベント検出部１９が、各種のイベントの検知を開始する。
【０１９０】
これ以降においては、イベントコントローラ２２が、イベントリスト２３ａに記録された情報に基づいて、連続的にイベントを発生し、これをイベント検出部１９が検出して、状態遷移エンジン１５に供給することにより、期間Ｅ１１’において状態遷移エンジン１５がステートデータに基づいて、状態遷移処理を実行し、状態動作実行部１６が実際の状態動作を実行する。このとき、状態動作表示制御部５２は、動作表示画面１１１に動作結果の表示画面を表示せず、また、各イベントの発生時刻を無視して、所定の時間間隔で連続的にイベントが発生することになるので、フレームだけを連続的に早送りすることが可能となる。
【０１９１】
さらに、連続的に、タイミングＣ５１でイベントコントローラ２２がイベントリスト２３ａにおけるイベントの有無の監視を開始し、次いで、タイミングＥＩ１２で、イベントの発生を示す情報をイベント検出部１９に供給すると、タイミングＣ５２でイベント検出部１９が、各種のイベントの検知を開始して、状態遷移エンジン１５に供給することにより、期間Ｅ２１’において状態遷移エンジン１５がステートデータに基づいて、状態遷移処理を実行する。
【０１９２】
以上の処理により、イベントリスト２３ａに記録されたイベントが、発生するための時刻の情報と無関係に連続的に発生されることになるため、状態遷移プログラムの動作が、あたかも早送り処理されることになるため、所望とするイベントを発生させようとするタイミングまで高速で進めることが可能となる。
【０１９３】
次に、図２４のフローチャートを参照して、イベントリストの巻き戻し再生処理について説明する。尚、図２４のフローチャートにおけるステップＳ２６５乃至Ｓ２６９の処理については、図１９のフローチャートを参照して説明したステップＳ２２２乃至Ｓ２２６と同様であるので、その説明は省略する。
【０１９４】
ステップＳ２６１において、イベントコントローラ２２は、操作部１１が操作されて巻き戻しボタン１１５ａが操作されたか否かを判定し、操作されるまで、その処理を繰り返す。ステップＳ２６１において、巻き戻しボタン１１５ａが操作されたと判定された場合、ステップＳ２６２において、イベントコントローラ２２は、表示制御部１７を制御して、表示部１８に、例えば、図２５で示されるような、巻き戻し位置設定用のダイアログボックス２０１を表示させる。図２５においては、上部に時刻設定チェックボックス２１１が設けられており、その右側に時刻設定欄２２１が設けられている。また、図２５の下部においては、イベント指定チェックボックス２１２が設けられており、その右側にイベント選択欄２２２が設けられている。尚、イベント指定チェックボックス２１２に表示されている時刻０１におけるイベントＥ１、時刻０３におけるイベントＥ２、時刻０４におけるイベントＥ３、時刻０７におけるイベントＥ４、および時刻０９におけるイベントＥ５は、実行済みイベントリスト表示画面１１４に記録されているイベントと同様のものであり、図示せぬポインタにより選択することができる。
【０１９５】
ステップＳ２６３において、イベントコントローラ２２は、時刻設定チェックボックス２１１がチェックされ、時刻設定欄２２１に設定時刻が入力されているか否かに基づいて、巻き戻し再生を開始するタイミングの時刻が指定されているか否かを判定する。ステップＳ２６３において、例えば、時刻設定チェックボックス２１１がチェックされ、時刻設定欄２２１に設定時刻が入力されている場合、時刻指定であると判定され、その処理は、ステップＳ２６４に進む。
【０１９６】
ステップＳ２６４において、イベントコントローラ２２は、RTC２２ａにより発生する時刻情報を指定された時刻に設定する。換言すれば、イベントコントローラ２２は、今現在よりも、前のタイミングにおける、指定された時刻に設定する。すなわち、図２６で示されるように、現在時刻が、「Now」で示される「１２」である場合、設定時刻が「１１」であったとき、イベントコントローラ２２は、RTC２２ａにより発生する時刻を、図中のタイミングＢ２に相当する「１１」に戻して設定する。尚、図２６においては、時刻「１」において、イベントＥ１が発生し、時刻「３」において、イベントＥ２が発生し、時刻「４」において、イベントＥ３が発生し、時刻「７」において、イベントＥ４が発生し、時刻「９」において、イベントＥ５が発生することが示されている。
【０１９７】
この処理によりRTC２２ａにより発生される時刻が「１２」から「１１」に戻されることになる。すなわち、以上の処理により、所望とする時刻にまで時刻設定を遡らせる事により、一度発生したイベントを再度発生させることができ、結果として、状態遷移プログラムが、巻き戻された状態から再び実行されることになる。
【０１９８】
また、ステップＳ２６３において、時刻指定ではないと判定された場合、すなわち、イベント指定チェックボックス２１２がチェックされ、イベント選択欄２２２のいずれかのイベントが選択された場合、ステップＳ２７０において、イベントコントローラ２２は、RTC２２ａにより発生する時刻を選択されたイベントの発生時刻に設定する。すなわち、例えば、イベント指定チェックボックス２１２がチェックされ、イベント選択欄２２２のイベントＥ５に対応するイベントが選択された場合、イベントコントローラ２２は、RTC２２ａの発生時刻を「１２」から、タイミングＢ１に相当する、選択されたイベントＥ５の発生時刻である「９」に戻して設定する。従って、今の場合、直前のイベントであるイベントＥ５が発生することになる。
【０１９９】
以上の処理により、所望とするイベントの発生した時刻までRTC２２ａの発生時刻を遡らせて、状態遷移プログラムを実行させることが可能となる。
【０２００】
従って、いずれにおいても、以上の処理により、所望とする時刻、またはイベントの発生した時刻にまで時刻設定を遡らせる事により、一度発生したイベントを再度発生させることが可能となる。
【０２０１】
次に、図２７のフローチャートを参照して、イベントリストテスト再生処理について説明する。
【０２０２】
ステップＳ２８１において、イベントコントローラ２２は、操作部１１が操作されて、所定のイベントリスト２３ａが設定されて、かつ、テスト再生ボタン１１５ｄが操作されたか否かを判定し、操作されたと判定されるまで、その処理を繰り返す。ステップＳ２８１において、テスト再生ボタン１１５ｄが操作されたと判定された場合、ステップＳ２８２において、イベントコントローラ２２は、イベント記憶部２３の所定のイベントリスト２３ａを読み出し、RTC２２ａにより発生される時刻に基づいて、所定の時間が経過したか否かを判定し、経過するまでその処理を繰り返す。
【０２０３】
ステップＳ２８２において、所定の時間が経過したと判定された場合、ステップＳ２８３において、イベントコントローラ２２は、イベントリスト２３ａを参照して、所定の時間が経過したタイミングにおける時刻でイベントの発生が記録されているか否かを判定し、イベントが存在しない場合、その処理は、ステップＳ２８２に戻る。すなわち、所定の時間が経過した時刻において、イベントがあると判定されるまで、ステップＳ２８２，Ｓ２８３の処理が繰り返されることになる。
【０２０４】
ステップＳ２８３において、イベントがあると判定された場合、その処理は、ステップＳ２８４に進む。
【０２０５】
ステップＳ２８４において、状態読出部２４は、イベントコントローラ２２よりイベント検出部１９に供給されているイベントの情報に基づいて、供給されたイベントにより遷移する前の状態の情報をイベントリスト２３ａより読み出し、テスト結果比較部２５に供給する。テスト結果比較部２５は、状態読出部２４より供給されてくるイベントリスト２３ａに記録されている、今現在の状態、すなわち、イベントが発生する前の状態と、状態遷移エンジン１５より供給される、実際に状態遷移プログラムを実行させた場合における現在の状態、すなわち、イベント発生前の状態とを比較し、イベント前の状態が適正であるか否かを判定する。
【０２０６】
ステップＳ２８４において、例えば、状態読出部２４より供給されてくるイベントリスト２３ａに記録されている今現在の状態と、状態遷移エンジン１５より供給される、実際に状態遷移プログラムを実行させた場合におけるイベント発生前の状態とが一致しており、適正であると判定された場合、ステップＳ２８５において、イベントコントローラ２２は、イベントタイプおよびイベントパラメータを読み出し、ステップＳ２８６において、読み出したイベントタイプおよびイベントパラメータに基づいて、対応するイベントの発生を示す信号を発生し、イベント検出部１９に供給する。
【０２０７】
ステップＳ２８７において、状態読出部２４は、イベントコントローラ２２よりイベント検出部１９に供給されているイベントの情報に基づいて、供給されたイベントにより遷移した後の状態の情報をイベントリスト２３ａより読み出し、テスト結果比較部２５に供給する。テスト結果比較部２５は、状態読出部２４より供給されてくるイベントリスト２３ａに記録されている、今現在の状態、すなわち、イベントが発生した後の状態と、状態遷移エンジン１５より供給される、実際に状態遷移プログラムを実行させた場合における現在の状態、すなわち、イベント発生後の状態とを比較し、イベント後の状態が適正であるか否かを判定する。
【０２０８】
ステップＳ２８７において、例えば、状態読出部２４より供給されてくるイベントリスト２３ａに記録されている今現在の状態と、状態遷移エンジン１５より供給される、実際に状態遷移プログラムを実行させた場合におけるイベント発生後の状態とが一致しており、適正であると判定された場合、ステップＳ２８８において、イベントコントローラ２２は、テスト再生ボタン１１５ｄが押下されたか、または、イベントリスト２３ａに記録されているすべてのイベントが終了したか否かを判定し、テスト再生ボタン１１５ｄが押下されておらず、かつ、イベントリスト２３ａに記録されているすべてのイベントが終了していない場合、その処理は、ステップＳ２８２に戻る。すなわち、テスト再生ボタン１１５ｄが押下されたか、または、イベントリスト２３ａに記録されているすべてのイベントが終了するまで、ステップＳ２８２乃至Ｓ２８８の処理が繰り返される。
【０２０９】
そして、ステップＳ２８８において、テスト再生ボタン１１５ｄが押下されたか、または、イベントリスト２３ａに記録されているすべてのイベントが終了した場合、その処理は終了する。
【０２１０】
一方、ステップＳ２８４において、上述したイベントリスト編集処理により、例えば、図１４のイベントリスト２３ａが、図２８で示されるイベントリスト２３ａで示されるように、イベントタイプが「下ボタン」から「上ボタン」に切替えられたのにもかかわらず、時刻「４．０」におけるイベントのイベント発生前の状態と、イベント発生後の状態とがいずれもそのままであるような場合、時刻「３．５」における「上ボタン」が押下されるというイベントにより、実際に状態遷移エンジン１５が状態遷移プログラムを実行することにより、「MENU_VIDEO」に遷移していたとき、時刻「４．０」の「決定ボタン」が押下されるというイベントは、イベント発生前の状態として「MENU_CAMERA」が設定されているため、イベント前の状態が適正ではないと判定された場合、ステップＳ２８９において、テスト結果比較部２５は、イベント発生前の状態に矛盾が発生していることを表示制御部１７に通知する。テスト結果表示制御部５４は、この通知に基づいて、表示部１８にイベントリスト２３ａにおけるイベント発生前の状態の記述に矛盾があり、イベントリスト２３ａに基づいた動作が破綻することを警告することを示す画面を表示し、その処理は終了する。
【０２１１】
また、ステップＳ２８７において、上述したイベントリスト編集処理により、例えば、図１４のイベントリスト２３ａが、図２８で示されるイベントリスト２３ａで示されるように、イベントタイプが「下ボタン」から「上ボタン」に切替えられたのにもかかわらず、時刻「４．０」におけるイベントのイベント発生前の状態と、イベント発生後の状態とがいずれもそのままであるような場合、時刻「３．５」における「上ボタン」が押下されるというイベントにより、実際に状態遷移エンジン１５が状態遷移プログラムを実行することにより、「MENU_VIDEO」に遷移していたとき、時刻「３．５」の「上ボタン」が押下されるというイベントは、イベント発生後の状態として「MENU_CAMERA」が設定されているため、イベント後の状態が適正ではないと判定された場合、ステップＳ２９０において、テスト結果比較部２５は、イベント発生後の状態に矛盾が発生していることを表示制御部１７に通知する。テスト結果表示制御部５４は、この通知に基づいて、表示部１８にイベントリスト２３ａにおけるイベント発生後の状態の記述に矛盾があり、イベントリスト２３ａに基づいた動作が破綻することを警告することを示す画面を表示し、その処理は終了する。
【０２１２】
以上の処理により、イベントリスト２３ａにおけるイベント発生前の状態、または、イベント発生後の状態と、イベント発生前、または、イベント発生後に状態遷移プログラムが実際に実行されることにより遷移される状態とが一致しない場合、イベントリスト２３ａの情報に誤りがあり、実行中に破綻することがあることが通知されることになるので、エラーの発生個所を予め容易に特定することが可能となるため、状態遷移プログラムを容易に、かつ、迅速に進めることが可能となる。
【０２１３】
本発明によれば、各状態におけるイベントを入力するタイミングや順序などをイベントリストとして記憶させることで、高い再現性を実現して上述したようなバグの発生の有無を正しく検証することが可能になると共に、発生させること自体が困難なイベントをも編集により容易に実現させるようにし、正確なバグ除去を実現できるようにすることで、UIプログラムの開発効率を向上させることが可能となる。
【０２１４】
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０２１５】
図２９は、図１の状態遷移プログラム編集装置１の電気的な内部構成をソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのCPU５０１は、パーソナルコンピュータの全体の動作を制御する。また、CPU５０１は、バス５０４および入出力インタフェース５０５を介してユーザからキーボードやマウスなどからなる入力部５０６から指令が入力されると、それに対応してROM(Read Only Memory)５０２に格納されているプログラムを実行する。あるいはまた、CPU５０１は、ドライブ５１０に接続された磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリを含むリムーバルメディア５２１から読み出され、記憶部５０８にインストールされたプログラムを、RAM(Random Access Memory)５０３にロードして実行する。これにより、上述した図１の状態遷移プログラム編集装置１の機能が、ソフトウェアにより実現されている。さらに、CPU５０１は、通信部５０９を制御して、外部と通信し、データの授受を実行する。
【０２１６】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図２９に示すように、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む）、光磁気ディスクを含む）、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア５２１、または、プログラムが一時的もしくは永続的に格納されるROM５０２や、記憶部５０８を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部５０９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【０２１７】
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２１８】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０２１９】
【図１】本発明を適用した状態遷移プログラム編集装置の一実施の形態の構成を示す図である。
【図２】表示画面の構成例を示す図である。
【図３】ステートデータ格納部に格納されるステート情報のデータ構造を示す図である。
【図４】図１の状態遷移プログラム編集装置による状態遷移プログラム編集処理を説明するフローチャートである。
【図５】図１の状態遷移プログラム編集装置によるステート編集処理を説明するフローチャートである。
【図６】図１の状態遷移プログラム編集装置によるトランジション編集処理を説明するフローチャートである。
【図７】図１の状態遷移プログラム編集装置によるスクリプト編集処理を説明するフローチャートである。
【図８】図１の状態遷移プログラム編集装置による状態遷移プログラム実行処理を説明するフローチャートである。
【図９】図１の状態遷移プログラム編集装置による状態遷移図生成処理を説明するフローチャートである。
【図１０】図１の状態遷移プログラム編集装置による表示処理を説明するフローチャートである。
【図１１】表示処理により表示される表示例を示す図である。
【図１２】表示処理により表示される表示例を示す図である。
【図１３】図１の状態遷移プログラム編集装置によるイベントリスト生成処理を説明するフローチャートである。
【図１４】図１の状態遷移プログラム編集装置によるイベントリスト生成処理を説明する図である。
【図１５】図１の状態遷移プログラム編集装置によるイベントリスト編集処理を説明するフローチャートである。
【図１６】図１の状態遷移プログラム編集装置によるイベントリスト編集処理を説明する図である。
【図１７】図１の状態遷移プログラム編集装置によるイベントリスト変換処理を説明するフローチャートである。
【図１８】図１の状態遷移プログラム編集装置によるイベントリスト変換処理を説明する図である。
【図１９】図１の状態遷移プログラム編集装置によるイベントリスト再生処理を説明するフローチャートである。
【図２０】図１の状態遷移プログラム編集装置によるイベントリスト再生処理を説明する図である。
【図２１】図１の状態遷移プログラム編集装置によるイベントリスト再生処理を説明する図である。
【図２２】図１の状態遷移プログラム編集装置によるイベントリスト早送り再生処理を説明するフローチャートである。
【図２３】図１の状態遷移プログラム編集装置によるイベントリスト早送り再生処理を説明する図である。
【図２４】図１の状態遷移プログラム編集装置によるイベントリスト巻き戻し再生処理を説明するフローチャートである。
【図２５】図１の状態遷移プログラム編集装置によるイベントリスト巻き戻し再生処理を説明する図である。
【図２６】図１の状態遷移プログラム編集装置によるイベントリスト巻き戻し再生処理を説明する図である。
【図２７】図１の状態遷移プログラム編集装置によるイベントリストテスト再生処理を説明するフローチャートである。
【図２８】図１の状態遷移プログラム編集装置によるイベントリストテスト再生処理を説明する図である。
【図２９】媒体を説明する図である。
【符号の説明】
【０２２０】
１１  操作部，  １２  編集部，  １３  ステートデータ格納部，  １４  状態遷移図生成部，  １５  状態遷移エンジン，  １６  状態動作実行部，  １７  表示制御部，  １８  表示部，  １９  イベント検出部，  ２０  イベント編集部，  ２１  イベント記録部，  ２１ａ  RTC，  ２１ｂ  変換部，  ２２  イベントコントローラ，  ２２ａ  RTC，  ２３  イベント記憶部，  ２３ａ，２３ａ−１乃至２３ａ−ｎ  イベントリスト，  ２４  状態読出部，  ２５  テスト結果比較部，  ３１  ステート編集部，  ３２  トランジション編集部，  ３３  スクリプト編集部，  ４１  ステート枠生成部，  ４２  トランジション生成部，  ５１  状態遷移図表示制御部，  ５２  状態動作表示制御部，  ５３  イベントリスト表示制御部，  ５４  テスト結果表示制御部，  ５５  再生コントローラ表示制御部
【図１】
2007122253.tif 000003
【図２】
2007122253.tif 000004
【図３】
2007122253.tif 000005
【図４】
2007122253.tif 000006
【図５】
2007122253.tif 000007
【図６】
2007122253.tif 000008
【図７】
2007122253.tif 000009
【図８】
2007122253.tif 000010
【図９】
2007122253.tif 000011
【図１０】
2007122253.tif 000012
【図１１】
2007122253.tif 000013
【図１２】
2007122253.tif 000014
【図１３】
2007122253.tif 000015
【図１４】
2007122253.tif 000016
【図１５】
2007122253.tif 000017
【図１６】
2007122253.tif 000018
【図１７】
2007122253.tif 000019
【図１８】
2007122253.tif 000020
【図１９】
2007122253.tif 000021
【図２０】
2007122253.tif 000022
【図２１】
2007122253.tif 000023
【図２２】
2007122253.tif 000024
【図２３】
2007122253.tif 000025
【図２４】
2007122253.tif 000026
【図２５】
2007122253.tif 000027
【図２６】
2007122253.tif 000028
【図２７】
2007122253.tif 000029
【図２８】
2007122253.tif 000030
【図２９】
2007122253.tif 000031