JP2007122253A - 情報処理方法および装置、記録媒体、並びにプログラム - Google Patents

情報処理方法および装置、記録媒体、並びにプログラム Download PDF

Info

Publication number
JP2007122253A
JP2007122253A JP2005311478A JP2005311478A JP2007122253A JP 2007122253 A JP2007122253 A JP 2007122253A JP 2005311478 A JP2005311478 A JP 2005311478A JP 2005311478 A JP2005311478 A JP 2005311478A JP 2007122253 A JP2007122253 A JP 2007122253A
Authority
JP
Japan
Prior art keywords
event
state
transition
information
state transition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2005311478A
Other languages
English (en)
Inventor
Yoshiyuki Nishimaki
由之 西巻
Koichi Matsuda
晃一 松田
Takeshi Miyashita
健 宮下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2005311478A priority Critical patent/JP2007122253A/ja
Publication of JP2007122253A publication Critical patent/JP2007122253A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】状態遷移プログラムの開発効率を向上させる。
【解決手段】状態遷移図生成部14が、ステートデータからなる状態遷移情報に基づいて、状態遷移図を生成する。表示部18は、生成された状態遷移図を表示する。操作部11は、表示された状態遷移図を操作する。状態遷移エンジン15は、操作部11の操作内容に応じて、ステートデータ格納部13に格納された状態遷移プログラムを実行することで、状態遷移情報を更新する。イベント検出部19は、イベントを受け付ける。イベント記憶部23は、受け付けたイベントをイベントリスト23aとして記憶する。イベント編集部20は、イベント記憶部23に記憶されたイベントリスト23aを編集する。本発明の状態遷移プログラムの開発ソフトウェアプログラムに適用することができる。
【選択図】図1

Description

