(57)【要約】【課題】  ソフトウェアイベントを、ハードウェアイベントと同一の感覚で使用できるようにする。【解決手段】  編集部１２は、少なくとも２以上の状態、それぞれの状態における動作、それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成し、ステートデータ格納部１３に格納する。未割付ハードウェアイベント検索部４５は、ステートデータ格納部１３にアクセスし、イベントとして割り付けられていないハードウェアイベントを検索する。ショートカットイベント割付部４４は、イベントがソフトウェアイベントである場合、検索されたハードウェアイベントをショートカットイベントとして割り付ける。本発明はステートマシンに適用させることができる。【選択図】      図１
2007079954.tif 000002
【特許請求の範囲】
【請求項１】
それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置の情報処理方法において、
前記イベントとして割り付けられていないハードウェアイベントを検索する検索ステップと、
前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付ステップと、
前記状態遷移情報に基づいて、前記状態遷移図を生成する生成ステップと、
前記状態遷移図を表示する表示ステップと
を含む情報処理方法。
【請求項２】
前記割付ステップの処理は、前記イベントがソフトウェアイベントである場合、予め前記ソフトウェアイベントと前記ハードウェアイベントの組み合わせからなるテーブルに基づいて、前記テーブルの組み合わせを優先して、前記検索手段により検索されたハードウェアイベントをショートカットイベントとして割り付ける
請求項１に記載の情報処理方法。
【請求項３】
前記割付ステップの処理は、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントのうちキーボードのキーを優先的にショートカットイベントとして割り付ける
請求項１に記載の情報処理方法。
【請求項４】
前記割付ステップの処理は、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントのうちキーボードのキーであって、既にハードウェアイベントに割り付けられたキーの近傍のキーを優先的にショートカットイベントとして割り付ける
請求項３に記載の情報処理方法。
【請求項５】
前記割付ステップの処理は、前記イベントがソフトウェアイベントである場合、前記検索手段により検索されたハードウェアイベントのうちキーボードのキーであって、既にハードウェアイベントに割り付けられたキーから離れたキーを優先的にショートカットイベントとして割り付ける
請求項１に記載の情報処理方法。
【請求項６】
前記表示ステップの処理は、前記トランジションのうち、前記割付ステップの処理によりショートカットイベントが割り付けられているトランジションについては、前記ショートカットイベントを他のイベントと異なる表示方法で表示する
請求項１に記載の情報処理方法。
【請求項７】
それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置において、
前記イベントとして割り付けられていないハードウェアイベントを検索する検索手段と、
前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付手段と、
前記状態遷移情報に基づいて、前記状態遷移図を生成する生成手段と、
前記状態遷移図を表示する表示手段と
を含む情報処理装置。
【請求項８】
それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置を制御するコンピュータが読取可能なプログラムが記録された記録媒体であって、
前記イベントとして割り付けられていないハードウェアイベントを検索する検索ステップと、
前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付ステップと、
前記状態遷移情報に基づいて、前記状態遷移図を生成する生成ステップと、
前記状態遷移図を表示する表示ステップと
を含むコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項９】
それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置を制御させるコンピュータに、
前記イベントとして割り付けられていないハードウェアイベントを検索する検索ステップと、
前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付ステップと、
前記状態遷移情報に基づいて、前記状態遷移図を生成する生成ステップと、
前記状態遷移図を表示する表示ステップと
を含む処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理方法および装置、記録媒体、並びにプログラムに関し、特に、ハードウェアイベントに割り付けるのが困難なソフトウェアイベントを、ハードウェアイベントと同一の感覚で使用できるようにした情報処理方法および装置、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
アプリケーションソフトウェアプログラムの開発を支援する開発ツールが一般に普及しつつある。例えば、オブジェクト指向型のプログラムの開発を支援するものがある（例えば、特許文献１参照）。
【０００３】
また、UML（Unified Modeling Language）に代表される状態遷移図を用いたアプリケーションソフトウェアプログラムのUI（User Interface）の開発ツールも提案されている。
【０００４】
状態遷移図は、各状態毎に実行されるべき動作が論理的に記述されるとともに、各状態において発生する所定のイベントにより他の状態に遷移する方向が示された図である。上述したアプリケーションソフトウェアプログラムのUIの開発ツールは、プログラムを状態遷移図として表示させると共に、その表示された状態遷移図そのものが操作されると、状態遷移図の操作内容をプログラムに反映させることで、プログラムを編集するものである。
【０００５】
【特許文献１】特開平６−１１０７６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上述した各状態におけるイベントは、例えば、「Ａ」に対応するキーが入力されるというハードウェアを用いたイベント（以下、ハードウェアイベントとも称するものとする）がある。イベントは、キー入力などのハードウェアで代用できるものばかりではなく、例えば、電源を入れるというイベントや、メールが着信するといったイベントなどもある。このような場合、ハードウェアには直接割り付けることができないため、ソフトウェアにより擬似的に同種の状態を発生させて、イベントとすることもある（以下、このようなイベントをソフトウェアイベントと称するものとする）。
【０００７】
これまで、ハードウェアイベントとして割り付けることが困難なソフトウェアイベントについては、別ウィンドウにまとめて表示し、ハードウェアイベントとは別に操作させるものがあった。しかしながら、このようにすると、ソフトウェアイベントについては、操作するたびに視線を別ウィンドウに移してから操作する必要があり、操作性を低下させる原因となっていた。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、特に、ハードウェアイベントに割り付けるのが困難なソフトウェアイベントを、ハードウェアイベントと同一の感覚で使用できるようにするものである。
【課題を解決するための手段】
【０００９】
本発明の第１の側面の情報処理方法は、それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置の情報処理方法であって、前記イベントとして割り付けられていないハードウェアイベントを検索する検索ステップと、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付ステップと、前記状態遷移情報に基づいて、前記状態遷移図を生成する生成ステップと、前記状態遷移図を表示する表示ステップとを含む。
【００１０】
前記割付ステップの処理には、前記イベントがソフトウェアイベントである場合、予め前記ソフトウェアイベントと前記ハードウェアイベントの組み合わせからなるテーブルに基づいて、前記テーブルの組み合わせを優先して、前記検索手段により検索されたハードウェアイベントをショートカットイベントとして割り付けるようにさせることができる。
【００１１】
前記割付ステップの処理には、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントのうちキーボードのキーを優先的にショートカットイベントとして割り付けるようにさせることができる。
【００１２】
前記割付ステップの処理には、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントのうちキーボードのキーであって、既にハードウェアイベントに割り付けられたキーの近傍のキーを優先的にショートカットイベントとして割り付けるようにさせることができる。
【００１３】
前記割付ステップの処理には、前記イベントがソフトウェアイベントである場合、前記検索手段により検索されたハードウェアイベントのうちキーボードのキーであって、既にハードウェアイベントに割り付けられたキーから離れたキーを優先的にショートカットイベントとして割り付けるようにさせることができる。
【００１４】
前記表示ステップの処理には、前記トランジションのうち、前記割付ステップの処理によりショートカットイベントが割り付けられているトランジションについては、前記ショートカットイベントを他のイベントと異なる表示方法で表示させるようにすることができる。
【００１５】
本発明の一側面の情報処理装置は、それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置であって、前記イベントとして割り付けられていないハードウェアイベントを検索する検索手段と、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付手段と、前記状態遷移情報に基づいて、前記状態遷移図を生成する生成手段と、前記状態遷移図を表示する表示手段とを含む。
【００１６】
本発明の一側面の記録媒体のプログラムは、それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置を制御するコンピュータが読取可能なプログラムが記録された記録媒体のプログラムであって、前記イベントとして割り付けられていないハードウェアイベントを検索する検索ステップと、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付ステップと、前記状態遷移情報に基づいて、前記状態遷移図を生成する生成ステップと、前記状態遷移図を表示する表示ステップとを含む。
【００１７】
本発明の一側面のプログラムは、それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置を制御するコンピュータに、前記イベントとして割り付けられていないハードウェアイベントを検索する検索ステップと、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付ステップと、前記状態遷移情報に基づいて、前記状態遷移図を生成する生成ステップと、前記状態遷移図を表示する表示ステップとを含む処理を実行させる。
【００１８】
本発明の第１の側面の情報処理方法、および装置、並びにプログラムにおいては、それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置の情報処理方法であって、前記イベントとして割り付けられていないハードウェアイベントが検索され、前記イベントがソフトウェアイベントである場合、検索されたハードウェアイベントがショートカットイベントとして割り付けられ、前記状態遷移情報に基づいて、前記状態遷移図が生成され、前記状態遷移図が表示される。
【００１９】
情報処理装置は、独立した装置であっても良いし、情報処理装置の情報処理を行うブロックであっても良い。
【発明の効果】
【００２０】
以上のように、本発明の一側面によれば、ハードウェアイベントに割り付けるのが困難なソフトウェアイベントを、ハードウェアイベントと同一の感覚で使用することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２２】
本発明の第１の側面の情報処理方法およびプログラムは、それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置の情報処理方法であって、前記イベントとして割り付けられていないハードウェアイベントを検索する検索ステップ（例えば、図８のステップＳ６９の処理）と、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付ステップ（例えば、図８のステップＳ７０の処理）と、前記状態遷移情報に基づいて、前記状態遷移図を生成する生成ステップ（例えば、図１２のステップＳ１２６の処理）と、前記状態遷移図を表示する表示ステップ（例えば、図１３のステップＳ１４１の処理）とを含む。
【００２３】
前記割付ステップの処理（例えば、図８のステップＳ７０の処理）には、前記イベントがソフトウェアイベントである場合、予め前記ソフトウェアイベントと前記ハードウェアイベントの組み合わせからなるテーブルに基づいて、前記テーブルの組み合わせを優先して、前記検索手段により検索されたハードウェアイベントをショートカットイベントとして割り付けるようにさせることができる。
【００２４】
前記割付ステップの処理（例えば、図８のステップＳ７０の処理）には、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントのうちキーボードのキーを優先的にショートカットイベントとして割り付けるようにさせることができる。
【００２５】
前記割付ステップの処理（例えば、図８のステップＳ７０の処理）には、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントのうちキーボードのキーであって、既にハードウェアイベントに割り付けられたキーの近傍のキーを優先的にショートカットイベントとして割り付けるようにさせることができる。
【００２６】
前記割付ステップの処理（例えば、図８のステップＳ７０の処理）には、前記イベントがソフトウェアイベントである場合、前記検索手段により検索されたハードウェアイベントのうちキーボードのキーであって、既にハードウェアイベントに割り付けられたキーから離れたキーを優先的にショートカットイベントとして割り付けるようにさせることができる。
【００２７】
前記表示ステップの処理（例えば、図１３のステップＳ１４１の処理）には、前記トランジションのうち、前記割付ステップの処理によりショートカットイベントが割り付けられているトランジションについては、前記ショートカットイベントを他のイベントと異なる表示方法で表示させるようにすることができる。
【００２８】
本発明の一側面の情報処理装置は、それぞれの状態における動作、それぞれの前記状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移図を構成可能な状態遷移情報を編集する情報処理装置であって、前記イベントとして割り付けられていないハードウェアイベントを検索する検索手段（例えば、図１の未割付ハードウェアイベント検索部４５）と、前記イベントがソフトウェアイベントである場合、前記検索ステップの処理により検索されたハードウェアイベントをショートカットイベントとして割り付ける割付手段（例えば、図１のショートカットイベント割付部４４）と、前記状態遷移情報に基づいて、前記状態遷移図を生成する生成手段（例えば、図１の状態遷移図生成部１５）と、前記状態遷移図を表示する表示手段（例えば、図１の表示制御部１７）とを含む。
【００２９】
このように、ソフトウェアイベントに対して、他のイベントに割り付けられていないハードウェアイベントを割り付けるようにすることで、ソフトウェアイベントをハードウェアイベントと同様の感覚で使用することが可能となる。
【００３０】
図１は、本発明を適用した状態遷移プログラム編集装置１の一実施の形態の構成を示す図である。
【００３１】
状態遷移プログラム編集装置１は、アプリケーションソフトウェアプログラムにおけるUIのプログラムの開発を目的とした編集装置であり、各状態における動作、それぞれの状態における遷移時のイベント、および各イベント毎にどの他の状態に遷移するかを示す遷移方向の情報を含む状態遷移情報（ステートデータ）に基づいて、状態遷移図を生成すると共に、生成した状態遷移図を表示する。さらに、状態遷移プログラム編集装置１は、表示した状態遷移図が操作されることにより変更されると、変更された状態遷移図に対応して、状態遷移情報を更新する。
【００３２】
操作部１１は、マウスやキーボードなどから構成されており、状態遷移プログラム編集装置１を操作するユーザによる操作に対応する信号を発生して編集部１２に供給する。
【００３３】
編集部１２は、ステート編集部３１、トランジション編集部３２、およびスクリプト編集部３３より構成されており、操作部１１より供給されてくる信号に基づいて、状態遷移情報（ステートデータ）を編集する。ステートデータは、各状態（ステート）毎に動作を示す情報（スクリプト情報）およびイベントに応じて遷移する状態の遷移先の情報（トランジション情報）が記述されている。
【００３４】
ステート編集部３１は、状態（ステート）の新規生成、および表示位置や大きさなどの情報を編集し、編集結果をステートデータ格納部１３に格納させる。トランジション編集部３２は、各状態における動作が実行されている間に発生するイベントに応じて、遷移する遷移先となる状態の情報を編集し、ステートデータ格納部１３に格納させる。
【００３５】
より詳細には、トランジション編集部３２は、イベント認識部４１、ソフトウェアイベントテーブル４２、ハードウェアイベントテーブル４３、イベント割付部４４、未割付ハードウェアイベント検索部４５、指定割付部４６、および選択リスト生成部４７から構成される。
【００３６】
イベント識別部４１は、設定されたイベントがハードウェアイベントか、または、ソフトウェアイベントであるかを判定し、識別結果に応じてソフトウェアイベントテーブル４２またはハードウェアイベントテーブル４３に格納する。
【００３７】
ショートカットイベント割付部４４は、未割付ハードウェアイベント検索部４５により検索されるイベントとして割り付けられていないハードウェアイベントに、ソフトウェアイベントのショートカットイベントを割り付ける。
【００３８】
指定割付部４６は、同一のソフトウェアイベントに対して複数の異なるハードウェアイベントがショートカットイベントとして設定されるような場合、複数のショートカットイベントを指定された同一のハードウェアイベントに設定する。
【００３９】
選択リスト生成部４７は、指定割付部４６により制御され、複数のショートカットイベントに対して、統一されたショートカットイベントを設定するためのドロップダウンリストを生成する。
【００４０】
スクリプト編集部３３は、各状態における動作内容を編集し、ステートデータ格納部１３に格納させる。
【００４１】
ステートデータ格納部１３は、各状態（ステート）毎に編集部１２によりトランジション情報やスクリプト情報が編集されたステートデータを格納し、必要に応じて状態遷移図生成部１５および状態遷移エンジン１４に供給する。
【００４２】
状態遷移エンジン１４は、ステートデータ格納部１３に格納されているステートデータを読み出すと共に、イベント検出部１９より供給されるイベントの情報に基づいて、今現在のステートを検索し、検索結果である今現在のステートを示す情報を状態遷移図生成部１５および状態動作実行部１６に供給する。
【００４３】
状態遷移図生成部１５は、ステート枠生成部５１、およびトランジション生成部５２から構成されており、ステートデータ格納部１３に格納されているステートデータを読み出し、状態遷移図を生成する。ステート枠生成部５１は、各状態毎に矩形の枠（ステート枠）を生成すると共に、状態遷移エンジン１４より供給される今現在の状態の情報に基づいて、今現在の状態を示すステート枠内の表示色を変化させて表示する。トランジション生成部５２は、各状態における動作中に発生するイベント毎に遷移先を示す矢印を生成する。
【００４４】
状態動作実行部１６は、状態遷移エンジン１４より供給される今現在の状態のステートデータに基づいて、現在の状態の動作を実行し、実行結果を表示制御部１７に供給する。
【００４５】
表示制御部１７は、状態遷移図表示制御部６１、および状態動作表示制御部６２より構成され、表示部１８に表示する表示画面を生成して表示させる。
【００４６】
状態遷移図表示制御部６１は、状態遷移図生成部１５より供給されてくる状態遷移図の情報に基づいて、例えば、図２の状態遷移図表示画面１１１を生成し、表示を制御する。図２においては、状態Ａ（State Ａ：ステートＡ）を示すステート枠１３１、状態Ｂ（State Ｂ：ステートＢ）を示すステート枠１３２、状態Ｃ（State Ｃ：ステートＣ）を示すステート枠１３３、状態Ｄ（State Ｄ：ステートＤ）を示すステート枠１３４、状態E（State E：ステートE）を示すステート枠１３５、状態F（State F：ステートF）を示すステート枠１３６、および状態G（State G：ステートG）を示すステート枠１３７が示されており、それぞれが、トランジション１４１乃至１４６で結ばれている。トランジション１４１乃至１４６は、それぞれ状態間を遷移する方向とイベントを示している。
【００４７】
より詳細には、トランジション１４１は、「KEY_PRESS(0)」と示され、矢印が状態Ａから状態Cに向って表示されており、状態Ａの動作が実行されている場合、操作部１１の「0」のキーが操作されるというイベントが発生すると、状態Ａから状態Cに遷移することを示している。
【００４８】
同様に、トランジション１４２は、「KEY_PRESS(1)」と示され、矢印が状態Ａから状態Ｂに向って表示されており、状態Ａの動作が実行されている場合、操作部１１の「1」のキーが操作されるというイベントが発生すると、状態Ａから状態Ｂに遷移することを示している。
【００４９】
また、トランジション１４３は、「KEY_PRESS(2)」と示され、矢印が状態Ｂから状態Dに向って表示されており、状態Ｂの動作が実行されている場合、操作部１１の「2」のキーが操作されるというイベントが発生すると、状態Ｂから状態Dに遷移することを示している。
【００５０】
さらに、トランジション１４４は、「KEY_PRESS(3) SWITCH_ON」と示され、矢印が状態Ｂから状態Eに向って表示されており、状態Ｂの動作が実行されている場合、SWITCHがONにされるというイベントが発生すると、状態Ｂから状態Eに遷移することを示しており、色付けされて「KEY_PRESS(3)」が表示されることにより、操作部１１の「3」のキーが操作されるというショートカットキーの操作により、SWITCHがONにされるというソフトウェアイベントが発生し、これにより状態Ｂから状態Ｅに遷移することが示されている。
【００５１】
また、トランジション１４５は、「KEY_PRESS(4) NETWORK_EVENT」と示され、矢印が状態Ｂから状態Fに向って表示されており、状態Ｂの動作が実行されている場合、NETWORK_EVENTとして、例えば、メールが受信されるといったイベントが発生すると、状態Ｂから状態Fに遷移することを示しており、色付けされて「KEY_PRESS(4)」が表示されることにより、操作部１１の「4」のキーが操作されるというショートカットキーの操作により、NETWORK_EVENTのソフトウェアイベントが発生し、これにより状態Ｂから状態Fに遷移することが示されている。
【００５２】
さらに、トランジション１４６は、「KEY_PRESS(5) SWITCH_ON」と示され、矢印が状態Eから状態Gに向って表示されており、状態Eの動作が実行されている場合、SWITCHがONにされるというイベントが発生すると、状態Eから状態Gに遷移することを示しており、色付けされて「KEY_PRESS(5)」が表示されることにより、操作部１１の「0」のキーが操作されるというショートカットキーの操作により、SWITCHがONにされるというソフトウェアイベントが発生し、これにより状態Eから状態Gに遷移することが示されている。
【００５３】
図１の説明に戻る。
【００５４】
状態動作表示制御部６２は、状態動作実行部１６より供給される状態動作の実行結果に基づいて、例えば、図２で示されるような状態動作表示画面１１２を生成し、表示を制御する。  
【００５５】
表示部１８は、CRT（Cathode Ray Tube）またはLCD（Liquid Crystal Display）などから構成され、表示制御部１７により生成された画面を表示する。
【００５６】
次に、図３を参照して、ステートデータ格納部１３に格納されるステート情報について説明する。
【００５７】
ステート情報は、例えば、図２の状態遷移図表示画面１１１で示されるような状態遷移図が構成されるような場合、図３で示されるような状態で、状態Ａ乃至Ｇ毎にステートデータ格納部１３に格納されている。図３においては、左上から状態Ａ乃至Ｇの順にステート情報のデータ構造が示されている。
【００５８】
各ステート（状態）には、トランジション情報として、各イベント、イベントがソフトウェアイベントに対応するショートカットイベント、各状態毎の遷移先となる状態の情報が記録される領域が確保されている。また、各状態におけるスクリプトが記録される領域が確保されている。
【００５９】
すなわち、図３の状態Ａ（State A）においては、トランジション情報として、イベント欄には「KEY_PRESS(0)」および「KEY_PRESS(1)」が記録され、対応する遷移先として、それぞれ「State Ｃ」および「State Ｂ」と記録されている。すなわち、このトランジション情報は、図２のトランジション１４１，１４２にそれぞれ対応する情報として記録されており、「0」で示されるキーが操作されるというイベントが発生すると、状態Ｃに遷移し、同様にして、「1」で示されるキーが操作されるというイベントが発生すると、状態Ｂに遷移することが示されている。また、状態Ａの場合、トランジション情報の下には、スクリプト情報として、「スクリプトＡ」（状態Ａにおいて実行される動作の記述）が記録されている。尚、状態Ａのイベントは、いずれもハードウェアイベントであるので、ショートカットイベントは不要なため斜線が引かれている（情報無し）。
【００６０】
さらに、状態Ｂ（State Ｂ）においては、トランジション情報として、イベント欄には「KEY_PRESS(2)」、「SWITCH_ON」、および「NETWORK_EVENT」が記録され、対応する遷移先として、それぞれ「State D」、「State E」、および「State F」と記録されている。すなわち、このトランジション情報は、図２のトランジション１４３乃至１４５にそれぞれ対応する情報として記録されている。さらに、「SWITCH_ON」、および「NETWORK_EVENT」のイベントは、いずれもハードウェアでは直接発生させることができないソフトウェアイベントであるので、ショートカットイベント欄には、「KEY_PRESS(3)」および「KEY_PRESS(4)」のショートカットイベントが設定されている。すなわち、このトランジション情報は、「3」で示されるキーが操作されるというショートカットイベントが発生すると、ソフトウェアイベントである「SWITCH_ON」のイベントが発生して、状態Ｅに遷移し、同様にして、「4」で示されるキーが操作されるというショートカットイベントが発生すると、ソフトウェアイベントである「NETWORK_EVENT」のイベントが発生して、状態Ｆに遷移することが示されている。また、状態Ｂの場合、トランジション情報の下には、スクリプト情報として、「スクリプトＢ」が記録されている。
【００６１】
さらに、状態Ｃ（State Ｃ）においては、トランジション情報がなく、その状態から遷移することがないことが示されている。また、状態Cの場合、トランジション情報の下には、スクリプト情報として、「スクリプトC」が記録されている。
【００６２】
また、状態Ｄ（State Ｄ）においては、トランジション情報がなく、その状態から遷移することがないことが示されている。また、状態Ｄの場合、トランジション情報の下には、スクリプト情報として、「スクリプトＤ」が記録されている。
【００６３】
さらに、状態Ｅ（State Ｅ）においては、トランジション情報として、イベント欄には「SWITCH_ON」が記録され、対応する遷移先として、「State Ｇ」と記録されている。すなわち、このトランジション情報は、図２のトランジション１４６に対応する情報として記録されている。また、「SWITCH_ON」のイベントは、ハードウェアでは直接発生させることができないソフトウェアイベントであるので、ショートカットイベント欄には、「KEY_PRESS(5)」のショートカットイベントが設定されている。すなわち、このトランジション情報は、「5」で示されるキーが操作されるというショートカットイベントが発生すると、ソフトウェアイベントである「SWITCH_ON」のイベントが発生して、状態Ｇに遷移することが示されている。また、状態Ｅの場合、トランジション情報の下には、スクリプト情報として、「スクリプトＥ」が記録されている。
【００６４】
また、状態Ｆ（State Ｆ）においては、トランジション情報がなく、その状態から遷移することがないことが示されている。また、状態Ｆの場合、トランジション情報の下には、スクリプト情報として、「スクリプトＦ」が記録されている。
【００６５】
さらに、状態Ｇ（State Ｇ）においては、トランジション情報がなく、その状態から遷移することがないことが示されている。また、状態Ｇの場合、トランジション情報の下には、スクリプト情報として、「スクリプトＧ」が記録されている。
【００６６】
次に、図４のフローチャートを参照して、編集部１２による状態遷移プログラム編集処理について説明する。
【００６７】
ステップＳ１において、ステート編集部３１は、操作部１１より供給されてくる信号に基づいて、ステート編集が指示されたか否かを判定する。ステップＳ１において、例えば、ステート編集処理が指示されたと判定された場合、ステップＳ２において、ステート編集部３１は、ステート編集処理を実行し、その処理は、元に戻る。尚、ステート編集処理については、図５を参照して後述する。
【００６８】
ステップＳ１において、例えば、ステート編集処理が指示されていないと判定された場合、ステップＳ３において、トランジション編集部３２は、操作部１１より供給されてくる信号に基づいて、トランジション編集が指示されたか否かを判定する。ステップＳ３において、例えば、トランジション編集処理が指示されたと判定された場合、ステップＳ４において、トランジション編集部３２は、トランジション編集処理を実行し、その処理は、元に戻る。尚、トランジション編集処理については、図６を参照して後述する。
【００６９】
ステップＳ３において、例えば、トランジション編集処理が指示されていないと判定された場合、ステップＳ５において、スクリプト編集部３３は、操作部１１より供給されてくる信号に基づいて、スクリプト編集が指示されたか否かを判定する。ステップＳ５において、例えば、スクリプト編集処理が指示されたと判定された場合、ステップＳ６において、スクリプト編集部３３は、スクリプト編集処理を実行し、その処理は、元に戻る。尚、スクリプト編集処理については、図７を参照して後述する。
【００７０】
以上の処理により、ステートデータが更新されることになるので、対応する状態遷移プログラムが更新される。
【００７１】
次に、図５のフローチャートを参照して、ステート編集処理について説明する。
【００７２】
ステップＳ２１において、ステート編集部３１は、操作部１１からの信号に基づいて、新規のステート（状態）を生成する処理であるか否かを判定する。例えば、図２の表示画面１０１上の図示せぬボタンが操作され、新規のステートを生成する処理が指示された場合、ステップＳ２２において、ステート編集部３１は、新規のステートを生成する。すなわち、ステート編集部３１は、新たな状態に対応するステート情報をステートデータ格納部１３に記録する。
【００７３】
ステップＳ２３において、ステート編集部３１は、新規に生成されたステートを編集対象ステートに設定する。
【００７４】
ステップＳ２４において、ステート編集部３１は、編集対象ステートのステート情報に更新があるか否かを判定する。ここで更新の有無が判定されるのは、ステート情報のうちステート名や対応するステート枠の表示位置などの情報である。すなわち、ステート編集部３１が編集するのは、ステート情報のうち、ステート名およびステート枠の表示位置の情報である。
【００７５】
ステップＳ２４において、ステート情報のうち、ステート名およびステート枠の表示位置の情報に更新があると判定された場合、ステップＳ２５において、ステート編集部３１は、更新された、ステート名およびステート枠の表示位置の情報を編集対象ステートのステート情報に反映させて更新する。
【００７６】
一方、ステップＳ２４において、更新がないと判定された場合、ステップＳ２５の処理は、スキップされる。
【００７７】
ステップＳ２６において、ステート編集処理の終了が指示されたか否かを判定し、終了が指示されない場合、その処理は、ステップＳ２４に戻り、終了が指示されたと判定された場合、ステート編集処理は終了する。
【００７８】
また、ステップＳ２１において、新規のステートの生成ではないと判定された場合、ステップＳ２７において、既存のステートが選択されたか否かが判定される。すなわち、図１３を参照して後述する表示処理により表示される、例えば、図２で示されるような状態遷移図表示画面１１１上に表示された既存のステート枠１３１乃至１３７のいずれかが図辞せぬポインタが操作部１１１により操作されて選択されたか否かにより、対応するステートＡ乃至Ｇのステートデータ格納部１３により格納されているステート情報のいずれかが選択されたか否かが判定される。例えば、既存のステートのステート情報が選択された場合、ステップＳ２８において、ステート編集部３１は、選択されたステートを編集対象ステートに設定し、その処理は、ステップＳ２４に進む。
【００７９】
一方、ステップＳ２７において、既存のステートが選択されたと判定されなかった場合、その処理は、ステップＳ２１に戻り、それ以降の処理が繰り返される。
【００８０】
すなわち、以上の処理により、新規のステート、または、既存のステートの何れかのステート情報について、ステート名およびステート枠の表示位置が、新たに設定されるか、または、更新されることになる。
【００８１】
次に、図６のフローチャートを参照して、トランジション編集処理について説明する。
【００８２】
ステップＳ４１において、トランジション編集部３２は、既存のステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。すなわち、図１３を参照して後述する表示処理により表示される、例えば、図２で示されるような状態遷移図表示画面１１１上に表示された既存のステート枠１３１乃至１３７のいずれかが図示せぬポインタが操作部１１１により操作されて選択されたか否かにより、対応するステートＡ乃至Ｇのステートデータ格納部１３により格納されているステート情報のいずれかが選択されたか否かが判定される。そして、ステップＳ４１において、例えば、既存のステートのステート情報が選択された場合、ステップＳ４２において、トランジション編集部３２は、選択されたステートを編集対象ステートに設定し、その処理は、ステップＳ４３に進む。
【００８３】
ステップＳ４３において、トランジション編集部３２は、編集対象ステートのステート情報のうち、遷移先が指定されたか否かを判定する。すなわち、例えば、図２の状態遷移図表示画面１１１で示されるように、ステート枠１３１乃至１３７で示される状態Ａ乃至Ｇのうち、例えば、状態Ａが選択され、編集対象ステートに設定された場合、操作部１１１により図示せぬポインタをドラッグして状態Ａのステート枠１３１を基点として、例えば、状態Ｃのステート枠１３３を終点とするトランジション１４１で示されるような矢印を引いた場合、遷移先が状態Ｃに設定されることになる。
【００８４】
そこで、ステップＳ４３においては、トランジション編集部３２は、このようにトランジションの矢印が編集対象ステートの状態を示すステート枠から遷移先を示す状態のステート枠までの矢印が引かれたか否かにより、遷移先が設定されたか否かを判定する。
【００８５】
ステップＳ４３において、遷移先が設定されたと判定された場合、ステップＳ４４において、トランジション編集部３２は、イベントを指定するように要求する。より具体的には、すなわち、例えば、遷移先を指定する処理として、図２のトランジション１４１が図示せぬポインタにより引かれた場合、トランジション編集部３２は、トランジションの横にイベントを指定する図示せぬ空欄を表示し、入力を促す。
【００８６】
ステップＳ４５において、トランジション編集部３２は、遷移する際のイベントが指定されたか否かを判定し、指定されたと判定されるまで、その処理を繰り返す。すなわち、トランジション編集部３２は、その空欄にイベントを指定する情報が入力されたか否かを判定し、イベントが指定されたか否かを判定する。
【００８７】
ステップＳ４５において、イベントが指定されたと判定された場合、ステップＳ４６において、トランジション編集部３２は、ステートデータ格納部１３にアクセスし、編集対象ステートのステート情報を読み出し、指定された遷移先とイベントの情報を反映させて更新する。すなわち、例えば、図２のトランジション１４１の場合、遷移先として「State Ｃ」が指定され、イベントとして、「KEY_PRESS(0)」が指定されるので、図３で示されるように、遷移先とイベントに「State Ｃ」、および、「KEY_PRESS(0)」を追加して更新する。
【００８８】
ステップＳ４３において、遷移先が指定されていない場合、ステップＳ４４乃至Ｓ４６の処理がスキップされ、ステップＳ４７において、トランジション編集処理の終了が指示されたか否かを判定し、終了が指示されない場合、処理は、ステップＳ４３に戻る。すなわち、トランジション編集処理の終了が指示されるまで、ステップＳ４３乃至Ｓ４７の処理が繰り返される。
【００８９】
以上の処理により、図２の状態遷移図表示画面１１１で示されるような状態遷移図については、図７で示されるように、ショートカットイベントが設定されていない状態で、イベントのみが設定された状態となる。尚、各状態におけるイベントについては、図３の状態遷移情報と同様であるので、その説明は省略する。
【００９０】
ステップＳ４７において、トランジション編集処理の終了が指示された場合、ステップＳ４８において、ショートカットイベント割付処理が実行される。
【００９１】
ここで、図８のフローチャートを参照して、ショートカットイベント割付処理について説明する。
【００９２】
ステップＳ６１において、トランジション編集部３２は、ソフトウェアイベントテーブル４２およびハードウェアイベントテーブル４３に記憶されている内容を消去して初期化する。
【００９３】
ステップＳ６２において、イベント識別部４１は、ステートデータ格納部１３に格納されているステートデータの全トランジション情報から未処理のイベントのうち、１のイベントを読み出す。例えば、図７で示されるようなステートデータがステートデータ格納部１３に格納されている場合、イベント識別部４１は、例えば、全ステートデータのうち未処理のイベントとして「KEY_PRESS(0)」を読み出す。
【００９４】
ステップＳ６３において、イベント識別部４１は、読み出したイベントがハードウェアイベントであるか否かを判定する。今の場合、イベントして「KEY_PRESS(0)」が読み出されているので、イベント識別部４１は、ハードウェアイベントであると判定し、ステップＳ６４において、ハードウェアイベントテーブル４３に登録する。すなわち、今の場合、読み出されているイベントは、「KEY_PRESS(0)」であるので、「KEY_PRESS(0)」が、ハードウェアイベントテーブル４３に登録される。
【００９５】
ステップＳ６６において、イベント識別部４１は、未処理のイベントがあるか否かを判定し、未処理のイベントがあると判定した場合、その処理は、ステップＳ６２に戻る。一方、例えば、ステップＳ６２において、未処理のイベントとして「SWITCH_ON」が選択された場合、ステップＳ６３においては、イベント識別部４１が、ソフトウェアイベントであると判定することになるので、ステップＳ６５において、ソフトウェアイベントテーブル４２に登録する。すなわち、今の場合、読み出されているイベントは、「SWITCH_ON」であるので、「SWITCH_ON」が、ソフトウェアイベントテーブル４２に登録される。
【００９６】
すなわち、ステップＳ６２乃至Ｓ６６の処理が繰り返されることにより、ステートデータ格納部１３に格納されている全てのイベントが、ソフトウェアイベントテーブル４２またはハードウェアイベントテーブル４３のいずれかに分類されるまで繰り返される。
【００９７】
ステップＳ６６において、未処理のイベントがないと判定された場合、ステップＳ６７において、ショートカットイベント割付部４４は、ソフトウェアイベントテーブル４２にアクセスし、イベント数が１以下であるか否かを判定する。ステートデータ格納部１３に格納されているステートデータが、図７の場合、ソフトウェアイベントテーブル４２には３個のイベント（状態Ｂの「SWITCH_ON」、および「NETWORK_EVENT」並びに、状態Eの「SWITCH_ON」）であるので、１個以下ではないと判定され、その処理は、ステップＳ６８に進む。
【００９８】
ステップＳ６８において、ショートカットイベント割付部４４は、ソフトウェアイベントテーブル４２にアクセスし、未処理のソフトウェアイベントを１抽出する。ショートカットイベント割付部４４は、例えば、図７における状態Ｂの「SWITCH_ON」をソフトウェアイベントとして抽出する。
【００９９】
ステップＳ６９において、ショートカットイベント割付部４４は、未割付ハードウェアイベント検索部４５を制御して、ハードウェアイベントテーブル４３にアクセスさせ、イベントとして割り付けられていないハードウェアイベントを検索させる。図７においては、キーボードにおいて「0」、「1」、および「2」が操作されるイベントは、既に割り付けられている（状態Ａおよび状態Ｂ）が、例えば、「3」については割り付けられていないので、「3」を検索するものとする。
【０１００】
ステップＳ７０において、ショートカットイベント割付部４４は、未割付ハードウェアイベント４５により検索された「3」を、状態Ｂの「SWITCH_ON」に割り付ける。より具体的には、ショートカットイベント割付部４４は、図９で示されるような、記述を生成することによりショートカットイベントを割り付ける。すなわち、図９においては、第１行目の<events>および第６行目の</events>の記述により、第１行目乃至第６行目の記述がショートカットイベントを記述する内容であることを示している。第２行目の<mapping>および第５行目</mapping>の記述により第２行目乃至第５行目の記述がソフトウェアイベントのハードウェアイベントによる置き換えであることが記述されている。さらに、第３行目の<software event>SWITCH_ON</software>とする記述は、対象となるソフトウェアイベントが「SWITCH_ON」（電源を入れる）というイベントであることを示している。また、第４行目の<hardware event>KEY_PRESS(3)<hardware>の記述は、置き換えられるショートカットイベントが「KEY_PRESS(3)」（「3」というキーが操作されるイベント）に置き換えられることが示されている。
【０１０１】
このような処理により、例えば、図３で示される状態Ｂのようにイベント「SWITCH_ON」に対応するショートカットイベントとして「KEY_PRESS(3)」が割り当てられる。
【０１０２】
ステップＳ７１において、ショートカットイベント割付部４４は、未処理のソフトウェアイベントが、ソフトウェアイベントテーブル４２に存在するか否かを判定し、未処理のソフトウェアイベントが存在する場合、その処理は、ステップＳ６８に戻る。すなわち、全てのソフトウェアイベントに対してハードウェアイベントが割り付けられるまでステップＳ６８乃至Ｓ７１の処理が繰り返される。そして、未処理のソフトウェアイベントがないと判定された場合、すなわち、全てのソフトウェアイベントにハードウェアイベントが割り付けられた場合、その処理は、終了する。
【０１０３】
一方、ステップＳ６７において、ソフトウェアイベントが１以下であると判定された場合、ステップＳ７２において、ショートカットイベント割付部４４は、ソフトウェアイベントが１であるか否かを判定する。例えば、１であると判定された場合、ステップＳ７３において、ショートカットイベント割付部４４は、所定のハードウェアイベントを抽出したソフトウェアイベントに割り付ける。すなわち、ハードウェアイベントが１個であるような場合、最も使いやすい所定のハードウェアイベントを設定しておき、唯一のソフトウェアイベントに対して割り付ける。すなわち、最も使い易いハードウェアイベントとしては、例えば、スペースキーなどであり、操作そのものが容易なハードウェアイベントを割り付ける。
【０１０４】
ステップＳ７２において、ソフトウェアイベントが１ではないと判定された場合、すなわち、ソフトウェアイベントが存在しないと判定された場合、その処理は、終了する。
【０１０５】
以上の処理により、ポインタを操作部１１１により操作し、編集対象ステートのステート枠から遷移先のステート枠に矢印を引くだけで、トランジションの情報を編集することが可能となる。また、ソフトウェアイベントに対して、個別に異なるハードウェアイベントがショートカットイベントとして割り付けられることになるので、ソフトウェアイベントについてもハードウェアイベントと同様に処理することが可能となる。
【０１０６】
尚、ステップＳ７０の処理において、未割付ハードウェアイベント４５により検索されたハードウェアイベントを割り付ける際、予めソフトウェアイベントとハードウェアイベントとの対応を優先させる組み合わせのテーブルを設定しておき、このテーブルの組み合わせを優先的に割り付けるようにしてもよい。また、本実施例のようにキーボードのキーによるイベントを優先的に割り付けるようにしてもよく、例えば、すばやく操作できるように、既に割り付けられているハードウェアイベントの情報に基づいて、キーボードの配置上の近傍のキーを優先的に割り付けるようにしてもよい。逆に、キーボード上での操作ミスを低減させるために、既に割り付けられているハードウェアイベントの情報に基づいて、キーボードの配置上の離れた位置のキーを優先的に割り付けるようにしてもよい。さらに、これらの割り付けの優先度を設定により切り替えられるようにしてもよい。
【０１０７】
次に、図１０のフローチャートを参照して、スクリプト編集処理について説明する。
【０１０８】
ステップＳ９１において、スクリプト編集部３３は、既存のステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。すなわち、図１３を参照して後述する表示処理により表示される、例えば、図２で示されるような状態遷移図表示画面１１１上に表示された既存のステート枠１３１乃至１３７のいずれかが図示せぬポインタが操作部１１１により操作されて選択されたか否かにより、対応するステートＡ乃至Ｇのステートデータ格納部１３により格納されているステート情報のいずれかが選択されたか否かが判定される。そして、ステップＳ９１において、例えば、既存のステートのステート情報が選択された場合、ステップＳ９２において、スクリプト編集部３３は、選択されたステートを編集対象ステートに設定し、その処理は、ステップＳ９３に進む。
【０１０９】
ステップＳ９３において、スクリプト編集部３３は、スクリプトが更新されたか否かを判定する。より詳細には、図示せぬポインタが操作部１１１により操作され、操作部１１１のキーボードによりスクリプト情報の記述内容が更新されたか否かを判定する。
【０１１０】
ステップＳ９３において、例えば、スクリプト情報が更新されたと判定された場合、ステップＳ９４において、スクリプト編集部３３は、ステートデータ１３にアクセスし、編集対象ステートのステート情報を読み出し、編集された情報に基づいて、スクリプトを変更して、ステート情報を更新する。
【０１１１】
ステップＳ９５において、スクリプト編集部３３は、スクリプト編集処理の終了が指示されたか否かを判定し、終了が指示されていない場合、その処理は、ステップＳ９１に戻る。また、ステート編集処理の終了が指示された場合、その処理は、終了する。
【０１１２】
以上の処理により、スクリプト情報が編集される。
【０１１３】
次に、図１１のフローチャートを参照して、状態遷移プログラム実行処理について説明する。
【０１１４】
ステップＳ１０１において、状態遷移エンジン１４は、操作部１１より送信されてくる操作信号に基づいて、状態遷移図表示画面１１１上のいずれかのステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。より詳細には、状態遷移エンジン１４は、操作部１１より供給されてくる信号に基づいて、例えば、図２の状態遷移図表示画面１１１上のステート枠１３１乃至１３７のいずれかが、図示せぬポインタにより選択されたか否かを判定し、いずれかのステートが選択されるまで、その処理を繰り返す。
【０１１５】
ステップＳ１０１において、例えば、いずれかのステートが選択された場合、ステップＳ１０２において、状態遷移エンジン１４は、選択されたステートをカレントステートとして設定する。すなわち、状態遷移エンジン１４は、操作部１１からの信号に基づいて、例えば、図２の状態遷移図表示画面１１１上のステート枠１３１乃至１３７のうち、図示せぬポインタにより選択されたステート枠に対応するステートをカレントステートに設定する。
【０１１６】
ステップＳ１０３において、状態遷移エンジン１４は、ステートデータ格納部１３にアクセスし、カレントステートのステート情報を読み出し、状態動作実行部１６に供給する。
【０１１７】
ステップＳ１０４において、状態動作実行部１６は、供給されたカレントステートのステート情報を解釈する。すなわち、状態動作実行部１６は、供給されたカレントステートのステート情報のうち、特に、スクリプト情報を読み出して、その状態における動作を認識する。
【０１１８】
ステップＳ１０５において、状態動作実行部１６は、スクリプト情報に記述されている処理を実行する。
【０１１９】
ステップＳ１０６において、状態動作実行部１６は、状態遷移処理の終了が指示されたか否かを判定する。すなわち、状態動作実行部１６は、操作部１１からの信号に基づいて、状態遷移処理の終了が指示されたか否かを判定し、終了が指示されていない場合、その処理は、ステップＳ１０７に進む。
【０１２０】
ステップＳ１０７において、状態遷移エンジン１４は、イベントが発生したか否かを判定する。すなわち、状態遷移エンジン１４は、イベント検出部１９により検出されたイベントの情報が供給されてきたか否かを判定し、イベントがない場合、その処理は、ステップＳ１０５に戻り、以降の処理が繰り返される。すなわち、イベントが検出されるまで、ステップＳ１０５乃至Ｓ１０７の処理が繰り返される。一方、ステップＳ１０７において、イベントがあると判定された場合、その処理は、ステップＳ１０８に進む。
【０１２１】
ステップＳ１０８において、状態遷移エンジン１４は、供給されてきたイベントの情報により遷移先が設定されているか否かを判定する。すなわち、ステート情報が、図３で示されるものであって、現在の状態がステートＡであった場合、例えば、イベントとして、操作部１１のキーボードのうち「Ａ」のキーが操作されるというイベントが発生したとしても、遷移先が設定されていないことになる。このため、このような場合、その処理は、ステップＳ１０５に戻る。すなわち、実質的に、イベントの発生がなかったものとして処理される。
【０１２２】
一方、ステップＳ１０８において、遷移先があると判定された場合、すなわち、ステート情報が、図３で示されるものであって、現在の状態がステートＡであった場合、例えば、イベントとして、操作部１１のキーボードのうち「0」のキーが操作されるというイベントが発生すると、遷移先Ｃに設定されている。そこで、ステップＳ１０９において、状態遷移エンジン１４は、遷移先のステートをカレントステートに設定し、その処理は、ステップＳ１０３に戻り、それ以降の処理が繰り返される。すなわち、この処理により、新たな遷移先となるステートＣをカレントステートに設定し、ステップＳ１０３以降の処理が繰り返される。
【０１２３】
以上の処理により、状態遷移エンジン１４が、イベント検出部１９より供給されてくるイベントの情報により状態遷移図に従って状態を変化させると共に、対応する状態のステート情報を読み出して、状態動作実行部１６に供給することが可能となる。また、状態動作実行部１６は、ユーザの操作に基づいて設定されている状態を変化させると共に、状態動作実行部１６は、対応する状態においてスクリプトで規定される動作を実行することが可能となる、
【０１２４】
次に、図１２のフローチャートを参照して、状態遷移図生成処理について説明する。
【０１２５】
ステップＳ１２１において、状態遷移図生成部１５は、ステートデータ格納部１３にアクセスし、格納されている全ステートデータを読み出す。
【０１２６】
ステップＳ１２２において、ステート枠生成部５１は、全てのステート情報毎に状態遷移図上のステート枠を生成すると共に、スクリプト情報に基づいて、全スクリプトの記述内容をステート枠内に記述する。
【０１２７】
ステップＳ１２３において、トランジション生成部５２は、ステート情報のうち、イベントと対応する遷移先の情報に基づいて、トランジションを生成する。
【０１２８】
ステップＳ１２４において、トランジション生成部５２は、全ステート情報におけるトランジション情報に基づいて、ショートカットイベントが設定されているトランジションを検索する。
【０１２９】
ステップＳ１２５において、トランジション生成部５２は、検索されたショートカットイベントが設定されているトランジションと共に表示されるイベントの表示を所定の表示に変更する。すなわち、例えば、図２で示されるトランジション１４４で示されるように、ショートカットイベントとして設定されている「KEY_PRESS(3)」の背景表示に配色するなどする。
【０１３０】
ステップＳ１２６において、状態遷移図生成部１５は、ステート枠生成部５１により生成されたステート枠、トランジション生成部５２により生成されたトランジションに基づいて、状態遷移図を構成する情報を生成し、表示制御部１７に供給する。
【０１３１】
以上の処理により、ステートデータ格納部１３に格納されているステート情報に基づいて、状態遷移図が生成され、表示制御部１７に供給することが可能となる。また、ショートカットイベントが設定されているトランジションについては、ショートカットイベントの表示部分の配色を他の部分と変えて表示させるようにすることができるので、ソフトウェアイベントがハードウェアイベントのショートカットイベントとして設定されていることを認識させるようにすることができる。
【０１３２】
次に、図１３のフローチャートを参照して、表示処理について説明する。
【０１３３】
ステップＳ１４１において、状態遷移図表示制御部６１は、状態遷移図生成部１５より供給されてくる状態遷移図の情報に基づいて、状態遷移図表示画面１１１を表示する。
【０１３４】
ステップＳ１４２において、状態動作表示制御部６２は、状態遷移図生成部１５より供給される情報に基づいて、カレントステートが指定されているか否かを判定する。ステップＳ１４２において、例えば、カレントステートが指定されていると判定された場合、ステップＳ１４３において、状態動作表示制御部６２は、カレントステートとして設定されている、状態動作実行部１６により実行されている動作内容に基づいて状態動作表示画面１１２を表示する。
【０１３５】
ステップＳ１４２において、カレントステートが指定されていない場合、ステップＳ１４３の処理は、スキップされる。
【０１３６】
以上の処理により、図２で示されるような、状態遷移図表示画面１１１および状態動作表示画面１１２からなる表示画面１０１が表示部１８に表示される。
【０１３７】
以上、図４の状態遷移プログラム編集処理、図５のステート編集処理、図６のトランジション編集処理、図１０のスクリプト編集処理、図１１の状態遷移プログラム実行処理、図１２の状態遷移図生成処理、図１３の表示処理により、状態遷移図上のイベントがソフトウェアイベントである場合、それぞれに異なるハードウェアイベントのショートカットイベントを割振って、ハードウェアイベントと同様に表示するようにしたので、ソフトウェアイベントをハードウェアイベントと同様に操作することが可能となる。また、ショートカットイベントについては、通常のハードウェアイベントとは異なる表示形式で表示するようにしたので、ショートカットイベントを認識しやすくすることが可能となる。
【０１３８】
以上においては、ソフトウェアイベントが異なるハードウェアイベントにショートカットイベントとして割振られるようにする例について説明してきた。しかしながら、同一のソフトウェアイベントに対して異なるハードウェアイベントがショートカットイベントとして割振られることがある。
【０１３９】
すなわち、ステートデータ格納部１３に格納されるステートデータが、例えば、図３で示されるようなものである場合、状態Ｂにおける「SWITCH_ON」のイベントに対応するショートカットイベントは「KEY_PRESS(3)」であるが、状態Eにおける「SWITCH_ON」のイベントに対応するショートカットイベントは「KEY_PRESS(5)」である。このように、同一のソフトウェアイベントであるのにもかかわらず、異なるショートカットイベントが割振られていると、操作時に誤解を生じる恐れがある。そこで、同一のショートカットイベントが複数に用いられる場合、指定して統一したハードウェアイベントにさせた方がよい。
【０１４０】
そこで、ショートカット指定割付処理により複数のショートカットイベントを同一のハードウェアイベントに指定する。
【０１４１】
ここで、図１４のフローチャートを参照して、ショートカットイベント指定割付処理について説明する。
【０１４２】
ステップＳ１６１において、指定割付部４６は、ステートデータ格納部１３より全てのソフトウェアイベントを抽出する。
【０１４３】
ステップＳ１６２において、指定割付部４６は、ショートカットイベントとして割り付けられているハードウェアイベントを検索する。
【０１４４】
ステップＳ１６３において、指定割付部４６は、選択リスト生成部４７を制御して、抽出されたソフトウェアイベントと、検索されたハードウェアイベントに基づいて、各ソフトウェアイベント毎に、ハードウェアイベントとして選択可能なリストを提示し、選択させる選択画面２０１を表示させる。
【０１４５】
選択画面２０１は、例えば、図１５で示されるように表示される。すなわち、図１５においては、最上段に「イベントに対応付けてください」と表示され、左側にソフトウェアイベント表示欄２１１−１，２１１−２が設けられており、さらにそれぞれのソフトウェアイベント表示欄２１１−１，２１１−２の右側にはハードウェアイベント表示欄２１２−１，２１２−２が設けられている。ハードウェアイベント表示欄２１２−１，２１２−２は、いずれにおいてもリストボタン２１３−１，２１３−２がそれぞれ設けられており、ポインタ２２１により押下されると、ハードウェアイベントの一覧からなるドロップダウンリストが表示される。
【０１４６】
ステップＳ１６４において、指定割付部４６は、いずれかソフトウェアイベントについてハードウェアイベントのリストボタン２１３が押下されたか否かを判定する。例えば、図１５で示されるように、ポインタ２２１が、リストボタン２１３−１の位置で押下されると、ステップＳ１６５において、指定割付部４６は、ドロップダウンリストを表示する。ドロップダウンリストは、今現在割り付けられているハードウェアイベントについては、伏字で選択できないことが示され、割り付けられていない、割り付け可能なハードウェアイベントについては、通常の発色で表示される。図１５においては、斜線部が伏字で表示されていることを示している。すなわち、図３のステートデータによれば、「KEY_PRESS(1)」乃至「KEY_PRESS(5)」については、既に割り付けられているので、伏字となって選択できないことが示されている。
【０１４７】
ステップＳ１６６において、指定割付部４６は、いずれかのハードウェアイベントが選択されたか否かを判定する。例えば、図１５で示されるように、ポインタ２２１’で示されるように、「KEY_PRESS(6)」が選択された場合、ハードウェアイベントが選択されたと判定され、その処理は、ステップＳ１６７に進む。
【０１４８】
ステップＳ１６７において、指定割付部４６は、対応する全てのソフトウェアイベントを、選択されたハードウェアイベントに設定する。
【０１４９】
ステップＳ１６８において、指定割付部４６は、ショートカット指定割付処理の終了が指示されたか否かを判定し、終了が指示されていない場合、その処理は、ステップＳ１６１に戻り、終了が指示された場合、その処理は、終了する。
【０１５０】
また、ステップＳ１６４において、いずれのハードウェアイベントについてもリストボタン２１３が操作されない場合、または、ステップＳ１６６において、いずれのハードウェアイベントも選択されない場合、その処理は、ステップＳ１６８に進む。
【０１５１】
すなわち、以上の処理により、「SWITCH_ON」のソフトウェアイベントに対応する全てのショートカットイベントは、図１６のハードウェアイベント表示欄２１２−１で指定されたように、「KEY_PRESS(6)」に設定される。また、この処理により、指定割付部４６は、図１７で示されるような、記述を生成することによりショートカットイベントを割り付ける。すなわち、図１７においては、第１行目の<events>および第６行目の</events>の記述により、第１行目乃至第６行目の記述がショートカットイベントを記述する内容であることを示している。第２行目の<mapping>および第５行目</mapping>の記述により第２行目乃至第５行目の記述がソフトウェアイベントのハードウェアイベントによる置き換えであることが記述されている。さらに、第３行目の<software event>SWITCH_ON</software>とする記述は、対象となるソフトウェアイベントが「SWITCH_ON」（電源を入れる）というイベントであることを示している。また、第４行目の<hardware event>KEY_PRESS(6)<hardware>の記述は、置き換えられるショートカットイベントが「KEY_PRESS(6)」（「6」というキーが操作されるイベント）に置き換えられることが示されている。
【０１５２】
同様にして、ステートデータについても、図１８で示されるように、状態Ｂ，Ｅの「SWITCH_ON」のソフトウェアイベントに対応する全てのショートカットイベントは、「KEY_PRESS(6)」に設定される。
【０１５３】
結果として、図１９の状態遷移図表示画面１１１で示されるようにトランジション１４４’および１４６’におけるソフトウェアイベント「SWITCH_ON」に対応するショートカットイベントは、いずれも「KEY_PRESS(6)」と表示されることになり、視線を動かすことなく状態遷移図に沿った操作ができるのみならず、同一のソフトウェアイベント「SWITCH_ON」に対して、同一のショートカットイベント「KEY_PRESS(6)」が設定されるので、操作における誤解やミスを低減させることが可能となる。
【０１５４】
本発明によれば、ハードウェアイベントに割り付けるのが困難なソフトウェアイベントを、ソフトウェアイベントとして認識しつつ、ハードウェアイベントと同一の感覚で使用することが可能となる。
【０１５５】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０１５６】
図２０は、図１の状態遷移プログラム編集装置１の電気的な内部構成をソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのCPU５０１は、パーソナルコンピュータの全体の動作を制御する。また、CPU５０１は、バス５０４および入出力インタフェース５０５を介してユーザからキーボードやマウスなどからなる入力部５０６から指令が入力されると、それに対応してROM(Read Only Memory)５０２に格納されているプログラムを実行する。あるいはまた、CPU５０１は、ドライブ５１０に接続された磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリを含むリムーバルメディア５２１から読み出され、記憶部５０８にインストールされたプログラムを、RAM(Random Access Memory)５０３にロードして実行する。これにより、上述した図１の状態遷移プログラム編集装置１の機能が、ソフトウェアにより実現されている。さらに、CPU５０１は、通信部５０９を制御して、外部と通信し、データの授受を実行する。
【０１５７】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図２０に示すように、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む）、光磁気ディスクを含む）、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア５２１、または、プログラムが一時的もしくは永続的に格納されるROM５０２や、記憶部５０８を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部５０９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【０１５８】
なお、CPU５０１として、”Ｃｅｌｌ誕生”、日経エレクトロニクス、日経BP社、２００５年２月２８日、８９頁乃至１１７頁に記載されているＣｅｌｌを採用することができる。
【０１５９】
また、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１６０】
さらに、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１６１】
【図１】本発明を適用した状態遷移プログラム編集装置の一実施の形態の構成を示す図である。
【図２】表示画面の構成例を示す図である。
【図３】ステートデータ格納部に格納されるステート情報のデータ構造を示す図である。
【図４】図１の状態遷移プログラム編集装置による状態遷移プログラム編集処理を説明するフローチャートである。
【図５】図１の状態遷移プログラム編集装置によるステート編集処理を説明するフローチャートである。
【図６】図１の状態遷移プログラム編集装置によるトランジション編集処理を説明するフローチャートである。
【図７】図１の状態遷移プログラム編集装置によるトランジション編集処理を説明する図である。
【図８】図１の状態遷移プログラム編集装置によるショートカット割付処理を説明するフローチャートである。
【図９】図１の状態遷移プログラム編集装置によるショートカットを割り付ける記述を説明する図である。
【図１０】図１の状態遷移プログラム編集装置によるスクリプト編集処理を説明するフローチャートである。
【図１１】図１の状態遷移プログラム編集装置による状態遷移プログラム実行処理を説明するフローチャートである。
【図１２】図１の状態遷移プログラム編集装置による状態遷移図生成処理を説明するフローチャートである。
【図１３】図１の状態遷移プログラム編集装置による表示処理を説明するフローチャートである。
【図１４】図１の状態遷移プログラム編集装置によるショートカット統一割付処理を説明するフローチャートである。
【図１５】図１の状態遷移プログラム編集装置によるショートカットを統一に割り付けるための選択画面を説明する図である。
【図１６】図１の状態遷移プログラム編集装置によるショートカットを統一に割り付けるための選択画面を説明する図である。
【図１７】図１の状態遷移プログラム編集装置によるショートカットを統一に割り付けたときの記述を説明する図である。
【図１８】図１の状態遷移プログラム編集装置によるショートカット統一割付処理によりショートカットが統一に割り付けられたステートデータを説明する図である。
【図１９】ショートカットが統一に割り付けられたときの表示処理により表示される表示例を示す図である。
【図２０】媒体を説明する図である。
【符号の説明】
【０１６２】
１１  操作部，  １２  編集部，  １３  ステートデータ格納部，  １４  状態遷移エンジン，  １５  状態遷移図生成部，  １６  状態動作実行部，  １７  表示制御部，  １８  表示部，  ３１  ステート編集部，  ３２  トランジション編集部，  ３３  スクリプト編集部，  ４１  イベント識別部，  ４２  ソフトウェアイベントテーブル，  ４３  ハードウェアイベントテーブル，  ４４  ショートカットイベント割付部，  ４５  未割付イベントハードウェアイベント検索部，  ４６  指定割付部，  ４７  選択リスト性西部，  ５１  ステート枠生成部，  ５２  トランジション生成部，  ６１  状態遷移図表示制御部，  ６２  状態動作表示制御部
【図１】
2007079954.tif 000003
【図２】
2007079954.tif 000004
【図３】
2007079954.tif 000005
【図４】
2007079954.tif 000006
【図５】
2007079954.tif 000007
【図６】
2007079954.tif 000008
【図７】
2007079954.tif 000009
【図８】
2007079954.tif 000010
【図９】
2007079954.tif 000011
【図１０】
2007079954.tif 000012
【図１１】
2007079954.tif 000013
【図１２】
2007079954.tif 000014
【図１３】
2007079954.tif 000015
【図１４】
2007079954.tif 000016
【図１５】
2007079954.tif 000017
【図１６】
2007079954.tif 000018
【図１７】
2007079954.tif 000019
【図１８】
2007079954.tif 000020
【図１９】
2007079954.tif 000021
【図２０】
2007079954.tif 000022