本発明は情報処理方法および装置、記録媒体、並びにプログラムに関し、特に、状態遷移図を用いたUI(User Interface)プログラムの開発効率を向上させるようにした情報処理方法および装置、記録媒体、並びにプログラムに関する。
アプリケーションソフトウェアプログラムの開発を支援する開発ツールが一般に普及しつつある。例えば、オブジェクト指向型のプログラムの開発を支援するものがある(例えば、特許文献1参照)。
また、UML(Unified Modeling Language)に代表される状態遷移図を用いたアプリケーションソフトウェアプログラムのUI(User Interface)の開発ツールも提案されている。
状態遷移図は、各状態毎に実行されるべき動作が論理的に記述されるとともに、各状態において発生する所定のイベントにより他の状態に遷移する方向が示された図である。上述したアプリケーションソフトウェアプログラムのUIの開発ツールは、プログラムを状態遷移図として表示させると共に、その表示された状態遷移図そのものが操作されると、状態遷移図の操作内容をプログラムに反映させることで、プログラムを編集するものである。
これらのプログラムの編集およびデバッグに用いるものとして、ステップ実行と通常実行とを切替えて、ステップ実行させることにより、個々のステップにおいてバグの発生を確認できるようにさせるものがある(例えば、特許文献2参照)。
また、操作記録としてイベントを記憶させ、ハードウェア障害が発生したような場合、その操作記録である記憶されているイベントに基づいて、動作状態を復旧させるものがある(例えば、特許文献3参照)。
特開平6−110767号公報
特開2001−154868号公報
特開2000−010692号公報
しかしながら、実際にプログラムを実行させて、バグの発生の有無を確認しようとする場合、通常の操作では発生し得ないようなイベントを発生させてバグが発生するか否かを確認するのが困難である。例えば、同一の位置にポインタを固定させた状態で、1秒間に10回クリック操作するといったイベントを発生させることは、偶発的に発生させることができたとしても、繰り返し再現させることは困難であり、その検証そのものを困難なものとしていた。
また、複数のイベントを所定のタイミングで、所定の順序で実行させた場合のバグの発生の有無を確認したい場合、同一のイベントを繰り返し発生させるためには、イベントを発生させたタイミングと順序を正確に記録し、そして、正確に再現させる必要があり、非常に手間のかかる操作であった。
本発明は、このような状況に鑑みてなされたものであり、特に、各状態におけるイベントを入力するタイミングや順序などをイベントリストとして記憶させることで、高い再現性を実現して上述したようなバグの発生の有無を正しく検証できるようにすると共に、発生させること自体が困難なイベントをも編集により容易に実現させるようにし、正確なバグ除去を実現できるようにすることで、プログラムの開発効率を向上させるものである。
本発明の一側面の情報処理方法は、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、前記イベントを受け付ける受付ステップと、前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップとを含む。
前記イベントは、イベントタイプおよびイベントパラメータにより特定されるようにすることができる。
前記イベント記憶ステップの処理には、前記受付ステップの処理で受け付けられたイベント毎に、前記イベントを受け付けたタイミング、前記イベントの受付前の状態、および前記イベントの受付後の状態を含む情報を対応付けてイベントリストとして記憶させるようにすることができる。
前記編集ステップの処理には、前記イベント記憶ステップの処理により記憶されるイベントリストのうち前記イベントのみを編集させるようにすることができる。
前記受付ステップの処理には、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを受け付けるようにさせることができる。
前記受付ステップの処理には、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを受け付けた順序で、連続的に受け付けるようにさせることができる。
前記イベント記憶ステップの処理には、前記受付ステップの処理で受け付けられたイベント毎に、前記イベントを受け付けたタイミングを含む情報を対応付けてイベントリストとして記憶させ、前記受付ステップの処理には、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを所定のタイミングから受け付けるようにさせることができる。
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付ける場合、前記受付ステップの処理によりイベントが受け付けられた時点での状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付前の状態とを比較する比較ステップとをさらに含ませるようにすることができる。
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付けるとき、前記受付ステップの処理により受け付けられたイベントにより遷移した状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付後の状態とを比較する比較ステップとをさらに含ませるようにすることができる。
前記比較ステップの処理により比較結果が一致しない場合、イベント記憶ステップの処理により記憶されているイベントリストのイベントに矛盾があることを警告する警告ステップをさらに含ませるようにすることができる。
本発明の一側面の情報処理装置は、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成手段と、前記生成手段により生成された状態遷移図を表示する表示手段と、前記表示手段により表示された状態遷移図を操作する操作手段と、前記操作手段により操作内容に応じて、前記状態遷移情報を更新する更新手段と、前記イベントを受け付ける受付手段と、前記受付手段により受け付けたイベントをイベントリストとして記憶するイベント記憶手段と、前記イベント記憶手段により記憶されたイベントリストを編集する編集手段とを含む。
本発明の一側面の記録媒体のプログラムは、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、前記イベントを受け付ける受付ステップと、前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップとを含むコンピュータが読み取り可能なプログラムが記録されている記録媒体。
本発明の一側面のプログラムは、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、前記イベントを受け付ける受付ステップと、前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップとを含む処理をコンピュータに実行させる。
本発明の一側面においては、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図が生成され、生成された状態遷移図が表示され、表示された状態遷移図が操作され、操作内容に応じて、前記状態遷移情報が更新され、前記イベントが受け付けられ、受け付けたイベントがをイベントリストとして記憶され、記憶されたイベントリストが編集される。
情報処理装置は、独立した装置であっても良いし、情報処理装置の情報処理を行うブロックであっても良い。
以上のように、本発明の一側面によれば、状態遷移図を用いたプログラムの生成および動作確認を容易にすることができ、UIのプログラムの開発の効率を向上させることが可能となる。
以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
すなわち、本発明の一側面の情報処理方法およびプログラムは、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップ(例えば、図9のフローチャートにおけるステップS121乃至S123の処理)と、前記生成ステップの処理により生成された状態遷移図を表示する表示ステップ(例えば、図10のフローチャートにおけるステップS141の処理)と、前記表示ステップの処理により表示された状態遷移図を操作する操作ステップ(例えば、図7のフローチャートにおけるステップS63の処理)と、前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップ(例えば、図7のフローチャートにおけるステップS64の処理)と、前記イベントを受け付ける受付ステップと、前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップ(例えば、図13のフローチャートにおけるステップS164乃至S168の処理)と、前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップ(例えば、図15のフローチャートにおけるステップS183乃至S185,S188,S189の処理)とを含む。
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付ける場合、前記受付ステップの処理によりイベントが受け付けられた時点での状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付前の状態とを比較する比較ステップ(例えば、図27のフローチャートにおけるステップS284の処理)とをさらに含ませるようにすることができる。
前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付けるとき、前記受付ステップの処理により受け付けられたイベントにより遷移した状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付後の状態とを比較する比較ステップ(例えば、図27のフローチャートにおけるステップS288の処理)とをさらに含ませるようにすることができる。
前記比較ステップの処理により比較結果が一致しない場合、イベント記憶ステップの処理により記憶されているイベントリストのイベントに矛盾があることを警告する警告ステップ(例えば、図27のフローチャートにおけるステップS289,S290の処理)をさらに含ませるようにすることができる。
本発明の一側面の情報処理装置は、それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成手段(例えば、図1の状態遷移図生成部14)と、前記生成手段により生成された状態遷移図を表示する表示手段(例えば、図1の表示部18)と、前記表示手段により表示された状態遷移図を操作する操作手段(例えば、図1の操作部11)と、前記操作手段により操作内容に応じて、前記状態遷移情報を更新する更新手段(例えば、図1の編集部12)と、前記イベントを受け付ける受付手段(例えば、図1のイベント検出部19)と、前記受付手段により受け付けたイベントをイベントリストとして記憶するイベント記憶手段(例えば、図1のイベント記録部21)と、前記イベント記憶手段により記憶されたイベントリストを編集する編集手段(例えば、図1のイベント編集部20)とを含む。
このように、各状態におけるイベントを入力するタイミングや順序などをイベントリストとして記憶させることで、高い再現性を実現してバグの発生の有無を正しく検証できるようにすると共に、発生させること自体が困難なイベントをも編集により容易に実現させ、正確なバグ除去を実現できるようにすることで、UIプログラムの開発効率を向上させるようにするものである。
図1は、本発明を適用した状態遷移プログラム編集装置1の一実施の形態の構成を示す図である。
状態遷移プログラム編集装置1は、アプリケーションソフトウェアプログラムにおけるUIのプログラムの開発を目的とした編集装置であり、各状態における動作、それぞれの状態における遷移時のイベント、および各イベント毎にどの他の状態に遷移するかを示す遷移方向の情報を含む状態遷移情報(ステートデータ)に基づいて、状態遷移図を生成すると共に、生成した状態遷移図を表示する。さらに、状態遷移プログラム編集装置1は、表示した状態遷移図が操作されることにより変更されると、変更された状態遷移図に対応して、状態遷移情報を更新する。
操作部11は、マウスやキーボードなどから構成されており、状態遷移プログラム編集装置1を操作するユーザによる操作に対応する信号を発生して編集部12に供給する。
編集部12は、ステート編集部31、トランジション編集部32、およびスクリプト編集部33より構成されており、操作部11より供給されてくる信号に基づいて、状態遷移情報(ステートデータ)を編集する。ステートデータは、各状態(ステート)毎に動作を示す情報(スクリプト情報)およびイベントに応じて遷移する状態の遷移先の情報(トランジション情報)が記述されている。
ステート編集部31は、状態(ステート)の新規生成、および表示位置や大きさなどの情報を編集し、編集結果をステートデータ格納部13に格納させる。トランジション編集部32は、各状態における動作が実行されている間に発生するイベントに応じて、遷移する遷移先となる状態の情報を編集し、ステートデータ格納部13に格納させる。スクリプト編集部33は、各状態における動作内容を編集し、ステートデータ格納部13に格納させる。
ステートデータ格納部13は、各状態(ステート)ごとに編集部12によりトランジション情報やスクリプト情報が編集されたステートデータを格納し、必要に応じて状態遷移図生成部14および状態遷移エンジン15に供給する。
状態遷移図生成部14は、ステート枠生成部41、およびトランジション生成部42から構成されており、ステートデータ格納部13に格納されているステートデータを読み出し、状態遷移図を生成する。ステート枠生成部41は、各状態ごとに矩形の枠(ステート枠)を生成すると共に、状態遷移エンジン15より供給される今現在の状態の情報に基づいて、今現在の状態を示すステート枠内の表示色を変化させて表示する。トランジション42は、各状態における動作中に発生するイベントごとに遷移先を示す矢印を生成する。
状態遷移エンジン15は、ステートデータ格納部13に格納されているステートデータを読み出すと共に、イベント検出部19より供給されるイベントの情報に基づいて、今現在のステートを検索し、検索結果である今現在のステートを示す情報を状態遷移図生成部14および状態動作実行部16に供給する。
状態動作実行部16は、状態遷移エンジン15より供給される今現在の状態のステートデータに基づいて、現在の状態の動作を実行し、実行結果を表示制御部17に供給する。
表示制御部17は、状態遷移図表示制御部51、状態動作表示制御部52、イベント表示制御部53、テスト結果表示制御部54、および再生コントローラ表示制御部55より構成され、表示部18に表示する表示画面を生成して表示させる。
状態遷移図表示制御部51は、状態遷移図生成部14より供給されてくる状態遷移図の情報に基づいて、例えば、図2の状態遷移図表示画面112を生成し、表示を制御する。図2においては、状態A(State A:ステートA)を示すステート枠131、状態B(State B:ステートB)を示すステート枠132、状態C(State C:ステートC)を示すステート枠133、および、状態D(State D:ステートD)を示すステート枠134が示されており、それぞれが、トランジション141乃至148で結ばれている。トランジション141乃至148は、それぞれ状態間を遷移する方向とイベントを示している。
より詳細には、トランジション141は、「KeyPress_x」と示され、矢印が状態Aから状態Dに向って表示されており、状態Aの動作が実行されている場合、操作部11の「x」のキーが操作されるというイベントが発生すると、状態Aから状態Bに遷移することを示している。
同様に、トランジション142は、「KeyPress_2」と示され、矢印が状態Aから状態Bに向って表示されており、状態Aの動作が実行されている場合、操作部11の「2」のキーが操作されるというイベントが発生すると、状態Aから状態Bに遷移することを示している。
また、トランジション143は、「KeyPress_3」と示され、矢印が状態Bから状態Aに向って表示されており、状態Bの動作が実行されている場合、操作部11の「3」のキーが操作されるというイベントが発生すると、状態Bから状態Aに遷移することを示している。
さらに、トランジション144は、「KeyPress_b」と示され、矢印が状態Bから状態Cに向って表示されており、状態Bの動作が実行されている場合、操作部11の「b」のキーが操作されるというイベントが発生すると、状態Bから状態Cに遷移することを示している。
また、トランジション145は、「KeyPress_a」と示され、矢印が状態Cから状態Bに向って表示されており、状態Cの動作が実行されている場合、操作部11の「a」のキーが操作されるというイベントが発生すると、状態Cから状態Bに遷移することを示している。
さらに、トランジション146は、「KeyPress_1」と示され、矢印が状態Cから状態Dに向って表示されており、状態Cの動作が実行されている場合、操作部11の「1」のキーが操作されるというイベントが発生すると、状態Cから状態Dに遷移することを示している。
また、トランジション147は、「KeyPress_0」と示され、矢印が状態Dから状態Cに向って表示されており、状態Dの動作が実行されている場合、操作部11の「0」のキーが操作されるというイベントが発生すると、状態Dから状態Cに遷移することを示している。
さらに、トランジション148は、「KeyPress_z」と示され、矢印が状態Dから状態Aに向って表示されており、状態Dの動作が実行されている場合、操作部11の「z」のキーが操作されるというイベントが発生すると、状態Dから状態Aに遷移することを示している。
尚、図2においては、表示部18で表示される表示画面101が示されている。表示画面101には、動作表示画面111、状態遷移図表示画面112、実行済みイベントリスト表示画面113、次実行イベントリスト表示画面114、再生コントローラ表示画面115が設けられている。
状態動作表示制御部52は、状態動作実行部16より供給される、カレントステートの状態動作の実行結果に基づいて、例えば、図2で示されるような動作表示画面111を生成し、表示を制御する。尚、図2においては、カレントステートが設定されておらず、実行されるものがないので、動作表示画面111は、黒の画面となっている。
イベントリスト表示制御部53は、イベント記憶部23に記憶されているイベントリスト23a乃至23xのうち、既に実行された実行済みイベントリスト表示画面113に表示すると共に、これから実行しようとするイベントリストを次実行イベントリスト表示画面114に表示する。図2においては、実行済みイベントリスト表示画面113には、上から「1.MouseUp(10,10)」、「3.MouseDown(10,10)」、および「7.Key('a')」と表示されており、所定のタイミングから1秒後のタイミングで操作部11のマウスが操作されて、表示部18の座標(10,10)上にポインタが操作された状態で上方向に操作されるイベントが発生し、3秒後のタイミングで操作部11のマウスが操作されて、表示部18の座標(15,15)上にポインタが操作された状態で下方向に操作されるイベントが発生し、さらに、7秒後のタイミングで操作部11のキーボードが操作されて、「a」のキーが押下されるイベントが発生したことを示している。
また、次実行イベントリスト表示画面114には、上から「10.MouseUp(0,0)」、「13.MouseDown(0,0)」、および「17.Key('b')」と表示されており、所定のタイミングから10秒後のタイミングで操作部11のマウスが操作されて、表示部18の座標(0,0)上にポインタが操作された状態で上方向に操作されるイベントが発生し、13秒後のタイミングで操作部11のマウスが操作されて、表示部18の座標(0,0)上にポインタが操作された状態で下方向に操作されるイベントが発生し、さらに、17秒後のタイミングで操作部11のキーボードが操作されて、「b」のキーが押下されるイベントが発生することを示している。
ここでいう、イベントリスト23a−1乃至23a−nとは、タイミングに対応付けて発生されるイベントのリストを示す。尚、イベントリスト23a−1乃至23a−nについては、詳細を後述する。尚、イベントリスト23a−1乃至23a−nを個々に区別する必要がない場合、単に、イベントリスト23aと称するものとし、その他の構成について、同様に称するものとする。
テスト結果表示制御部54は、テスト結果比較部25より供給されてくる、後述する比較結果に基づいて、イベント編集部20により編集されたイベントリスト23aに矛盾があるとき、イベントリストが破綻していることを警告する表示画面を表示する。
再生コントローラ表示制御部55は、再生コントローラ表示画面115の表示を制御する。図2においては、再生コントローラ表示画面115には、左から巻き戻しボタン115a、再生ボタン115b、早送りボタン115c、テスト再生ボタン115d、変換ボタン115e、および記録ボタン115fが表示されている。
巻き戻しボタン115aは、イベントリスト23aに記録されているイベントを現在のタイミングからみて所定の時間だけ戻ったタイミングから発生させて、状態遷移プログラムを実行させるとき操作される。再生ボタン115bは、イベントリスト23aに記録されているイベントの情報に基づいて、発生するイベントに対応して状態遷移プログラムを実行させるとき操作される。尚、再生ボタン115bの操作内容は、通常再生とステップ再生との2種類がある。通常再生は、後述するイベントリスト23aに記録された時刻情報に従って順次連続的にイベントが発生させて、状態遷移プログラムの実行を促す処理である。ステップ再生とは、上述した時刻情報とは別に、1個の表示画面(状態遷移プログラムにより表示される画面)が表示される単位(1フレーム単位)で状態遷移プログラムを実行させる処理である。通常再生とステップ再生とは、図示せぬ動作モードを切替えるボタンの操作により切替えることが可能であるが、いずれの再生も、再生ボタン115bが押下されることにより開始され、再度押下されると停止する。尚、再生ボタン115bは、巻き戻し再生ボタン115a、早送り再生115c、テスト再生ボタン115d、および記録ボタン115fが一度押下されることにより、各種の再生や記録が開始された後、それらの動作の停止ボタンとして機能する。
早送りボタン115cは、イベントリスト23aに記録されているイベントが、タイミングを無視して順次発生されるようにして、状態遷移プログラムを実行させるとき操作される。テスト再生ボタン115dは、イベントリスト23aに記録されているイベントを順次発生して、状態遷移プログラムを実行させ、実際に実行された状態遷移プログラムにより遷移した状態と、イベントリスト23aに記録されたイベントが発生する前の状態または後の状態が一致するか否かにより、イベントリスト23aが破綻のないものであるか否かを試すためのテスト再生を実行させるとき操作される。変換ボタン115eは、イベントリスト23aをXML(eXtensible Markup Language)形式の情報に変換するとき操作される。記録ボタン115fは、状態遷移プログラムが実行されている状態で発生するイベントのタイミングや種類を記録するとき操作され、一度押下されるとイベントの記録が開始され、タイミングと共に順次イベントリスト23aに記録され、再度押下されるとイベントの記録が終了する。この処理により、イベントリスト23aが順次生成される。
表示部18は、CRT(Cathode Ray Tube)またはLCD(Liquid Crystal Display)などから構成され、表示制御部17により生成された画面を表示する。
イベント検出部19は、操作部11の操作内容に応じたイベントを検出し、検出したイベントを状態遷移エンジン15およびイベント記録部21に供給する。また、イベント検出部19は、操作部11の操作内容に応じたイベントに限らず、例えば、図示せぬバッテリ残量が所定値より小さくなったといったイベントなどの操作部11の操作とは無関係なイベントも検出する。さらに、イベント検出部19は、イベントコントローラ22より順次供給されるイベントが発生したことを示し信号に基づいて、イベントを検出し、検出したイベントを状態遷移エンジン15、およびイベント記録部21に供給する。
イベント編集部20は、イベント記憶部23に記憶されているイベントリスト23aを読み出し、操作部11の操作内容に応じて、イベントリスト23aを編集する。イベント記録部21は、操作部11が操作されることにより、記録ボタン115fが押下されるとき、イベント検出部19により検出されたイベントをイベント記録部23に供給し、イベントリスト23aとして記憶させる。このとき、イベント記録部21は、内蔵するRTC(Real Time Clock)で発生される時刻の情報と共に、イベントリスト23aに記録する。また、イベント記録部23は、変換部21bを内蔵しており、操作部11が再生コントローラ表示画面115の変換ボタン115eが操作されるとき、対象となるイベントリスト23aをXML形式のファイルに変換する。
イベントコントローラ22は、図2で示される再生コントローラ表示画面115の巻き戻し再生ボタン115a乃至記録ボタン115fが操作部11により操作されるとき、その操作内容に応じて、イベント記録部21を制御して、イベントリスト23aをイベント記憶部23に記憶させたり、または、RTC22aにより発生される時刻情報に基づいて、イベント記憶部23に記憶されているイベントリスト23aを読み出してイベント検出部19に供給する。
状態読出部24は、イベントコントローラ22よりイベント検出部19に供給されているイベントの情報に基づいて、供給されたイベントにより遷移する前の状態、および、イベントにより遷移した後の状態の情報をイベントリスト23aより読み出し、テスト結果比較部25に供給する。
テスト結果比較部25は、状態読出部24より供給されてくる、イベント検出部19に供給されるイベントにより遷移する前の状態、または、イベントにより遷移した後の状態と、状態遷移エンジン15より状態動作実行部16に供給される状態とを比較して、イベントリスト23aに記録されているイベントと、イベントにより遷移する前の状態またはイベントにより遷移した後の状態との間に矛盾がないか否かを判定し、矛盾があると判定した場合、イベントリスト23aの記述に誤りがあることを示すテスト結果を表示制御部17に供給する。このとき、表示制御部17のテスト結果表示制御部54は、イベントリスト23aの記述に誤りがあることを示すテスト結果を表示部18に表示させる。
次に、図3を参照して、ステートデータ格納部13に格納されるステート情報について説明する。
ステート情報は、例えば、図2の状態遷移図表示画面112で示されるような状態遷移図が構成されるような場合、図3で示されるような状態で、状態A乃至Dごとにステートデータ格納部13に格納されている。図3においては、左から状態A乃至Dの順にステート情報のデータ構造が示されている。
各ステート(状態)には、トランジション情報として、各イベントと対応する遷移先となる状態の情報が記録される領域が確保されている。また、各状態におけるスクリプトが記録される領域が確保されている。
すなわち、図3の状態A(State A)においては、トランジション情報として、イベント欄には「KeyPress_2」および「KeyPress_x」が記録され、対応する遷移先として、それぞれ「State B」および「State D」と記録されている。すなわち、このトランジション情報は、図2のトランジション142,141にそれぞれ対応する情報として記録されている。また、状態Aの場合、トランジション情報の下には、スクリプト情報として、「スクリプトA」が記録されている。
さらに、状態B(State B)においては、トランジション情報として、イベント欄には「KeyPress_3」および「KeyPress_b」が記録され、対応する遷移先として、それぞれ「State A」および「State C」と記録されている。すなわち、このトランジション情報は、図2のトランジション143,144にそれぞれ対応する情報として記録されている。また、状態Bの場合、トランジション情報の下には、スクリプト情報として、「スクリプトB」が記録されている。
さらに、状態C(State C)においては、トランジション情報として、イベント欄には「KeyPress_a」および「KeyPress_1」が記録され、対応する遷移先として、それぞれ「State B」および「State D」と記録されている。すなわち、このトランジション情報は、図2のトランジション145,146にそれぞれ対応する情報として記録されている。また、状態Cの場合、トランジション情報の下には、スクリプト情報として、「スクリプトC」が記録されている。
さらに、状態D(State D)においては、トランジション情報として、イベント欄には「KeyPress_z」および「KeyPress_0」が記録され、対応する遷移先として、それぞれ「State A」および「State C」と記録されている。すなわち、このトランジション情報は、図2のトランジション148,147にそれぞれ対応する情報として記録されている。また、状態Dの場合、トランジション情報の下には、スクリプト情報として、「スクリプトD」が記録されている。
次に、図4のフローチャートを参照して、編集部12による状態遷移プログラム編集処理について説明する。
ステップS1において、ステート編集部31は、操作部11より供給されてくる信号に基づいて、ステート編集が指示されたか否かを判定する。ステップS1において、例えば、ステート編集処理が指示されたと判定された場合、ステップS2において、ステート編集部31は、ステート編集処理を実行し、その処理は、元に戻る。尚、ステート編集処理については、図5を参照して後述する。
ステップS1において、例えば、ステート編集処理が指示されていないと判定された場合、ステップS3において、トランジション編集部32は、操作部11より供給されてくる信号に基づいて、トランジション編集が指示されたか否かを判定する。ステップS3において、例えば、トランジション編集処理が指示されたと判定された場合、ステップS4において、トランジション編集部32は、トランジション編集処理を実行し、その処理は、元に戻る。尚、トランジション編集処理については、図6を参照して後述する。
ステップS3において、例えば、トランジション編集処理が指示されていないと判定された場合、ステップS5において、スクリプト編集部33は、操作部11より供給されてくる信号に基づいて、スクリプト編集が指示されたか否かを判定する。ステップS5において、例えば、スクリプト編集処理が指示されたと判定された場合、ステップS6において、スクリプト編集部33は、スクリプト編集処理を実行し、その処理は、元に戻る。尚、スクリプト編集処理については、図7を参照して後述する。
以上の処理により、ステートデータが更新されることになるので、対応する状態遷移プログラムが更新される。
次に、図5のフローチャートを参照して、ステート編集処理について説明する。
ステップS21において、ステート編集部31は、操作部11からの信号に基づいて、新規のステート(状態)を生成する処理であるか否かを判定する。例えば、図2の表示画面101上の図示せぬボタンが操作され、新規のステートを生成する処理が指示された場合、ステップS22において、ステート編集部31は、新規のステートを生成する。すなわち、ステート編集部31は、新たな状態に対応するステート情報をステートデータ格納部13に記録する。
ステップS23において、ステート編集部31は、新規に生成されたステートを編集対象ステートに設定する。
ステップS24において、ステート編集部31は、編集対象ステートのステート情報に更新があるか否かを判定する。ここで更新の有無が判定されるのは、ステート情報のうちステート名や対応するステート枠の表示位置などの情報である。すなわち、ステート編集部31が編集するのは、ステート情報のうち、ステート名およびステート枠の表示位置の情報である。
ステップS24において、ステート情報のうち、ステート名およびステート枠の表示位置の情報に更新があると判定された場合、ステップS25において、ステート編集部31は、更新された、ステート名およびステート枠の表示位置の情報を編集対象ステートのステート情報に反映させて更新する。
一方、ステップS24において、更新がないと判定された場合、ステップS25の処理は、スキップされる。
ステップS26において、ステート編集処理の終了が指示されたか否かを判定し、終了が指示されない場合、その処理は、ステップS24に戻り、終了が指示されたと判定された場合、ステート編集処理は終了する。
また、ステップS21において、新規のステートの生成ではないと判定された場合、ステップS27において、既存のステートが選択されたか否かが判定される。すなわち、図10を参照して後述する表示処理により表示される、例えば、図2で示されるような状態遷移図表示画面112上に表示された既存のステート枠131乃至134のいずれかがポインタ150が操作部111により操作されて選択されたか否かにより、対応するステートA乃至Dのステートデータ格納部13により格納されているステート情報のいずれかが選択されたか否かが判定される。例えば、既存のステートのステート情報が選択された場合、ステップS28において、ステート編集部31は、選択されたステートを編集対象ステートに設定し、その処理は、ステップS24に進む。
一方、ステップS27において、既存のステートが選択されたと判定されなかった場合、その処理は、ステップS21に戻り、それ以降の処理が繰り返される。
すなわち、以上の処理により、新規のステート、または、既存のステートの何れかのステート情報について、ステート名およびステート枠の表示位置が、新たに設定されるか、または、更新されることになる。
次に、図6のフローチャートを参照して、トランジション編集処理について説明する。
ステップS41において、トランジション編集部32は、既存のステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。すなわち、図10を参照して後述する表示処理により表示される、例えば、図2で示されるような状態遷移図表示画面112上に表示された既存のステート枠131乃至134のいずれかがポインタ150が操作部111により操作されて選択されたか否かにより、対応するステートA乃至Dのステートデータ格納部13により格納されているステート情報のいずれかが選択されたか否かが判定される。そして、ステップS41において、例えば、既存のステートのステート情報が選択された場合、ステップS42において、トランジション編集部32は、選択されたステートを編集対象ステートに設定し、その処理は、ステップS43に進む。
ステップS43において、トランジション編集部32は、編集対象ステートのステート情報のうち、遷移先が指定されたか否かを判定する。すなわち、例えば、図2の状態遷移図表示画面112で示されるように、ステート枠131乃至134で示される状態A乃至Dのうち、例えば、状態Aが選択され、編集対象ステートに設定された場合、操作部111によりポインタ150をドラッグして状態Aのステート枠131を基点として、例えば、状態Dのステート枠134を終点とするトランジション141で示されるような矢印を引いた場合、遷移先が状態Dに設定されることになる。
そこで、ステップS43においては、トランジション編集部32は、このようにトランジションの矢印が編集対象ステートの状態を示すステート枠から遷移先を示す状態のステート枠までの矢印が引かれたか否かにより、遷移先が設定されたか否かを判定する。
ステップS43において、遷移先が設定されたと判定された場合、ステップS44において、トランジション編集部32は、イベントを指定するように要求する。より具体的には、例えば、遷移先を指定する処理として、図2のトランジション141がポインタ150により引かれた場合、トランジション編集部32は、トランジションの横にイベントを指定する図示せぬ空欄を表示し、入力を促す。
ステップS45において、トランジション編集部32は、遷移する際のイベントが指定されたか否かを判定し、指定されたと判定されるまで、その処理を繰り返す。すなわち、トランジション編集部32は、その空欄にイベントを指定する情報が入力されたか否かを判定し、イベントが指定されたか否かを判定する。
ステップS45において、イベントが指定されたと判定された場合、ステップS46において、トランジション編集部32は、ステートデータ格納部13にアクセスし、編集対象ステートのステート情報を読み出し、指定された遷移先とイベントの情報を反映させて更新する。すなわち、例えば、図2のトランジション141の場合、遷移先として「State D」が指定され、イベントとして、「KeyPress_x」が指定されるので、図3の左部で示されるように、遷移先とイベントに「State D」、および、「KeyPress_x」を追加して更新する。
ステップS43において、遷移先が指定されていない場合、ステップS44乃至S46の処理がスキップされ、ステップS47において、トランジション編集処理の終了が指示されたか否かを判定し、終了が指示されない場合、処理は、ステップS43に戻る。すなわち、トランジション編集処理の終了が指示されるまで、ステップS43乃至S47の処理が繰り返される。
そして、ステップS47において、トランジション編集処理の終了が指示された場合、その処理は終了する。
以上の処理により、ポインタ150を操作部111により操作し、編集対象ステートのステート枠から遷移先のステート枠に矢印を引くだけで、トランジションの情報を編集することが可能となる。
次に、図7のフローチャートを参照して、スクリプト編集処理について説明する。
ステップS61において、スクリプト編集部33は、既存のステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。すなわち、図10を参照して後述する表示処理により表示される、例えば、図2で示されるような状態遷移図表示画面112上に表示された既存のステート枠131乃至134のいずれかがポインタ150が操作部111により操作されて選択されたか否かにより、対応するステートA乃至Dのステートデータ格納部13により格納されているステート情報のいずれかが選択されたか否かが判定される。そして、ステップS61において、例えば、既存のステートのステート情報が選択された場合、ステップS62において、スクリプト編集部33は、選択されたステートを編集対象ステートに設定し、その処理は、ステップS63に進む。
ステップS63において、スクリプト編集部33は、スクリプトが更新されたか否かを判定する。例えば、操作部11が操作されて、図示せぬエディタが起動され、対象となるスクリプトが更新された場合、スクリプトが更新されたと判定され、ステップS64において、スクリプト編集部33は、ステートデータ13にアクセスし、編集対象ステートのステート情報を読み出し、スクリプト表示画面115上で編集された情報に基づいて、スクリプトを変更して、ステート情報を更新する。
ステップS65において、ステート編集部33は、ステート編集処理の終了が指示されたか否かを判定し、終了が指示されていない場合、その処理は、ステップS61に戻る。また、ステート編集処理の終了が指示された場合、その処理は、終了する。
以上の処理により、スクリプトが編集される。
次に、図8のフローチャートを参照して、状態遷移プログラム実行処理について説明する。
ステップS91において、状態遷移エンジン15は、操作部11より送信されてくる操作信号に基づいて、状態遷移図表示画面112上のいずれかのステートが選択されたか否かを判定し、選択されるまで、その処理を繰り返す。より詳細には、状態遷移エンジン15は、操作部11より供給されてくる信号に基づいて、例えば、図2の状態遷移図表示画面112上のステート枠131乃至134のいずれかが、ポインタ150により選択されたか否かを判定し、いずれかのステートが選択されるまで、その処理を繰り返す。
ステップS91において、例えば、いずれかのステートが選択された場合、ステップS92において、状態遷移エンジン15は、選択されたステートをカレントステートとして設定する。すなわち、状態遷移エンジン15は、操作部11からの信号に基づいて、例えば、図2の状態遷移図表示画面112上のステート枠131乃至134のうち、ポインタ150により選択されたステート枠に対応するステートをカレントステートに設定する。また、このとき、状態遷移エンジン15は、カレントステートがいずれのステートであるかを示す情報を状態遷移図生成部14に供給する。この情報により、図9のフローチャートを参照して、後述する状態遷移図生成処理においてカレントステートのステート枠の表示色を変えて表示させる。
ステップS93において、状態遷移エンジン15は、ステートデータ格納部13にアクセスし、カレントステートのステート情報を読み出し、状態動作実行部16に供給する。
ステップS94において、状態動作実行部16は、供給されたカレントステートのステート情報を解釈する。すなわち、状態動作実行部16は、供給されたカレントステートのステート情報のうち、特に、スクリプト情報を読み出して、その状態における動作を認識する。
ステップS95において、状態動作実行部16は、スクリプト情報に記述されている処理を実行する。
ステップS96において、状態動作実行部16は、状態遷移処理の終了が指示されたか否かを判定する。すなわち、状態動作実行部16は、操作部11からの信号に基づいて、状態遷移処理の終了が指示されたか否かを判定し、終了が指示されていない場合、その処理は、ステップS97に進む。
ステップS97において、状態遷移エンジン15は、イベントが発生したか否かを判定する。すなわち、状態遷移エンジン15は、イベント検出部19により検出されたイベントの情報が供給されてきたか否かを判定し、イベントがない場合、その処理は、ステップS95に戻り、以降の処理が繰り返される。すなわち、イベントが検出されるまで、ステップS95乃至S97の処理が繰り返される。一方、ステップS97において、イベントがあると判定された場合、その処理は、ステップS98に進む。
ステップS98において、状態遷移エンジン15は、供給されてきたイベントの情報により遷移先が設定されているか否かを判定する。すなわち、ステート情報が、図3で示されるものであって、現在の状態がステートAであった場合、例えば、イベントとして、操作部11のキーボードのうち「A」のキーが操作されるというイベントが発生したとしても、遷移先が設定されていないことになる。このため、このような場合、その処理は、ステップS95に戻る。すなわち、実質的に、イベントの発生がなかったものとして処理される。
一方、ステップS98において、遷移先があると判定された場合、すなわち、ステート情報が、図3で示されるものであって、現在の状態がステートAであった場合、例えば、イベントとして、操作部11のキーボードのうち「2」のキーが操作されるというイベントが発生すると、遷移先Bに設定されている。そこで、ステップS99において、状態遷移エンジン15は、遷移先のステートをカレントステートに設定し、その処理は、ステップS93に戻り、それ以降の処理が繰り返される。すなわち、この処理により、新たな遷移先となるステートBをカレントステートに設定し、ステップS93以降の処理が繰り返される。
以上の処理により、状態遷移エンジン15が、イベント検出部19より供給されてくるイベントの情報により状態遷移図に従って状態を変化させると共に、対応する状態のステート情報を読み出して、状態動作実行部16に供給することが可能となる。また、状態動作実行部16は、ユーザの操作に基づいて設定されている状態を変化させると共に、状態動作実行部16は、対応する状態においてスクリプトで規定される動作を実行することが可能となる、
次に、図9のフローチャートを参照して、状態遷移図生成処理について説明する。
ステップS121において、状態遷移図生成部14は、ステートデータ格納部13にアクセスし、格納されている全ステートデータを読み出す。
ステップS122において、ステート枠生成部42は、全てのステート情報毎に状態遷移図上のステート枠を生成すると共に、スクリプト情報に基づいて、全スクリプトの記述内容をステート枠内に記述する。
ステップS123において、トランジション付加部43は、ステート情報のうち、イベントと対応する遷移先の情報に基づいて、トランジションを生成する。
ステップS124において、状態遷移図生成部14は、ステート枠生成部41により生成されたステート枠、トランジション生成部42により生成されたトランジションに基づいて、状態遷移図を構成する情報を生成し、表示制御部17に供給する。
以上の処理により、ステートデータ格納部13に格納されているステート情報に基づいて、状態遷移図が生成され、表示制御部17に供給することが可能となる。
次に、図10のフローチャートを参照して、表示処理について説明する。
ステップS141において、状態遷移図表示制御部51は、状態遷移図生成部14より供給されてくる状態遷移図の情報に基づいて、状態遷移図表示画面112を表示する。
ステップS142において、イベントリスト表示制御部53は、イベント記憶部23にアクセスし、格納されているイベントリスト23aを読み出し、実行済みのイベントに基づいて、実行済みイベントリスト表示画面113を表示し、実行しようとするイベントに基づいて、次実行イベントリスト表示画面114を表示する。
ステップS143において、再生コントローラ表示制御部55は、再生コントローラ表示画面115を生成して表示する。
ステップS144において、状態動作表示制御部52は、状態遷移図生成部14より供給される情報に基づいて、カレントステートが指定されているか否かを判定する。ステップS144において、例えば、カレントステートが指定されていると判定された場合、ステップS145において、状態動作表示制御部52は、カレントステートとして設定されている、状態動作実行部16により実行されている動作内容に基づいて動作表示画面111を表示し、その処理は、ステップS141に戻る。
ステップS144において、カレントステートが指定されていない場合、ステップS145の処理は、スキップされる。
以上の処理により、図2で示されるような、動作表示画面111、状態遷移図表示画面112、実行済みイベントリスト表示画面113、次実行イベントリスト表示画面114、再生コントローラ表示画面115からなる表示画面101が表示部18に表示される。
以上、図4の状態遷移プログラム編集処理、図5のステート編集処理、図6のトランジション編集処理、図7のスクリプト編集処理、図8の状態遷移プログラム実行処理、図9の状態遷移図生成処理、図10の表示処理により以下のような動作が実現される。
すなわち、図11で示されるように、ポインタ150が、ステート枠134上に存在し、カレントステートとして設定されている場合、カレントステートである状態Cのステート枠134は、他のステート枠とは異なる色で表示され、動作表示画面111には、状態Cの動作状態(五重塔のようなもの)が表示されているものとする。このとき、ポインタ150を移動させて、図12で示されるように、ステート枠133上に存在させると、状態Cがカレントステートとして設定されいるため、ステート枠133は他のステート枠とは表示色が異なっている。また、動作表示画面111には、カレントステートである状態Cにおける処理結果が再生されることが示されている。
以上においては、ステート毎にイベントを入力し、状態を遷移させ、必要に応じて再びイベントを入力することで、他の状態に遷移させることができる状態となるが、第1の状態から第2の状態に至るまでに必要とされるイベントをイベントリストとして記憶させ、必要に応じて、このイベントリストを読み出し、イベントリストに基づいてイベントを発生させ、第1の状態から第2の状態に遷移させることができる。
そこで、次に、図13のフローチャートを参照して、上述したイベントリスト23aを生成するイベントリスト生成処理について説明する。
ステップS161において、イベントコントローラ22は、再生コントローラ表示画面115の記録ボタン115fが、操作部11により操作され、押下されたか否かを判定し、操作されたと判定されるまで、その処理を繰り返す。ステップS161において、例えば、操作部11が操作されて、記録ボタン115fが押下された場合、その処理は、ステップS162に進む。
ステップS162において、イベントコントローラ22は、イベント記録部21を制御して、イベント検出部19により検出されたイベントを、イベントリスト23aとしてイベント記憶部23に記憶させる動作モードに切り替えさせる。
ステップS163において、イベント記録部21は、イベント検出部19よりイベントが検出されたことを示す信号が供給されてきているか否かを判定する。ステップS163において、例えば、操作部11が操作されて、所定のイベントが発生し、イベント検出部19が、そのイベントを検出すると、イベント検出部19より状態遷移エンジン15に供給されるイベントの検出信号と同様の信号が、イベント記録部23に供給されることになるため、イベントが検出されたと判定され、その処理は、ステップS164に進む。
ステップS164において、イベント記録部21は、自らのRTC21aの発生時刻に基づいて、イベント記憶部23にイベントリスト23aとして時刻の情報を記録する。ここでいう時刻とは、例えば、動作モードが、発生したイベントを記録する動作モードに切替えられたタイミングを基準とする時刻である。
ステップS165において、イベント記録部21は、イベント検出部19より供給されてきた信号に基づいて、イベント記憶部23にイベントリスト23aとしてイベントタイプの情報を記録する。
ステップS166において、イベント記録部21は、イベント検出部19より供給されてきた信号に基づいて、イベント記憶部23にイベントリスト23aとしてイベントパラメータの情報を記録する。
ステップS167において、イベント記録部21は、状態遷移エンジン15から状態動作実行部16に供給される状態を示す信号に基づいて、イベント記憶部23にイベントリスト23aとして、遷移前の状態の情報を記録する。
ステップS168において、イベント記録部21は、状態遷移エンジン15から状態動作実行部16に供給される状態を示す信号に基づいて、イベント記憶部23にイベントリスト23aとして、遷移後の状態の情報を記録する。
ステップS169において、イベントコントローラ22は、再生コントローラ表示画面115の記録ボタン115fが、操作部11により操作され、再度押下されたか否かを判定し、操作されたと判定されない場合、その処理は、ステップS163に戻る。また、ステップS163において、イベントが検出されていないと判定された場合、ステップS164乃至S168の処理はスキップされる。
さらに、ステップS169において、記録ボタン115fが再度押下されたと判定された場合、ステップS170において、イベントコントローラ22は、イベント記録部21を制御して、イベント検出部19により検出されたイベントを、イベントリスト23aとしてイベント記憶部23に記憶しない動作モードに切り替えさせ、その処理は、終了する。
この動作により、例えば、図14で示されるようなイベントリスト23aが記録される。図14においては、左から時刻、イベントタイプ、イベントパラメータ、遷移前の状態(From)、および遷移後の状態(To)が記録されている。図14において、時刻の情報は、上から「1.0」、「2.0」、「3.5」、および「4.0」が記録されている。また、イベントタイプの情報は、上から「電源ボタン」、「メニュボタン」、「下ボタン」、および「決定ボタン」が記録されている。さらに、イベントパラメータの情報は、上から「LONG_PUSH」、「PUSH」、「PUSH」、および「PUSH」が記録されている。また、遷移前の状態の情報は、上から「INIT」、「POWER_ON」、「MENU」、および「MENU_CAMERA」が記録されている。さらに、遷移後の状態の情報は、上から「POWER_ON」、「MENU」、「MENU_CAMERA」、および「FUNC_CAMERA」が記録されている。
すなわち、図14においては、時刻「1.0」のタイミングで、電源ボタンが長押し(LONG_PUSH)されることにより、状態が初期状態(INIT)から電源オン状態(POWER_ON)状態に遷移することが示されている。また、時刻「2.0」のタイミングで、メニュボタンが押下(PUSH)されることにより、状態が電源オン状態(POWER_ON)からメニュ画面が表示される状態(MENU)状態に遷移することが示されている。さらに、時刻「3.5」のタイミングで、下ボタンが押下(PUSH)されることにより、状態がメニュ画面が表示される状態(MENU)からカメラのメニュ画面が表示される状態(MENU_CAMERA)状態に遷移することが示されている。また、時刻「4.0」のタイミングで、決定ボタンが押下(PUSH)されることにより、状態がカメラのメニュ画面が表示される状態(MENU_CAMERA)からカメラの機能が表示される状態(FUNC_CAMERA)に遷移することが示されている。
以上の処理により、発生したイベントの情報がイベントリスト23aとして記録されることになるので、上述した処理により生成されたステートデータに基づいた状態遷移を、後述するイベントリストの再生処理により再現させることが可能となる。また、所定の動作で、エラーが発生するような場合、以上のような処理により、エラーが発生するイベントの発生パターンを正確に認識することが可能となり、バグの発生個所をより正確に発見することが可能となる。
次に、図15のフローチャートを参照して、上述の処理により生成されたイベントリスト23aを編集するイベントリスト編集処理について説明する。
ステップS181において、イベント編集部20は、操作部11が操作されることにより、イベントリスト23aの編集が指示されたか否かを判定し、編集が指示されるまで、その処理を繰り返す。ステップS181において、例えば、編集が指示された場合、その処理は、ステップS182に進む。尚、ここで、イベントリスト23aの編集が指示される場合、いずれか複数にイベントリスト23aが存在するとき、イベントリスト23aを特定する情報も含めた編集の指示があるものとする。
ステップS182において、イベント編集部20は、編集が指示されたイベントリスト23aに対して、イベントを新たに追加するか否かを判定する。ステップS182において、例えば、イベントが新たに追加される場合、ステップS183において、イベント記憶部23のイベントリスト23aに新たに追加されるイベントの時刻を記録する。
ステップS184において、イベント編集部20は、イベント記憶部23のイベントリスト23aに新たに追加されるイベントのイベントタイプの情報を記録する。
ステップS185において、イベント編集部20は、イベント検出部19より供給されてきた信号に基づいて、イベント記憶部23にイベントリスト23aとしてイベントパラメータの情報を記録する。
ステップS186において、イベント編集部20は、操作部11が操作されて、編集の終了が指示されたか否かを判定し、終了が指示された場合、その処理は終了し、終了が指示されていない場合、その処理は、ステップS182に戻る。
ステップS182において、イベントの追加ではないと判定された場合、ステップS187において、イベント編集部20は、イベントの削除が指示されているか否かを判定する。例えば、操作部11が操作されて、指定のイベントの削除が指示されていた場合、ステップS188において、イベント編集部20は、対応するイベントの時刻、イベントタイプ、イベントパラメータ、遷移前の状態、および遷移後の状態の情報を削除する。
一方、ステップS187において、イベントの削除ではないと判定された場合、編集処理は、追加、削除、または、変更のいずれかであるので、ここでは、追加でも、削除でもないため、変更であると判定され、その処理は、ステップS189に進む。
ステップS189において、イベント編集部20は、対応するイベントの時刻、イベントタイプ、イベントパラメータ、遷移前の状態、および遷移後の状態の情報を、編集内容に応じて変更する。
以上の処理により、例えば、図14のイベントリスト23aを図16で示されるようなイベントリスト23aに編集することが可能となる。尚、図16においては、時刻「3.5」におけるイベントタイプが「下ボタン」から「上ボタン」に変更されている。この際、遷移前の状態と、遷移後の状態とについては、不明となるため空欄にされているが、操作部11が操作されることにより、入力できる構成としても良い。また、変更のあったイベント以降のイベントについては、遷移前の状態と、遷移後の状態とが必ずしも同一ではないため、削除されるようにしても良い。図16においては、変更のあったイベント以降のイベントについては、遷移前の状態と、遷移後の状態とが削除されている。
以上の処理により、自由にイベントの発生パターンを編集することが可能となる。このため、例えば、同一の位置にポインタを配置した状態で、1秒間に10回操作ボタンをクリックするといった、通常では再現が困難なイベントを発生させることも可能となり、人為的に偶発的に発生してしまうようなイベントの発生パターンによりエラーが発生するようなバグなどをも正確に発見することが可能となり、より安定したユーザインタフェースを開発することが可能となる。
次に、図17のフローチャートを参照して、イベントリスト23aをXMLなどの外部ファイルとしてフォーマット変換するイベントリスト変換処理について説明する。
ステップS201において、イベントコントローラ22は、操作部11が操作されて、イベント記憶部23に記憶された、いずれかのイベントリスト23aが指定され、再生コントローラ表示画面115内の変換ボタン115eが押下されることにより、指定されたイベントリスト23aのフォーマット変換が指示されたか否かを判定し、指示されるまで、その処理を繰り返す。
ステップS201において、変換ボタン115eが押下されたと判定された場合、ステップS202において、イベントコントローラ22は、イベント記録部21に指定されたイベントリスト23aをXMLフォーマットに変換するように指示する。これにより、イベント記録部21の変換部21bは、指定されたイベントリスト23aの時刻情報を全て読み出す。ステップS203において、変換部21bは、指定されたイベントリスト23aのイベントタイプおよびイベントパターンを全て読み出す。
ステップS204において、変換部21bは、読み出した時刻情報と共に、対応付けて、イベントタイプおよびイベントパターンをXMLに変換する。
ステップS205において、変換部21bは、XMLに変換したイベントリスト23a’をイベント記憶部23に記憶させる。XMLに変換されたイベントリスト23a’は、例えば、図18で示されるように、図14で示される、時刻、イベントタイプ、およびイベントパラメータの情報より構成されるイベントリスト23a’である。結果として、パーソナルコンピュータなどの汎用の情報処理装置でも認識できる形式で抽出することが可能となる。
次に、図19のフローチャートを参照して、上述したイベントリスト生成処理により生成されたイベントリスト23a、または、イベントリスト編集処理により編集されたイベントリスト23aに基づいたイベントリスト再生処理を説明する。
ステップS221において、イベントコントローラ22は、操作部11が操作されて再生ボタン115bが操作されたか否かを判定し、操作されるまで、その処理を繰り返す。ステップS221において、再生ボタン115bが操作されたと判定された場合、ステップS222において、イベントコントローラ22は、イベント記憶部23の所定のイベントリスト23aを読み出し、RTC22aにより発生される時刻に基づいて、所定の時間が経過したか否かを判定し、経過するまでその処理を繰り返す。この所定の時間については、例えば、状態遷移プログラムを実行させる上で最小単位となる処理時間よりも短い処理時間とすることが望ましい。
ステップS222において、所定の時間が経過したと判定された場合、ステップS223において、イベントコントローラ22は、イベントリスト23aを参照して、所定の時間が経過したタイミングに対応する時刻でイベントの発生が記録されているか否かを判定する。例えば、図14で示されるイベントリスト23aであった場合、所定の時間が経過した時刻が「0.1」であるとすると、最初の処理の場合、「1.0」に至るまではイベントが存在しないので、イベントはないと判定され、その処理は、ステップS222に戻る。すなわち、所定の時間が経過し、その時刻でイベントがあると判定されるまで、ステップS222,S223の処理が繰り返されることになる。
ステップS223において、例えば、所定の時間が経過したタイミングにおける時刻「1.0」の場合、電源ボタンが長押しされるというイベントがあるので、イベントがあると判定され、その処理は、ステップS224に進む。
ステップS224において、イベントコントローラ22は、イベントタイプおよびイベントパラメータを読み出す。すなわち、今の場合、イベントタイプとして「電源ボタン」が読み出され、イベントパラメータとして「LONG_PUSH(長押し)」が読み出されることになる。
ステップS225において、イベントコントローラ22は、読み出したイベントタイプおよびイベントパラメータに基づいて、対応するイベントの発生を示す信号を発生し、イベント検出部19に供給する。この結果、イベント検出部19は、イベントコントローラ22により擬似的に発生されたイベントの発生を示す信号に基づいて、イベントを検出する。
ステップS226において、イベントコントローラ22は、再生ボタン115bが押下されたか、または、イベントリスト23aに記録されているすべてのイベントが終了したか否かを判定し、再生ボタン115bが押下されておらず、かつ、イベントリスト23aに記録されているすべてのイベントが終了していない場合、その処理は、ステップS222に戻る。すなわち、再生ボタン115bが押下されたか、または、イベントリスト23aに記録されているすべてのイベントが終了するまで、ステップS222乃至S226の処理が繰り返される。
そして、ステップS226において、再生ボタン115bが押下されたか、または、イベントリスト23aに記録されているすべてのイベントが終了した場合、その処理は終了する。
以上の処理により、イベントリスト23aに記録されたイベントタイプとイベントパラメータに基づいて指定された少なくとも1以上のイベントが、所定の時刻に、順次発生されることになる。結果として、イベントリスト23aに記録された複数のイベントを、同一のパターンで再現性よく繰り返し発生させることが可能となる。
すなわち、イベントコントローラ22を用いずに、操作部11などを操作してイベントを発生させていた場合、ステップ再生させるとき、図20で示されるように、タイミングP1において、操作部11が操作されてステートデータに基づいた1フレーム分の処理を実行させるように再生ボタン115bが操作されると、イベント検出部19は、これに基づいて、各種のイベントの検知を開始し、例えば、タイミングI1乃至I3でイベントを検出して、状態遷移エンジン15に供給することにより、期間E11において状態遷移エンジン15がステートデータに基づいて、状態遷移処理を実行し、期間E12において、状態動作実行部16が実際の状態動作を実行することで、状態動作表示制御部52により動作表示画面111に動作結果の表示画面が表示される。
同様にして、タイミングP2において、操作部11が操作されてステートデータに基づいた1フレーム分の処理を実行させるように再生ボタン115bが操作されると、イベント検出部19は、これに基づいて、各種のイベントの検知を開始し、例えば、タイミングI4,I5でイベントを検出して、状態遷移エンジン15に供給することにより、期間E21において状態遷移エンジン15がステートデータに基づいて、状態遷移処理を実行し、期間E22において、状態動作実行部16が実際の状態動作を実行することで、状態動作表示制御部52により動作表示画面111に動作結果の表示画面が表示される。
従って、上述したようなイベントコントローラ22を用いずに状態動作プログラムを実行させて、表示画面を表示させようとするとき、操作部11などのイベント検出部19がイベントを検出するまで、状態遷移プログラムの動作が決定されないことになるため、複数のイベントを同一のパターンで発生させて、繰り返して状態遷移プログラムを実行させるにあたり、イベントの発生パターンの再現性が低く、イベントの発生パターンに応じた動作の比較や、エラーの発生状況の把握が困難であった。
尚、図20においては、上部のタイミングチャートは、再生コントローラ115における操作タイミングを示し、下部のタイミングチャートは、イベント検出部19によりイベントが検出されるタイミングを示している。
一方、イベントコントローラ22を用いた場合、図21で示されるように、タイミングP1において、操作部11が操作されてステートデータに基づいた1フレーム分の処理を実行させるように再生ボタン115bが操作されると、まず、タイミングC11でイベントコントローラ22が所定の時間間隔でイベントリスト23aにおけるイベントの有無の監視を開始し、次いで、タイミングEI11で、イベントの発生を示す情報をイベント検出部19に供給すると、タイミングC12でイベント検出部19が、各種のイベントの検知を開始する。
これ以降においては、イベントコントローラ22が、イベントリスト23aに記録された情報に基づいて、例えば、タイミングI1’乃至I3’でイベントを発生し、これをイベント検出部19が検出して、状態遷移エンジン15に供給することにより、期間E11において状態遷移エンジン15がステートデータに基づいて、状態遷移処理を実行し、期間E12において、状態動作実行部16が実際の状態動作を実行することで、状態動作表示制御部52により動作表示画面111に動作結果の表示画面が表示される。
同様にして、タイミングP2において、操作部11が操作されてステートデータに基づいた1フレーム分の処理を実行させるように再生ボタン115bが操作されると、まず、タイミングC21でイベントコントローラ22が所定の時間間隔でイベントリスト23aにおけるイベントの有無の監視を開始し、次いで、タイミングEI21で、イベントの発生を示す情報をイベント検出部19に供給すると、タイミングC22でイベント検出部19が、各種のイベントの検知を開始する。
これ以降においては、イベントコントローラ22が、イベントリスト23aに記録された情報に基づいて、例えば、タイミングI4’,I5’でイベントを発生し、これをイベント検出部19が検出して、状態遷移エンジン15に供給することにより、期間E21において状態遷移エンジン15がステートデータに基づいて、状態遷移処理を実行し、期間E22において、状態動作実行部16が実際の状態動作を実行することで、状態動作表示制御部52により動作表示画面111に動作結果の表示画面が表示される。
尚、図21においては、上部のタイミングチャートは、再生コントローラ115における操作タイミングを示し、中部のタイミングチャートは、イベント検出部19によりイベントが検出されるタイミングを示し、下部のタイミングチャートは、イベントコントローラ22における動作タイミングを示している。
このようにイベントコントローラ22は、予めイベントリスト23aに記録されたイベントを記録されたタイミングで発生するので、状態遷移エンジン15は、再現性の高い動作を繰り返し実現することが可能となるため、イベントの発生パターンに応じた動作の比較や、エラーの発生状況の把握を容易にすることが可能となる。結果として、バグの発生原因を特定し、迅速に状態遷移プログラムの開発を進めることが可能となる。
次に、図22のフローチャートを参照して、イベントリスト早送り再生処理について説明する。
ステップS241において、イベントコントローラ22は、操作部11が操作されて早送りボタン115cが操作されたか否かを判定し、操作されるまで、その処理を繰り返す。ステップS241において、早送りボタン115cが操作されたと判定された場合、ステップS242において、イベントコントローラ22は、イベント記憶部23の所定のイベントリスト23aを読み出し、次のイベントが記録されているか否かを判定する。ステップS242においては、次のイベントがあると判定されるまで、同様の処理が繰り返されることになる。ステップS242において、例えば、図14で示されるように、最初の処理であるとき、時刻「1.0」のイベントがあるので、イベントがあると判定され、その処理はステップS243に進む。
ステップS243において、イベントコントローラ22は、イベントタイプおよびイベントパラメータを読み出す。
ステップS244において、イベントコントローラ22は、読み出したイベントタイプおよびイベントパラメータに基づいて、対応するイベントの発生を示す信号を発生し、イベント検出部19に供給する。
ステップS245において、イベントコントローラ22は、再生ボタン115bが押下されたか(再生の停止が指示されたか)、または、イベントリスト23aに記録されているすべてのイベントが終了したか否かを判定し、再生ボタン115bが押下されておらず、かつ、イベントリスト23aに記録されているすべてのイベントが終了していない場合、その処理は、ステップS242に戻る。すなわち、再生ボタン115bが押下されたか、または、イベントリスト23aに記録されているすべてのイベントが終了するまで、ステップS242乃至S245の処理が繰り返される。
そして、ステップS245において、再生ボタン115bが押下されたか、または、イベントリスト23aに記録されているすべてのイベントが終了した場合、その処理は終了する。
すなわち、図23で示されるように、タイミングV1において、操作部11が操作されてステートデータに基づいた処理を実行させるように再生ボタン115bが操作されると、まず、タイミングC41でイベントコントローラ22がイベントリスト23aにおけるイベントの有無の監視を開始し、次いで、タイミングEI11で、イベントの発生を示す情報をイベント検出部19に供給すると、タイミングC42でイベント検出部19が、各種のイベントの検知を開始する。
これ以降においては、イベントコントローラ22が、イベントリスト23aに記録された情報に基づいて、連続的にイベントを発生し、これをイベント検出部19が検出して、状態遷移エンジン15に供給することにより、期間E11’において状態遷移エンジン15がステートデータに基づいて、状態遷移処理を実行し、状態動作実行部16が実際の状態動作を実行する。このとき、状態動作表示制御部52は、動作表示画面111に動作結果の表示画面を表示せず、また、各イベントの発生時刻を無視して、所定の時間間隔で連続的にイベントが発生することになるので、フレームだけを連続的に早送りすることが可能となる。
さらに、連続的に、タイミングC51でイベントコントローラ22がイベントリスト23aにおけるイベントの有無の監視を開始し、次いで、タイミングEI12で、イベントの発生を示す情報をイベント検出部19に供給すると、タイミングC52でイベント検出部19が、各種のイベントの検知を開始して、状態遷移エンジン15に供給することにより、期間E21’において状態遷移エンジン15がステートデータに基づいて、状態遷移処理を実行する。
以上の処理により、イベントリスト23aに記録されたイベントが、発生するための時刻の情報と無関係に連続的に発生されることになるため、状態遷移プログラムの動作が、あたかも早送り処理されることになるため、所望とするイベントを発生させようとするタイミングまで高速で進めることが可能となる。
次に、図24のフローチャートを参照して、イベントリストの巻き戻し再生処理について説明する。尚、図24のフローチャートにおけるステップS265乃至S269の処理については、図19のフローチャートを参照して説明したステップS222乃至S226と同様であるので、その説明は省略する。
ステップS261において、イベントコントローラ22は、操作部11が操作されて巻き戻しボタン115aが操作されたか否かを判定し、操作されるまで、その処理を繰り返す。ステップS261において、巻き戻しボタン115aが操作されたと判定された場合、ステップS262において、イベントコントローラ22は、表示制御部17を制御して、表示部18に、例えば、図25で示されるような、巻き戻し位置設定用のダイアログボックス201を表示させる。図25においては、上部に時刻設定チェックボックス211が設けられており、その右側に時刻設定欄221が設けられている。また、図25の下部においては、イベント指定チェックボックス212が設けられており、その右側にイベント選択欄222が設けられている。尚、イベント指定チェックボックス212に表示されている時刻01におけるイベントE1、時刻03におけるイベントE2、時刻04におけるイベントE3、時刻07におけるイベントE4、および時刻09におけるイベントE5は、実行済みイベントリスト表示画面114に記録されているイベントと同様のものであり、図示せぬポインタにより選択することができる。
ステップS263において、イベントコントローラ22は、時刻設定チェックボックス211がチェックされ、時刻設定欄221に設定時刻が入力されているか否かに基づいて、巻き戻し再生を開始するタイミングの時刻が指定されているか否かを判定する。ステップS263において、例えば、時刻設定チェックボックス211がチェックされ、時刻設定欄221に設定時刻が入力されている場合、時刻指定であると判定され、その処理は、ステップS264に進む。
ステップS264において、イベントコントローラ22は、RTC22aにより発生する時刻情報を指定された時刻に設定する。換言すれば、イベントコントローラ22は、今現在よりも、前のタイミングにおける、指定された時刻に設定する。すなわち、図26で示されるように、現在時刻が、「Now」で示される「12」である場合、設定時刻が「11」であったとき、イベントコントローラ22は、RTC22aにより発生する時刻を、図中のタイミングB2に相当する「11」に戻して設定する。尚、図26においては、時刻「1」において、イベントE1が発生し、時刻「3」において、イベントE2が発生し、時刻「4」において、イベントE3が発生し、時刻「7」において、イベントE4が発生し、時刻「9」において、イベントE5が発生することが示されている。
この処理によりRTC22aにより発生される時刻が「12」から「11」に戻されることになる。すなわち、以上の処理により、所望とする時刻にまで時刻設定を遡らせる事により、一度発生したイベントを再度発生させることができ、結果として、状態遷移プログラムが、巻き戻された状態から再び実行されることになる。
また、ステップS263において、時刻指定ではないと判定された場合、すなわち、イベント指定チェックボックス212がチェックされ、イベント選択欄222のいずれかのイベントが選択された場合、ステップS270において、イベントコントローラ22は、RTC22aにより発生する時刻を選択されたイベントの発生時刻に設定する。すなわち、例えば、イベント指定チェックボックス212がチェックされ、イベント選択欄222のイベントE5に対応するイベントが選択された場合、イベントコントローラ22は、RTC22aの発生時刻を「12」から、タイミングB1に相当する、選択されたイベントE5の発生時刻である「9」に戻して設定する。従って、今の場合、直前のイベントであるイベントE5が発生することになる。
以上の処理により、所望とするイベントの発生した時刻までRTC22aの発生時刻を遡らせて、状態遷移プログラムを実行させることが可能となる。
従って、いずれにおいても、以上の処理により、所望とする時刻、またはイベントの発生した時刻にまで時刻設定を遡らせる事により、一度発生したイベントを再度発生させることが可能となる。
次に、図27のフローチャートを参照して、イベントリストテスト再生処理について説明する。
ステップS281において、イベントコントローラ22は、操作部11が操作されて、所定のイベントリスト23aが設定されて、かつ、テスト再生ボタン115dが操作されたか否かを判定し、操作されたと判定されるまで、その処理を繰り返す。ステップS281において、テスト再生ボタン115dが操作されたと判定された場合、ステップS282において、イベントコントローラ22は、イベント記憶部23の所定のイベントリスト23aを読み出し、RTC22aにより発生される時刻に基づいて、所定の時間が経過したか否かを判定し、経過するまでその処理を繰り返す。
ステップS282において、所定の時間が経過したと判定された場合、ステップS283において、イベントコントローラ22は、イベントリスト23aを参照して、所定の時間が経過したタイミングにおける時刻でイベントの発生が記録されているか否かを判定し、イベントが存在しない場合、その処理は、ステップS282に戻る。すなわち、所定の時間が経過した時刻において、イベントがあると判定されるまで、ステップS282,S283の処理が繰り返されることになる。
ステップS283において、イベントがあると判定された場合、その処理は、ステップS284に進む。
ステップS284において、状態読出部24は、イベントコントローラ22よりイベント検出部19に供給されているイベントの情報に基づいて、供給されたイベントにより遷移する前の状態の情報をイベントリスト23aより読み出し、テスト結果比較部25に供給する。テスト結果比較部25は、状態読出部24より供給されてくるイベントリスト23aに記録されている、今現在の状態、すなわち、イベントが発生する前の状態と、状態遷移エンジン15より供給される、実際に状態遷移プログラムを実行させた場合における現在の状態、すなわち、イベント発生前の状態とを比較し、イベント前の状態が適正であるか否かを判定する。
ステップS284において、例えば、状態読出部24より供給されてくるイベントリスト23aに記録されている今現在の状態と、状態遷移エンジン15より供給される、実際に状態遷移プログラムを実行させた場合におけるイベント発生前の状態とが一致しており、適正であると判定された場合、ステップS285において、イベントコントローラ22は、イベントタイプおよびイベントパラメータを読み出し、ステップS286において、読み出したイベントタイプおよびイベントパラメータに基づいて、対応するイベントの発生を示す信号を発生し、イベント検出部19に供給する。
ステップS287において、状態読出部24は、イベントコントローラ22よりイベント検出部19に供給されているイベントの情報に基づいて、供給されたイベントにより遷移した後の状態の情報をイベントリスト23aより読み出し、テスト結果比較部25に供給する。テスト結果比較部25は、状態読出部24より供給されてくるイベントリスト23aに記録されている、今現在の状態、すなわち、イベントが発生した後の状態と、状態遷移エンジン15より供給される、実際に状態遷移プログラムを実行させた場合における現在の状態、すなわち、イベント発生後の状態とを比較し、イベント後の状態が適正であるか否かを判定する。
ステップS287において、例えば、状態読出部24より供給されてくるイベントリスト23aに記録されている今現在の状態と、状態遷移エンジン15より供給される、実際に状態遷移プログラムを実行させた場合におけるイベント発生後の状態とが一致しており、適正であると判定された場合、ステップS288において、イベントコントローラ22は、テスト再生ボタン115dが押下されたか、または、イベントリスト23aに記録されているすべてのイベントが終了したか否かを判定し、テスト再生ボタン115dが押下されておらず、かつ、イベントリスト23aに記録されているすべてのイベントが終了していない場合、その処理は、ステップS282に戻る。すなわち、テスト再生ボタン115dが押下されたか、または、イベントリスト23aに記録されているすべてのイベントが終了するまで、ステップS282乃至S288の処理が繰り返される。
そして、ステップS288において、テスト再生ボタン115dが押下されたか、または、イベントリスト23aに記録されているすべてのイベントが終了した場合、その処理は終了する。
一方、ステップS284において、上述したイベントリスト編集処理により、例えば、図14のイベントリスト23aが、図28で示されるイベントリスト23aで示されるように、イベントタイプが「下ボタン」から「上ボタン」に切替えられたのにもかかわらず、時刻「4.0」におけるイベントのイベント発生前の状態と、イベント発生後の状態とがいずれもそのままであるような場合、時刻「3.5」における「上ボタン」が押下されるというイベントにより、実際に状態遷移エンジン15が状態遷移プログラムを実行することにより、「MENU_VIDEO」に遷移していたとき、時刻「4.0」の「決定ボタン」が押下されるというイベントは、イベント発生前の状態として「MENU_CAMERA」が設定されているため、イベント前の状態が適正ではないと判定された場合、ステップS289において、テスト結果比較部25は、イベント発生前の状態に矛盾が発生していることを表示制御部17に通知する。テスト結果表示制御部54は、この通知に基づいて、表示部18にイベントリスト23aにおけるイベント発生前の状態の記述に矛盾があり、イベントリスト23aに基づいた動作が破綻することを警告することを示す画面を表示し、その処理は終了する。
また、ステップS287において、上述したイベントリスト編集処理により、例えば、図14のイベントリスト23aが、図28で示されるイベントリスト23aで示されるように、イベントタイプが「下ボタン」から「上ボタン」に切替えられたのにもかかわらず、時刻「4.0」におけるイベントのイベント発生前の状態と、イベント発生後の状態とがいずれもそのままであるような場合、時刻「3.5」における「上ボタン」が押下されるというイベントにより、実際に状態遷移エンジン15が状態遷移プログラムを実行することにより、「MENU_VIDEO」に遷移していたとき、時刻「3.5」の「上ボタン」が押下されるというイベントは、イベント発生後の状態として「MENU_CAMERA」が設定されているため、イベント後の状態が適正ではないと判定された場合、ステップS290において、テスト結果比較部25は、イベント発生後の状態に矛盾が発生していることを表示制御部17に通知する。テスト結果表示制御部54は、この通知に基づいて、表示部18にイベントリスト23aにおけるイベント発生後の状態の記述に矛盾があり、イベントリスト23aに基づいた動作が破綻することを警告することを示す画面を表示し、その処理は終了する。
以上の処理により、イベントリスト23aにおけるイベント発生前の状態、または、イベント発生後の状態と、イベント発生前、または、イベント発生後に状態遷移プログラムが実際に実行されることにより遷移される状態とが一致しない場合、イベントリスト23aの情報に誤りがあり、実行中に破綻することがあることが通知されることになるので、エラーの発生個所を予め容易に特定することが可能となるため、状態遷移プログラムを容易に、かつ、迅速に進めることが可能となる。
本発明によれば、各状態におけるイベントを入力するタイミングや順序などをイベントリストとして記憶させることで、高い再現性を実現して上述したようなバグの発生の有無を正しく検証することが可能になると共に、発生させること自体が困難なイベントをも編集により容易に実現させるようにし、正確なバグ除去を実現できるようにすることで、UIプログラムの開発効率を向上させることが可能となる。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図29は、図1の状態遷移プログラム編集装置1の電気的な内部構成をソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのCPU501は、パーソナルコンピュータの全体の動作を制御する。また、CPU501は、バス504および入出力インタフェース505を介してユーザからキーボードやマウスなどからなる入力部506から指令が入力されると、それに対応してROM(Read Only Memory)502に格納されているプログラムを実行する。あるいはまた、CPU501は、ドライブ510に接続された磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリを含むリムーバルメディア521から読み出され、記憶部508にインストールされたプログラムを、RAM(Random Access Memory)503にロードして実行する。これにより、上述した図1の状態遷移プログラム編集装置1の機能が、ソフトウェアにより実現されている。さらに、CPU501は、通信部509を制御して、外部と通信し、データの授受を実行する。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図29に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスクを含む)、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア521、または、プログラムが一時的もしくは永続的に格納されるROM502や、記憶部508を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部509を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
本発明を適用した状態遷移プログラム編集装置の一実施の形態の構成を示す図である。 表示画面の構成例を示す図である。 ステートデータ格納部に格納されるステート情報のデータ構造を示す図である。 図1の状態遷移プログラム編集装置による状態遷移プログラム編集処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるステート編集処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるトランジション編集処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるスクリプト編集処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置による状態遷移プログラム実行処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置による状態遷移図生成処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置による表示処理を説明するフローチャートである。 表示処理により表示される表示例を示す図である。 表示処理により表示される表示例を示す図である。 図1の状態遷移プログラム編集装置によるイベントリスト生成処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるイベントリスト生成処理を説明する図である。 図1の状態遷移プログラム編集装置によるイベントリスト編集処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるイベントリスト編集処理を説明する図である。 図1の状態遷移プログラム編集装置によるイベントリスト変換処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるイベントリスト変換処理を説明する図である。 図1の状態遷移プログラム編集装置によるイベントリスト再生処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるイベントリスト再生処理を説明する図である。 図1の状態遷移プログラム編集装置によるイベントリスト再生処理を説明する図である。 図1の状態遷移プログラム編集装置によるイベントリスト早送り再生処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるイベントリスト早送り再生処理を説明する図である。 図1の状態遷移プログラム編集装置によるイベントリスト巻き戻し再生処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるイベントリスト巻き戻し再生処理を説明する図である。 図1の状態遷移プログラム編集装置によるイベントリスト巻き戻し再生処理を説明する図である。 図1の状態遷移プログラム編集装置によるイベントリストテスト再生処理を説明するフローチャートである。 図1の状態遷移プログラム編集装置によるイベントリストテスト再生処理を説明する図である。 媒体を説明する図である。
符号の説明
11 操作部, 12 編集部, 13 ステートデータ格納部, 14 状態遷移図生成部, 15 状態遷移エンジン, 16 状態動作実行部, 17 表示制御部, 18 表示部, 19 イベント検出部, 20 イベント編集部, 21 イベント記録部, 21a RTC, 21b 変換部, 22 イベントコントローラ, 22a RTC, 23 イベント記憶部, 23a,23a−1乃至23a−n イベントリスト, 24 状態読出部, 25 テスト結果比較部, 31 ステート編集部, 32 トランジション編集部, 33 スクリプト編集部, 41 ステート枠生成部, 42 トランジション生成部, 51 状態遷移図表示制御部, 52 状態動作表示制御部, 53 イベントリスト表示制御部, 54 テスト結果表示制御部, 55 再生コントローラ表示制御部

Claims (13)

  1. それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、
    前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、
    前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、
    前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、
    前記イベントを受け付ける受付ステップと、
    前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、
    前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップと
    を含む情報処理方法。
  2. 前記イベントは、イベントタイプおよびイベントパラメータにより特定される
    請求項1に記載の情報処理方法。
  3. 前記イベント記憶ステップの処理は、前記受付ステップの処理で受け付けられたイベント毎に、前記イベントを受け付けたタイミング、前記イベントの受付前の状態、および前記イベントの受付後の状態を含む情報を対応付けてイベントリストとして記憶する
    請求項1に記載の情報処理方法。
  4. 前記編集ステップの処理は、前記イベント記憶ステップの処理により記憶されるイベントリストのうち前記イベントのみを編集する
    請求項3に記載の情報処理方法。
  5. 前記受付ステップの処理は、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを受け付ける
    請求項1に記載の情報処理方法。
  6. 前記受付ステップの処理は、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを受け付けた順序で、連続的に受け付ける
    請求項1に記載の情報処理方法。
  7. 前記イベント記憶ステップの処理は、前記受付ステップの処理で受け付けられたイベント毎に、前記イベントを受け付けたタイミングを含む情報を対応付けてイベントリストとして記憶し、
    前記受付ステップの処理は、前記イベント記憶ステップの処理により記憶されているイベントリストのイベントを所定のタイミングから受け付ける
    請求項1に記載の情報処理方法。
  8. 前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付ける場合、前記受付ステップの処理によりイベントが受け付けられた時点での状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付前の状態とを比較する比較ステップとをさらに含む
    請求項1に記載の情報処理方法。
  9. 前記受付ステップの処理が、前記イベント記憶ステップの処理で記憶されたイベントリストのイベントを受け付けるとき、前記受付ステップの処理により受け付けられたイベントにより遷移した状態と、前記イベント記憶ステップ処理によりイベントに対応付けて記憶されているイベントの受付後の状態とを比較する比較ステップとをさらに含む
    請求項1に記載の情報処理方法。
  10. 前記比較ステップの処理により比較結果が一致しない場合、イベント記憶ステップの処理により記憶されているイベントリストのイベントに矛盾があることを警告する警告ステップをさらに含む
    請求項8または9に記載の情報処理方法。
  11. それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成手段と、
    前記生成手段により生成された状態遷移図を表示する表示手段と、
    前記表示手段により表示された状態遷移図を操作する操作手段と、
    前記操作手段により操作内容に応じて、前記状態遷移情報を更新する更新手段と、
    前記イベントを受け付ける受付手段と、
    前記受付手段により受け付けたイベントをイベントリストとして記憶するイベント記憶手段と、
    前記イベント記憶手段により記憶されたイベントリストを編集する編集手段と
    を含む情報処理装置。
  12. それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、
    前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、
    前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、
    前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、
    前記イベントを受け付ける受付ステップと、
    前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、
    前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップと
    を含むコンピュータが読み取り可能なプログラムが記録されている記録媒体。
  13. それぞれの状態における動作、前記それぞれの状態における遷移時のイベント、および前記イベントによりどの他の前記状態に遷移するかを示す遷移方向の情報を含む状態遷移情報に基づいて、状態遷移図を生成する生成ステップと、
    前記生成ステップの処理により生成された状態遷移図を表示する表示ステップと、
    前記表示ステップの処理により表示された状態遷移図を操作する操作ステップと、
    前記操作ステップの処理により操作内容に応じて、前記状態遷移情報を更新する更新ステップと、
    前記イベントを受け付ける受付ステップと、
    前記受付ステップの処理により受け付けたイベントをイベントリストとして記憶するイベント記憶ステップと、
    前記イベント記憶ステップの処理により記憶されたイベントリストを編集する編集ステップと
    を含む処理をコンピュータに実行させるプログラム。
JP2005311478A 2005-10-26 2005-10-26 情報処理方法および装置、記録媒体、並びにプログラム Withdrawn JP2007122253A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005311478A JP2007122253A (ja) 2005-10-26 2005-10-26 情報処理方法および装置、記録媒体、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005311478A JP2007122253A (ja) 2005-10-26 2005-10-26 情報処理方法および装置、記録媒体、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2007122253A true JP2007122253A (ja) 2007-05-17

Family

ID=38146056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005311478A Withdrawn JP2007122253A (ja) 2005-10-26 2005-10-26 情報処理方法および装置、記録媒体、並びにプログラム

Country Status (1)

Country Link
JP (1) JP2007122253A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170054256A (ko) * 2015-11-09 2017-05-17 아즈빌주식회사 조절계

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170054256A (ko) * 2015-11-09 2017-05-17 아즈빌주식회사 조절계

Similar Documents

Publication Publication Date Title
JP4295775B2 (ja) Guiテスト支援システム及びテスト支援用アプリケーションプログラム
JP2007102654A (ja) テストスクリプト処理プログラム
KR100966668B1 (ko) 콘텐츠 재생 장치, 콘텐츠 기록 매체, 콘텐츠 재생 방법 및 기록 매체
US20080104514A1 (en) Method and apparatus for controlling reproduction of audio/visual data
JP4856268B1 (ja) ユーザ端末及びそのアプリケーション管理方法
JP2008042706A (ja) 操作情報処理装置、操作処理方法、記憶媒体、プログラム
US7158906B2 (en) Test method, test system, and program therefor
US20080270984A1 (en) Script program execution device, script program execution method, and optical disk device
KR101505438B1 (ko) 재활용도를 높일 수 있는 gui 테스트 자동화 시스템 및 그 방법
JP2007122253A (ja) 情報処理方法および装置、記録媒体、並びにプログラム
JP2013143044A (ja) プログラム、情報処理方法、および情報処理装置
JP2007079955A (ja) 情報処理方法および装置、記録媒体、並びにプログラム
JP2010231594A (ja) 試験プログラム及び試験装置
KR100429957B1 (ko) 프로그램 개발 장치, 프로그램 개발 방법, 프로그램 개발 프로그램을 저장한 저장 매체
JP2007128244A (ja) 情報処理方法および装置、記録媒体、並びにプログラム
EP0741359B1 (en) Method and device for supporting production of moving-picture cd-rom software
JP2007079957A (ja) 情報処理方法および装置、記録媒体、並びにプログラム
JPH09223040A (ja) ソフトウェアのシステムテスト支援装置およびこれに用いるテストシナリオ生成装置
JP4802601B2 (ja) 情報処理方法および装置、記録媒体、並びにプログラム
JPH1185692A (ja) 端末装置及びマクロ記録再生方法
JP5656356B2 (ja) 情報処理装置、情報処理方法並びにプログラム
JP2005100068A (ja) ソフトウェア自動検証システム
JP2000132295A (ja) Gui動作仕様記述装置及びgui制御装置及びguiシステム
KR100693093B1 (ko) 광 디스크 기록/재생장치의 제어방법
KR960015178B1 (ko) 터치패널식 리모콘에서의 화면편집제어장치와 그 방법

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20090106