(57)【特許請求の範囲】
【請求項１】
電子機器にＧＵＩ（Graphical  User  Interface）を表示するためのソフトウェアの作成を支援するソフトウェア作成支援装置であって、
時間の経過に伴い遷移する複数の連続するフレームからなるフレーム区間を含む画面データを記憶する画面データ記憶部と
イベントにおいて前記電子機器の動作の制約を表す情報であるイベント制約定義情報であって、前記イベント制約定義情報及び前記画面データに基づいて前記フレーム区間の表示中に発生したイベントに応じて遷移するフレーム区間を定義した遷移管理情報を生成する遷移管理情報生成部と、
前記イベント制約定義情報及び前記遷移管理情報を記憶する管理情報記憶部と、
を有することを特徴とするソフトウェア作成支援装置。
【請求項２】
請求項１記載のソフトウェア作成支援装置であって、
前記複数のフレーム区間は、アニメーションが動作するフレームを含んだフレーム区間である１以上のアニメフレーム区間と、アニメーションが動作しないフレームで構成されたフレーム区間である１以上の通常フレーム区間とを含み、
前記イベント制約定義情報は、少なくとも１つのイベントについて、前記電子機器の動作状況に依存しない制約である静的制約を表す情報を含んでおり、
前記遷移管理情報生成部は、
（ａ）第１のアニメフレーム区間を特定し、
（ｂ）イベントの発生により前記第１のアニメフレーム区間が遷移先とされる第２のフレーム区間を特定し、
（ｃ）前記第２のフレーム区間においての前記イベントに対応する静的制約が満たされているか否かを判断し、
（ｄ）前記（ｃ）の判断の結果が否定的であれば、前記第１のアニメフレーム区間の遷移先である第３のフレーム区間を特定し、
前記遷移管理情報は、
（Ｘ）前記（ｃ）の判断の結果が肯定的であれば、前記第２のフレーム区間の遷移先として、前記第１のアニメフレーム区間を表す情報を有しており、
（Ｙ）前記（ｃ）の判断の結果が否定的であれば、前記第２のフレーム区間の遷移先として、前記第１のアニメフレーム区間を表す情報と、前記第３のフレーム区間を表す情報とを有しており、
前記第２のフレーム区間の遷移先として前記第１のアニメフレーム区間と前記第３のフレーム区間とが指定されている前記遷移管理情報に基づいて作成されたソフトウェアは、前記ＧＵＩにおいて、前記第２のフレーム区間からの遷移先として前記第１のアニメフレーム区間を優先的に選択する、
ソフトウェア作成支援装置。
【請求項３】
請求項２記載のソフトウェア作成支援装置であって、
前記イベント制約定義情報は、前記少なくとも１つのイベントについて、前記電子機器の動作状況に関する制約である動的制約を表す情報を更に含んでおり、
前記遷移管理情報生成部は、前記第２のフレーム区間においての前記イベントに対応する動的制約を特定し、
前記遷移管理情報は、前記第２のフレーム区間についての制約として、前記特定された動的制約を表す情報を有しており、
前記第２のフレーム区間の遷移先として前記第１のアニメフレーム区間と前記第３のフレーム区間とが指定されており且つ前記動的制約を表す情報を含んでいる前記遷移管理情報に基づいて作成されたソフトウェアは、前記電子機器の動作状況が前記動作制約を満たしていない場合、前記ＧＵＩにおいて、前記第２のフレーム区間からの遷移先として前記第３のフレーム区間を選択する、
ソフトウェア作成支援装置。
【請求項４】
請求項３記載のソフトウェア作成支援装置であって、
前記第３のフレーム区間は、前記通常フレーム区間である、
ソフトウェア作成支援装置。
【請求項５】
請求項１記載のソフトウェア作成支援装置であって、
前記イベント制約定義情報は、イベントにおいて前記電子機器の動作の制約があるかを表す情報を、電子機器毎、又は、電子機器の種類毎に有しており、
前記遷移管理情報生成部は、前記イベント制約定義情報のうちの、入力された電子機器識別情報に対応する制約に基づいて、前記遷移管理情報を生成し、
前記電子機器識別情報は、電子機器又は電子機器の種類の識別情報である、
ソフトウェア作成支援装置。
【請求項６】
請求項１記載のソフトウェア作成支援装置であって、
前記制約は、前記電子機器の動作状況が所定の状況の場合に遷移先のアニメーションの実行を省略することができるか否かを表す制約である、
ソフトウェア作成支援装置。
【請求項７】
請求項１記載のソフトウェア作成支援装置であって、
前記制約は、ユーザが所定の操作を行った場合にアニメーションの実行を省略することができるか否かを表す制約である、
ソフトウェア作成支援装置。
【請求項８】
請求項１記載のソフトウェア作成支援装置であって、
前記複数のフレーム区間は、アニメーションが動作するフレームを含んだフレーム区間である１以上のアニメフレーム区間と、アニメーションが動作しないフレームで構成されたフレーム区間である１以上の通常フレーム区間とを含み、
前記アニメフレーム区間についての前記制約と前記通常フレーム区間についての前記制約とは異なる制約である、
ソフトウェア作成支援装置。
【請求項９】
電子機器にＧＵＩ（Graphical  User  Interface）を表示するためのソフトウェアの作成を支援するソフトウェア作成支援方法であって、
時間の経過に伴い遷移する複数の連続するフレームからなるフレーム区間を含む画面データと、イベントにおいて前記電子機器の動作の制約を表す情報であるイベント制約定義情報とを所定の記憶部から取得し、
前記イベント制約定義情報及び前記画面データに基づいて前記フレーム区間の表示中に発生したイベントに応じて遷移するフレーム区間を定義した遷移管理情報を生成し、
前記遷移管理情報を所定の記憶部に記憶する
ことを特徴とするソフトウェア作成支援方法。
【請求項１０】
電子機器で実行されるソフトウェアであってＧＵＩ（Graphical  User  Interface）を表示するためのソフトウェアの作成を支援するコンピュータプログラムであって、
時間の経過に伴い遷移する複数の連続するフレームからなるフレーム区間含む画面データと、イベントにおいて前記電子機器の動作の制約を表す情報であるイベント制約定義情報とを所定の記憶部から取得し、
前記イベント制約定義情報及び前記画面データに基づいて前記フレーム区間の表示中に発生したイベントに応じて遷移するフレーム区間を定義した遷移管理情報を生成し、
前記遷移管理情報を所定の記憶部に記憶する
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの作成を支援するための技術に関する。
【背景技術】
【０００２】
近年、カーナビゲーション（以下「カーナビ」）等のＧＵＩ（Graphical  User  Interface）では、アニメーション（以下「アニメ」）を用いた動的な視覚効果が重視されている。そこで、ＧＵＩで表示される部品又は画面の切り替えにはアニメが使用される。例えば、ユーザが画面に表示されたボタンを押下すると、ボタンが押下される様子がアニメを用いて連続的に表現される。
【０００３】
アニメを含むＧＵＩのデザイン設計は、デザイナーが行うことが多い。しかし、デザイナーは、スクリプトプログラムを書けないことが多い。そこで、例えば、特許文献１は、画面に表示される部品のアニメ状態をタイムラインに沿って表示することにより、デザイナーがＧＵＩのデザインを簡単に編集できるようにする方法を開示している。
【０００４】
しかし、カーナビは、ユーザの操作又は車の走行状況に応じて、様々な割り込み処理が発生する。例えば、ＣＤ（Compact  Disk）の取り出し、及び誘導ルートのリルートなどが発生する。したがって、カーナビのＧＵＩの開発においては、これらの割り込み処理を考慮しなければならず、設計及び開発が難しい。そこで、デザイナー及びソフトウェア作成者（以下「開発者」）の設計及び開発の負荷を軽減するために、様々な開発支援ツールが提案されている。例えば、特許文献２は、割り込み画面を表示させる際、画面をまとめた画面グループと、複数の割り込み表示ルール及びその例外表示データとに基づき、矛盾なく画面を表示する表示制御情報を生成して画面の表示内容を制御する方法を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１６９２９０号公報
【特許文献２】特開２００８−４０６６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１によれば、ＧＵＩを設計するデザイナーは、画面内のアニメを設計する際、タイムライン型編集ツールにおいて、タイムラインの特定の時間を指定することで、その指定した時間における画面内のアニメの状態を視覚的に確認することができる。しかし、タイムラインは複数のアニメの画面を連続的に表現するため、画面単位でスクリプトを記述する開発者にとっては、スクリプトを埋め込む位置を特定しにくい。また、開発者は、アプリケーション全体の画面構成及び画面遷移が把握しにくいため、開発及びデバッグが困難となってしまう。
【０００７】
特許文献２では、割り込みイベントが発生した際に割り込み画面を表示させるためのルールの作成、ルールの修正、及びルールをチェックするための方法を開示している。しかし、特許文献２では、カーナビの装置内部の状態（例えば、ＣＰＵ使用率、メモリ使用率等）、又はカーナビが外部の装置から受け取った情報（例えば、車の速度、ブレーキの状態等）などに基づき、ＧＵＩの動作が制限されるソフトウェアの作成（例えば設計及び／又は開発）は困難である。
【０００８】
以上の問題は、カーナビで実行されるソフトウェアの作成に限らず、時間の経過に伴い画面が遷移するＧＵＩを表示する他種のソフトウェアの作成についてもあり得る。
【０００９】
そこで、本発明の目的は、ＧＵＩを表示するソフトウェアの作成を容易にすることである。
【課題を解決するための手段】
【００１０】
時間の経過に伴い遷移する複数の連続するフレームからなるフレーム区間を含む画面データを基に、前記フレーム区間の表示中に発生したイベントに応じて遷移するフレーム区間を定義した遷移管理情報を生成し、前記遷移管理情報を基にソフトウェアの作成が支援される。具体的には、例えば、ユーザが遷移管理情報を基にソフトウェアを作成する。各フレーム区間は、連続した１以上のフレームで構成されている。画面データにおける複数のフレームは、前記ＧＵＩにおいて表示されるオブジェクトである表示部品が配置された１以上のフレームを含んでいる。画面データは、どのフレームに配置されている表示部品が実行された場合に表示がどのフレームに遷移するかを表す情報を含んだ定義情報を含んでいる。画面データを基に特定されたイベントを表す情報が、遷移管理情報に含まれている。
【発明の効果】
【００１１】
本発明によれば、ＧＵＩを表示するソフトウェアの作成が容易になる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係るソフトウェア作成支援装置の画面表示例を示す。
【図２】表示対象フレームがジャンプする処理の一例を示す。
【図３】本発明の一実施形態に係るソフトウェア作成支援装置の機能ブロックの一例を示す。
【図４】画面遷移表の一例を示す。
【図５】イベント制約定義表の一例を示す。
【図６】画面遷移処理に関するコード雛形の一例を示す。
【図７】コード雛形表７００及びコード雛形の一例を示す。
【図８】画面データから画面遷移表を生成する処理のフローチャートの一例である。
【図９】図８のステップＳ８１２のフローチャートの一例である。
【図１０】画面遷移表から画面雛形を生成する処理のフローチャートの一例である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の一実施形態を説明する。
【００１４】
なお、以下の説明では「ｘｘｘ表」の表現にて各種情報を説明することがあるが、各種情報は、表以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「ｘｘｘ表」を「ｘｘｘ情報」と言うことができる。
【００１５】
また、以下の説明では、要素を特定するために名称又は番号が使用されるが、名称又は番号に代えて又は加えて、他種の識別情報が使用されて良い。
【００１６】
また、以下の説明では、プログラムがプロセッサ（例えばCPU（Central  Processing  Unit））によって実行されることで発揮される「機能」（又はプログラム）を主語にして処理を説明することがあるが、この「機能」は、プロセッサが定められた処理を適宜に記憶資源（例えばメモリ）及び／又は通信インタフェース装置（例えば通信ポート）を用いながら行われるものであるため、処理の主語は「プロセッサ」とされても良い。なお、この「プロセッサ」は、一つの物理的なプロセッサに限定されず、機能の処理の一部又は全部を行う、プロセッサとは別のハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
【００１７】
図１は、本発明の一実施形態に係るソフトウェア作成支援装置の画面表示例を示す。
【００１８】
タイムライン型画面設計ツールの画面１００は、部品配置エリア１３０、部品メニューエリア１１０、部品編集エリア１２０、及びタイムライン記述エリア１４０を有している。
【００１９】
部品配置エリア１３０は、表示部品を配置して画面を構成するエリアである。本実施形態の説明において、「表示部品」とは、開発対象のソフトウェアが提供する画面に表示されるオブジェクトである。表示部品としては、例えば、「戻る」ボタン１３１、「データ更新」ボタン１３２、「表示切替」ボタン１３３、及び、吹き出し１３４がある。ボタン１３１〜１３３のいずれが指定されてもボタン押下イベントが発生する。吹き出し１３４には、様々なメッセージが表示される。
【００２０】
部品メニューエリア１１０には、部品配置エリア１３０に配置された表示部品の加工メニューが表示される。例えば、「拡大・縮小」メニューが選択されると、表示部品のサイズの変更が可能となる。
【００２１】
部品編集エリア１２０には、部品配置エリア１３０で選択された表示部品に関する属性情報が表示される。このエリア１２０に表示された属性情報が変更されると、表示部品の動作及び機能の変更が可能となる。例えば、同図に示すように、部品配置エリア１３０において「データ更新」ボタン１３２が選択されると、部品編集エリア１２０には「データ更新」ボタン１３２の属性情報が表示される。ここで、「ＩＤ」は、表示部品を一意に識別する識別子であり、「Ｕｐｄａｔｅ」という識別子が付与されている。「種類」は、その表示部品が有する機能を示しており、「ボタン」という種類が付与されている。したがって、「データ更新」ボタン１３２が選択されると、「Ｕｐｄａｔｅ」という識別子に対応づけられた処理が実行されることとなる。
【００２２】
タイムライン記述エリア１４０には、フレームと、そのフレームで実行されるプログラムとを対応づけものが、時間軸１４２に沿って並べられる。ここで、「フレーム」とは、一つの画面のデータである。また、時間軸１４２は、左から右に進むにつれて時間が経過するものとする。この時間軸１４２に沿って並べられたフレーム及びそのフレームに対応する様々なデータをまとめて「タイムライン」と呼ぶ。原則として、複数のフレームで一つのアニメが構成される。したがって、フレーム内の時間を進めることで、アニメが実行される。
【００２３】
フレーム番号１４４は、フレームを識別する番号である。時間軸１４２に並べられた先頭のフレームから番号の小さい順に、連続した番号が、フレーム番号１４４として、各フレームに付与される。
【００２４】
時間軸１４２上に、表示時間１４３が表示される。表示時間１４３は、時間軸１４２における、部品配置エリア１３０に表示されているフレームの番号に対応した箇所、に位置する。表示時間１４３は、ユーザ（例えばデザイナー）からの操作に応答して時間軸１４２上を移動するスライダーであって良い。
【００２５】
ラベル名１４５は、フレーム区間を識別するための文字列である。ラベル名１４５は、プログラムにおいて、特定のフレームへジャンプする場合などに使用される。なお、「フレーム区間」とは、時間の経過に伴い順次に連続して表示される１以上のフレームのフレーム番号範囲（先頭のフレームの番号から後端のフレームの番号までの範囲）を意味する。また、本実施形態の説明において、「ジャンプ」とは、プログラムの実行により、典型的には、表示中のフレームの次に表示されるフレームが、表示中のフレームの番号に連続した次の番号のフレームではなく、表示中のフレームの番号とは非連続の番号のフレームになることを意味する。しかし、表示中のフレームの次に表示されるフレームの番号が、表示中のフレームの番号に連続した次の番号でも表示中のフレームの番号とは非連続の番号でも良い場合にも、「ジャンプ」という言葉が使用されることがある。
【００２６】
スクリプト有無マーク１４６は、フレームに対応するスクリプトプログラム（以下「スクリプト」）が存在するか否かを示す記号である。スクリプトは、フレーム内の表示部品等を制御する際に使用される。スクリプト言語としては、例えば、ＡｃｔｉｏｎＳｃｒｉｐｔ、Ｐｙｔｈｏｎ、Ｒｕｂｙ、ＪａｖａＳｃｒｉｐｔ（登録商標）等がある。
【００２７】
レイヤ１４１は、表示部品が重なったときの画面表示における前後関係を示す。表示部品が重なったとき、列の上の方に記載の表示部品が前面に表示される。
【００２８】
表示部品リスト１４７には、開発中のソフトウェアで使用される全ての表示部品の名称のリストである。
【００２９】
表示部品リスト１４７に表示されている表示部品名称毎に、部品表示区間１４８と部品非表示区間１４９との少なくとも一方がある。部品表示区間１４８は、同図において破線の矢印が記されている区間であり、表示部品が部品配置エリア１３０に表示される時区間を示す。一方、部品非表示区間１４９は、同図において黒色の斜線が記されている区間であり、表示部品が部品配置エリア１３０に表示されない区間を示す。例えば、同図の吹き出し１３４は、フレーム「１」（フレーム番号「１」のフレーム）からフレーム「１７」のそれぞれに含まれている。故に、フレーム「１」からフレーム番号の小さい順に複数のフレームが表示される場合、フレーム「１７」まで吹き出し１３４が表示され、表示されるフレームがフレーム「１７」からフレーム「１８」に変わった場合に、吹き出し１３４が非表示となることがわかる。
【００３０】
図２は、図１において「表示切替」ボタン１３３が押下された場合に表示対象フレームがフレーム「１７」からフレーム「４５」にジャンプする処理の一例を示す。
【００３１】
同図において、フレーム「１５」には、画面切り替え用のスクリプトが埋め込まれている。スクリプト２０２は、ボタンの押下によって、フレーム番号「４５」のフレームである「ｍｅｎｕ＿ｌｉｓｔ」にジャンプするスクリプトの例である。スクリプト２０２には、「表示切替」ボタン１３３が押下されると、ボタン押下イベントが発生し、関数「ｐｒｅｓｓＣｈａｎｇｅＶｉｅｗＢｕｔｔｏｎ」が呼ばれ、関数内に記載されている「ｇｏｔｏ（”ｍｅｎｕ＿ｌｉｓｔ”）」が実行される旨記載されている。したがって、スクリプト２０２が実行されると、ラベル名「ｍｅｎｕ＿ｌｉｓｔ」が付与されているフレーム「４５」へジャンプし、行き先メニュー２０１（フレーム「ｍｅｎｕ＿ｌｉｓｔ」）が部品配置エリア１３０に表示される。なお、スクリプト２０２において、「戻る」ボタン１３１が押下された場合は、関数「ｐｒｅｓｓＲｅｔｕｒｎＢｕｔｔｏｎ」が呼ばれ、関数内に記されている「ｇｏｔｏ（”ａｎｉｍｅ２”）」が実行される。
【００３２】
図３は、本実施形態に係るソフトウェア作成支援装置の機能ブロックの一例を示す。
【００３３】
ソフトウェア作成支援装置３００は、主にデザイナーが画面の設計を行うことに使用する画面設計プログラム３４０と、主に開発者がプログラムの開発時に使用する画面遷移生成プログラム３５０とを有する。なお、画面設計プログラム３４０と画面遷移生成プログラム３５０は、一つの装置に備えられてもよいし、別々の装置に備えられてもよい。また、ソフトウェア作成支援装置３００は、ＣＰＵ（Central  Processing  Unit）、記憶資源、入力装置及び表示装置を備えている。装置３００が有するプログラム３４０及び３５０は、記憶資源（例えばメモリ）に記憶され、ＣＰＵにて実行される。プログラム３４０が実行されることで、遷移表生成部３０２及び画面雛形生成部３０４という機能が発揮される。プログラム３５０が実行されることで、複雑度判定部３１７、コード雛形生成部３１８、コード結合部３１９及びモジュール生成部３２３という機能が発揮される。記憶部３１６は、記憶資源により実現される。
【００３４】
ソフトウェア作成支援装置３００は、必ずしも表示装置及び入力装置を備えていなくても良い。例えば、装置３００は、サーバクライアントシステムのサーバであって、表示装置及び入力装置は、そのサーバクライアントシステムのクライアントにあっても良い。
【００３５】
ターゲット機器３３０は、ソフトウェア作成支援装置３００で開発されたソフトウェアを実行する電子機器である。例えば、ターゲット機器３３０は、画面表示プログラム３３１を実行する機器であり、ＯＳ３３４、ネイティブモジュール３３３、及び画面表示プログラム３３１を有している。また、ターゲット機器３３０は、ＣＰＵ、記憶資源（例えばメモリ）、入力装置及び表示装置を備えており、ＯＳ３３４及び画面表示プログラム３３１等の各種プログラムは、記憶資源に記憶され、ＣＰＵにて実行される。これにより、画面表示プログラム３３１によって表示装置に画面が表示される。表示される画面は、タイムライン型画面設計ツールを利用して設計された画面である。ターゲット機器３３０は、例えば、カーナビゲーション装置（カーナビ）である。カーナビの機種として、複数種類の機種がある。本実施形態に係るソフトウェア作成支援装置３００によれば、カーナビの機種に適したソフトウェア（例えば、そのカーナビの機種に応じたＧＵＩ表示を行うソフトウェア）を開発することができる。なお、ターゲット機器３３０は、カーナビに代えて又は加えて、他種の電子機器（例えばモバイル型の情報処理端末）であっても良い。
【００３６】
図３において、画面データ３０１、イベント制約定義表５００、ドキュメント３１４、コード雛形表７００、コード付画面データ３２０及びモジュール３２４のうちの少なくとも１つは、ソフトウェア作成支援装置３００が有する記憶資源に記憶されて良い。また、画面データ３０１、イベント制約定義表５００、ドキュメント３１４、コード雛形表７００、コード付画面データ３２０及びモジュール３２４のうちの少なくとも１つは、ソフトウェア作成支援装置３００に入力装置を通じて入力された情報であって良い。
【００３７】
次に、各機能及び処理の概要について説明する。
【００３８】
まず、ユーザ（例えばデザイナー）は、画面設計プログラム３４０が提供する画面デザイン設計ツール（図１参照）を用いて画面データ３０１を作成する。画面データ３０１は、ターゲット機器３３０で表示される画面（ＧＵＩ）に関するデータである。画面データ３０１は、例えば、下記の情報、
（＊）複数のフレームに関する情報（例えば、フレームが有する表示部品に関する情報と、フレームにおける表示部品の動作を制御するための定義情報（例えばスクリプト）とをフレーム毎に含んだ情報）、
（＊）フレーム区間情報（例えば、フレーム区間毎のラベル名と、フレーム区間毎に、フレーム区間の先頭のフレームの番号と終端のフレームの番号とを含んだ情報）、
（＊）タイムラインを表す情報（例えば、フレームの並びを表す情報）、
を含んでいる。フレームに配置された表示部品に関するスクリプトは、例えば、前述したように、その表示部品が実行されたときに表示がそのフレームからどのフレームにジャンプするかを表す情報を含んで良い。
【００３９】
次に、遷移表生成部３０２は、画面データ３０１を解析して、フレーム区間毎のラベル名を特定する。また、遷移表生成部３０２は、フレーム区間毎に、発生する可能性のあるイベントを特定し、特定したイベントを識別可能なイベント名をそのイベントに対して付与する。例えば、遷移表生成部３０２は、どのフレームにどんな表示部品が配置されているかを特定し、特定された表示部品の種類（例えばＩＤ）を基にイベントを特定し、そのイベントに、特定したイベントを識別可能なイベント名を付与する。そして、遷移表生成部３０２は、特定したラベル名と付与したイベント名との表（マトリックス）である画面遷移表を生成する。また、遷移表生成部３０２は、生成した画面遷移表における、フレーム名とイベント名の組み合わせから一義的に定まるセルに、イベント名に対応するイベントの動作を制約する制約条件を記載する。遷移表生成部３０２は、生成した画面遷移表を記憶部３１６に記憶する。なお、制約条件は、ソフトウェアが実行されるターゲット機器毎に異なる。ターゲット機器とイベントの組合せ毎の制約条件を表すイベント制約定義表５００がある。ユーザ（例えばオペレーター）からターゲット機器のＩＤが入力され、入力されたターゲット機器ＩＤに対応する制約条件が特定されて良い。
【００４０】
ここで、ターゲット機器３３０で実行される画面表示プログラム３３１がスクリプトで記述されていると、画面遷移が複雑な場合、実行速度が遅くなってしまう。そこで、複雑度判定部３１７は、画面遷移表を参照し、下記のうちの少なくとも１つ、
（＊）画面遷移表を構成するセルの数、
（＊）フレームからそのフレームと非連続のフレームへのジャンプが発生するイベントの数、
（＊）各セルに記載されている制約条件の数、
に基づき複雑度（例えば画面データ３０１の複雑度）を計算し、その複雑度に従って適切なコードを判定する。具体的には、複雑度判定部３１７は、記憶部３１６に記憶されている画面遷移表を解析し、画面遷移の複雑度が所定の閾値以下か否かを判定する。
【００４１】
ここで、複雑度判定部３１７の判定結果が肯定的であれば（複雑度が閾値以下ならば）、コード雛形生成部３１８は、画面遷移に関するコードの雛形であるコード雛形をスクリプトで生成する。次に、コード結合部３１９は、画面データ３０１とコード雛形表７００から、コード付画面データ３２０を生成する。ここで、コード付画面データ３２０は、画面データ３０１を、コード雛形を呼び出せるように書き換えたものである（コード雛形表７００及びコード雛形については、後述する）。次に、ユーザ（例えば開発者）は、コード付画面データ３２０に、必要なコードを追記する。最後に、画面表示プログラム生成部３２２は、コード付画面データ３２０から、画面表示プログラム３３１を生成する。生成された画面表示プログラム３３１は、ターゲット機器３３０で実行可能である。
【００４２】
一方、複雑度判定部３１７の判定結果が否定的であれば（複雑度が閾値を超えていれば）、モジュール生成部３２３は、ＧＵＩにおいて画面（フレーム）の遷移を行うモジュール（ネイティブコード）３２４を生成する。次に、コード結合部３１９は、モジュール３２４を呼び出せるようなコード付画面データを生成する。次に、画面表示プログラム生成部３２２は、画面表示プログラム３３１を生成する。この処理の結果、ネイティブコードで実行可能なモジュール３２４及びスクリプトで実行可能な画面表示プログラム３３１が生成される。次に、モジュール３２４及び画面表示プログラム３３１をターゲット機器３３０に組み込む。これにより、ターゲット機器３３０では、モジュール３２４と画面表示プログラム３３１が連携して動作する。モジュール３２４と画面表示プログラム３３１の少なくとも一方が作成されて良い。また、モジュール３２４と画面表示プログラム３３１は、それぞれ、作成されるソフトウェアそれ自体であっても良いし、作成されるソフトウェアの一要素であっても良い。
【００４３】
なお、ドキュメント生成部３１３において、記憶部３１６に記憶されている画面遷移表のデータから、ドキュメント（例えば、画面遷移表をユーザが読み易い形式に編集することにより得られた画面遷移図）３１４を生成してもよい。また、そのドキュメント３１４の生成において、アニメの処理負荷が高い部分の色が変更されたり、画面が遷移する階層が所定の値よりも深い部分の色が変更されたりしてもよい。
【００４４】
記憶部３１６内の画面遷移表の各セルは、アニメフラグを有する。画面雛形生成部３０４は、記憶部３１６内の画面遷移表を参照し、アニメフラグがｔｒｕｅに対応するフレーム区間として、アニメフラグがｆａｌｓｅに対応するフレーム区間より長いフレーム区間設定する。そして、画面雛形生成部３０４は、セルが制約条件を保持しているとき、そのセルに対応するイベント名のイベントには制約条件が存在することを、タイムライン型画面設計ツールの画面（図１参照）にて明示的に表示することができる。この処理については、後に図１０を用いて説明する。
【００４５】
図４は、画面遷移表の一例を示す。なお、この表において、特定の行と列を選択したときに一意に決定される一マスを「セル」と言う。各「セル」は情報を保持することができる。
【００４６】
ここで、セルは、そのセルに対応するフレームがアニメフレーム（アニメ動作を含むフレーム）であるか否かを表すアニメフラグを保持する。そして、アニメフラグがｔｒｕｅのセルは、アニメ動作に関する制約条件を保持し、アニメフラグがｆａｌｓｅのセルは、画面の遷移先に関する制約条件を保持する。
【００４７】
アニメフラグ「ｔｒｕｅ」を有するセルに、アニメ動作に関する制約条件として、例えば、ユーザ（オペレーター又は開発者）の過去の操作に基づき、そのセルに対応するフレームのアニメ動作を省略するか否かを設定することができる。
【００４８】
また、アニメフラグ「ｆａｌｓｅ」を有するセルに、画面（フレーム）の遷移先に関する制約条件として、ソフトウェアが実行されるターゲット機器の状態に基づき遷移先のアニメ動作を省略するか否かを設定することができる。
【００４９】
以下、上述の動作について、図４を用いて詳細に説明する。
【００５０】
イベント名４０３は、画面遷移のきっかけとなるイベント名のリストである。イベントの種類としては、例えば、「ｆｉｎｉｓｈ（フレーム再生完了）」、「ｐｒｅｓｓＭａｐＢｕｔｔｏｎ（地図ボタン押下）」等がある。
【００５１】
ラベル名４０４は、各フレームに付与されたラベル名のリストである。
【００５２】
画面遷移表４００において、ラベル名とイベント名から一意にセルが決定される。セルには、このセルに対応するラベル名が付与されたフレームにおいて、このセルに対応するイベント名に記載のイベントが発生したときに、所定のフレームにジャンプするという処理が記載されている。さらに、そのセルには、ジャンプ処理を実行するための各種条件及びジャンプ先のラベル名などが記載されている。
【００５３】
セルとしては、アニメフラグ「ｔｒｕｅ」を有するセルであるアニメセルと、アニメフラグ「ｆａｌｓｅ」を有するセルである通常セルとがある。
【００５４】
アニメセルは、アニメフレームに対応するセルであり、イベント名４０３に記載のイベントが発生したときの処理を表す情報を有する。アニメセルは、例えば、アニメフラグ４１１の他に、ジャンプ先４２２、及びアニメ省略４２３という情報（パラメータ）を有する。アニメフラグ４２１には、アニメフレームがアニメセルか否かが設定される。同図において、セル４０１はアニメセルであるので、アニメフラグ４１１は「ｔｒｕｅ」である。ジャンプ先４２２は、ジャンプ先のラベル名である。セル４０１では、ジャンプ先４２２として「ｍｅｎｕ＿ｌｉｓｔ」が設定されているため、セル４０１に対応するアニメフレームの実行後、表示されるフレームとして、実行が終了したアニメフレームからラベル名「ｍｅｎｕ＿ｌｉｓｔ」のフレームにジャンプする。アニメ省略４２３は、アニメを実行中にユーザが特定のキー操作を行ったとき（例えばボタン連打）、以後アニメを省略するか否かを表す。セル４０１では、アニメ省略４２３が「ｔｒｕｅ」であるため、アニメ省略機能が有効となっている。
【００５５】
通常セルは、アニメを含まないフレームに対応するセルであり、イベント名４０３に記載のイベントが発生したときの処理を表す情報を有する。通常セルは、アニメフラグ４１１の他に、例えば、遷移後アニメ制限４１２、ジャンプ先（アニメ許可）４１３、及びジャンプ先（アニメ禁止）４１４という情報（パラメータ）を有する。同図において、セル４０２はアニメを含まないフレームであるので、アニメフラグ４１１は「ｆａｌｓｅ」である。遷移後アニメ制限４１２は、アニメの実行を許可する条件及び／又はアニメの実行を禁止する条件を表す情報である。セル４０２には、遷移後アニメ制限４１２として「ＣＰＵ負荷５０％以上アニメ禁止」が設定されているため、ターゲット機器３３０のＣＰＵ負荷が５０％以上のときはアニメが禁止される。ジャンプ先(アニメ許可)４１３は、遷移後アニメ制限４１２においてアニメが許可されたときのジャンプ先のラベル名である。セル４０２には、ジャンプ先（アニメ許可）４１３として「Ａｎｉｍｅ１」が設定されている。したがって、セル４０２において、ラベル名「ｉｎｉｔ」のフレーム実行時、「ｐｒｅｓｓＭａｐＢｕｔｔｏｎ」イベントが発生すると、表示が、ラベル名「Ａｎｉｍｅ１」のフレームにジャンプする。なお、ジャンプ先（アニメ禁止）４１４は、遷移後アニメ制限４１２においてアニメが禁止されたときのジャンプ先のラベル名である。セル４０２には、ジャンプ先（アニメ禁止）４１４に「ｍｅｎｕ＿ｍａｐ」が設定されている。したがって、ラベル名「ｉｎｉｔ」のフレーム実行時、「ｐｒｅｓｓＭａｐＢｕｔｔｏｎ」イベントが発生すると、表示が、ラベル名「ｍｅｎｕ＿ｍａｐ」のフレームにジャンプする。
【００５６】
図５は、イベント制約定義表の一例を示す。
【００５７】
イベント制約定義表５００には、ターゲット機器毎に、画面遷移のイベントが発生した時の制約条件が記載されている。複数のターゲット機器は、異なるスペックを有している。例えば、性能の高いＣＰＵを搭載しているターゲット機器もあれば、性能の低いＣＰＵを搭載しているターゲット機器もある。
【００５８】
イベント制約定義表５００には、ターゲット機器毎に、ターゲット機器ＩＤ５０２を有する。ターゲット機器ＩＤ５０２は、各ターゲット機器を一意に識別可能な識別子である。
【００５９】
イベント制約定義表５００の各列は、ターゲット機器ＩＤに対応しており、各行は、イベント名に対応している。ターゲット機器ＩＤとイベント名とから一義的に定まるセルに、制約条件５１０が記述されている。
【００６０】
イベント制約定義表５００には、ターゲット機器ＩＤ５０２及びイベント名５０３の組み合わせ毎に、異なる制約条件５１０を設定できる。また、制約条件５１０には、静的制約条件５１１及び動的制約条件５１２を設定できる、
【００６１】
静的制約条件５１０は、静的制約条件を表す情報である。「静的制約条件」は、ターゲット機器の使用（例えば、ターゲット機器のソフトウェア及び／又はハードウェアの仕様）が定まると一意に定まり、ターゲット機器の動作状況（例えば、イベント実行の際の動作状況）に依存しない、種類の制約条件である。条件５１０は、画面遷移表を生成する際、アニメセルが当該静的制約条件に違反していないかを判定するために使用される。静的制約条件５１０は、例えば、以下の情報、
（＊）同時にアニメ可能な表示部品の最大数を表すアニメ要素数５１３、
（＊）アニメ可能な表示部品のサイズの最大値を表すアニメ要素サイズ５１４、
（＊）アニメを連続再生可能な時間の最大値を表すアニメ期間５１５、
を含む。
【００６２】
動的制約条件５１２は、動的制約条件を表す情報である。「動的制約条件」は、ターゲット機器の動作状況（例えば、イベント実行の際の動作状況）に応じて適用される制約条件である。条件５１２は、画面遷移表を生成する際、通常セルに当該動的制約条件を記載するために使用される。そして、動的制約条件５１２は、ターゲット機器において、画面表示プログラム３３１を実行する際の制約条件として使用される。動的制約条件５１２は、例えば、以下の情報、
（＊）アニメを禁止するＣＰＵ負荷率の閾値であるアニメ禁止ＣＰＵ負荷率５１６、
（＊）アニメを禁止するメモリ使用率の閾値であるアニメ禁止メモリ使用率５１７、
（＊）車両走行時の操作を許可するか否かを表す車両走行時操作５１８、
を含む。どの動的制約条件をどの通常セルに記載すべきかの判断は、そのセルと対応しているフレームのデータの内容、及びそのフレームに存在する表示部品の属性等に依存する。例えば、走行中の操作が禁止されているボタンがフレームに存在する場合、車両走行時操作５１８が「Ｎｏ」の動的制約条件が通常セルに記載される。なお、ＣＰＵ負荷率の閾値は、実際にテスト用コンテンツをターゲット機器上で実行させた上で決定されてよい。また、各種制約条件は、道路交通法など定義文章からカーナビに関する各種規制を解析し、自動的に生成されてもよい。
【００６３】
図６は、画面遷移処理に関するコード雛形の一例を示す。
【００６４】
画面遷移に関するコード雛形６００は、所定の言語、例えばｊａｖａｓｃｒｉｐｔ言語で記述されている。コード記述エリア６０１には、ユーザが独自に実行させたい処理を記述することができる。
【００６５】
図７は、画面遷移に関するイベントのコード雛形表７００及びコード雛形の一例を示す。
【００６６】
コード雛形表７００には、ターゲット機器毎に、画面遷移のイベントが発生した時に実行されるコード雛形が記載されている。コード雛形は、コード結合部３１９において、画面データ３０１と結合される。
【００６７】
コード雛形表７００は、ターゲット機器毎に、ターゲット機器ＩＤ７０３を有する。各列は、ターゲット機器ＩＤに対応しており、各行は、イベント名に対応している。ターゲット機器ＩＤとイベント名とから一義的に定まるセルに、コード雛形が記述される。
【００６８】
或るコード雛形７１０には、「ｐｒｅｓｓＬｉｓｔＢｕｔｔｏｎ」のイベントが発生した時、画面遷移のメソッド「ｏｎＥｖｅｎｔ」を呼び出す処理が記載されている。コード雛形７１０において、「／／」から始まる行はコメント文であり、ユーザが独自に処理を記述する際に参考となる情報が記載されている。なお、複雑度判定部３１７における判定の結果、ネイティブモジュール３３３と判定された場合、コード雛形７１０には画面遷移のメソッド「ｏｎＥｖｅｎｔ」の代わりに、ネイティブモジュールを呼び出すコード「ｏｎＮａｔｉｖｅＥｖｅｎｔ」７１１が記載される。
【００６９】
別のコード雛形７２０は、フレーム遷移完了イベントである「ｆｉｎｉｓｈ」が発生したときの処理の雛形である。コード雛形７２０には、データ読み込みメソッド「ｄａｔａＬｏａｄ」と画面遷移のメソッド「ｏｎＥｖｅｎｔ」を呼び出す処理が記載されている。
【００７０】
図８は、画面データから画面遷移表を生成する処理のフローチャートの一例である。
【００７１】
まず、遷移表生成部３０２は、空の画面遷移表を新規に作成する（Ｓ８０１）。
【００７２】
次に、遷移表生成部３０２は、画面データのフレームをフレーム番号順に検索し、ラベル名を抽出し、画面遷移表の列のタイトルとして、そのラベル名を設定する（Ｓ８０２）。
【００７３】
次に、遷移表生成部３０２は、ラベル名に「ａｎｉｍｅ」という文字列を含むか否かを判定し、判定結果が「ＹＥＳ」の場合、当該ラベル名のフレームをアニメフレームと判定し、当該ラベル名の列に属するセルのアニメフラグを「ｔｒｕｅ」に設定する（Ｓ８０３）。なお、本実施形態では、アニメフレームを識別するための方法として、ラベル名に「ａｎｉｍｅ」という文字列が含まれているか否かを判定する方法が採用されている。しかし、アニメフレームの識別は、他の方法で行われても良い。例えば、ラベル名に「ａｎｉｍｅ」以外の文字列が含まれているか否かを判定することが採用されても良い。また、フレーム内のスクリプトにコメントとしてアニメフレームを示す文字列が記載されているか否かを判定する方法が採用されてもよい。
【００７４】
次に、遷移表生成部３０２は、ラベル名に「ｍｅｎｕ」という文字列を含むか否かを判定し、判定結果が「ＹＥＳ」の場合、当該ラベル名のフレームを通常フレーム（アニメが動作しないフレーム）と判断し、当該ラベル名の列に属するセルのアニメフラグを「ｆａｌｓｅ」に設定する（Ｓ８０４）。なお、本実施形態では、通常フレームの識別は、他の方法で行われても良い。例えば、ラベル名に「ｍｅｎｕ」以外の文字列が含まれているか否かを判定することが採用されても良い。また、フレーム内のスクリプトにコメントとして通常フレームを示す文字列が記載されているか否かを判定する方法が採用されてもよい。
【００７５】
次に、遷移表生成部３０２は、フレーム番号を決定するフレームカウンタを０にセットする（Ｓ８０５）。
【００７６】
次に、遷移表生成部３０２は、フレームカウンタが表す値と一致するフレーム番号が付与されているフレームにスクリプト記述があるか否かを判定する（Ｓ８０６）。ここで、フレームにスクリプト記述がある場合は（Ｓ８０６：Ｙｅｓ）、ステップＳ８０７へ進む。一方、フレームにスクリプト記述がない場合は（Ｓ８０６：Ｎｏ）、ステップＳ８１０へ進む。以下、ステップＳ８０７からの処理を説明する。
【００７７】
次に、遷移表生成部３０２は、スクリプト内にジャンプ命令（ｇｏｔｏ文）が存在するか否かを判定する（Ｓ８０７）。ここで、ジャンプ命令が存在する場合は（Ｓ８０７：Ｙｅｓ）、ステップＳ８０８へ進む。一方、ジャンプ命令が存在しない場合は（Ｓ８０７：Ｎｏ）、ステップＳ８１０へ進む。以下、ステップＳ８０８からの処理を説明する。
【００７８】
次に、遷移表生成部３０２は、ジャンプ命令が記載されているメソッド名と、ジャンプ命令に記載されているジャンプ先のラベル名とを抽出する（Ｓ８０８）。
【００７９】
次に、遷移表生成部３０２は、画面遷移表の行のタイトルにイベント名として、ステップＳ８０８で抽出したメソッド名を設定する。そして、遷移表生成部３０２は、このメソッド名の行とステップＳ８０６で判定されたフレームの列とが交差するセルにおいて、セルが保持するジャンプ先４１３、４１４及び４２２に、ステップＳ８０８で抽出したジャンプ先のラベル名を記載する（Ｓ８０９）。
【００８０】
次に、遷移表生成部３０２は、フレームカウンタに１を加算する（Ｓ８１０）。
【００８１】
次に、遷移表生成部３０２は、フレームカウンタの値と一致するフレーム番号が最終のフレームの番号か否かを判定する（Ｓ８１１）。ここで、最終フレーム番号の場合は（Ｓ８１１：Ｙｅｓ）、ステップ８１２へ進む。一方、最終フレーム番号でない場合は（Ｓ８１１：Ｎｏ）、ステップ８０６へ戻る。以下、ステップＳ８１２からの処理を説明する。
【００８２】
次に、遷移表生成部３０２は、制約条件に基づき画面遷移表を修正する（Ｓ８１２）。
【００８３】
図９は、図８のステップＳ８１２のフローチャートの一例である。
【００８４】
まず、遷移表生成部３０２は、画面遷移表から、「アニメフラグ」が「ｔｒｕｅ」のセル（以下、「アニメセル」と言うことがある）を表の最初から順番に探し、最初にマッチしたセルを抽出する（Ｓ９０１）。ここで抽出したセルを、図９の説明において「セルＡ」と言う。
【００８５】
次に、遷移表生成部３０２は、画面遷移表から、ステップＳ９０１で抽出したセルＡに対応するフレーム区間をジャンプ先として指定しているセルを表の最初から順番に探し、マッチしたセルを抽出する（Ｓ９０２）。ここで抽出したセルを、図９の説明において「セルＢ」と言う。セルＢが複数存在する場合は、すべてのセルＢを抽出し、それら全てのセルＢに対して、以降のセルＢに関する処理が実行される。
【００８６】
次に、遷移表生成部３０２は、ターゲット機器ＩＤ及びイベント名を検索キーとして、イベント制約定義表５００から、その検索キーに対応する静的制約条件を抽出する。そして、遷移表生成部３０２は、その静的制約条件を、セルＢの「遷移後アニメ制限」に設定する（Ｓ９０３）。すなわち、このＳ９０３では、セルＢからセルＡへ遷移した後のセルＡのアニメ制限が設定される。なお、検索キーにおけるイベント名は、セルＡに遷移されるために発生するイベントのイベント名である。
【００８７】
次に、遷移表生成部３０２は、セルＡに対応するラベル名を基に、当該ラベル名が付与されたフレームをチェックする（Ｓ９０４）。
【００８８】
次に、遷移表生成部３０２は、ステップＳ９０４においてチェックしたフレームが、静的制約条件に記載されている複数の制約条件（例えば、「アニメ要素数」、「アニメ要素サイズ」及び「アニメ再生期間」）のうちの少なくとも１つの制約条件に違反しているか否かを判定する（Ｓ９０５）。ここで、制約条件に違反している場合は（Ｓ９０５：Ｙｅｓ）、ステップＳ９０６へ進む。一方、制約条件に違反していない場合は（Ｓ９０５：Ｎｏ）、ステップＳ９１０へ進む。以下、ステップＳ９０６からの処理を説明する。
【００８９】
次に、遷移表生成部３０２は、セルＡに記載されている、フレーム再生完了後のジャンプ先のフレーム区間のラベル名を、抽出する（Ｓ９０６）。
【００９０】
次に、遷移表生成部３０２は、セルＢに記載されているジャンプ先４１４のラベル名を、ステップＳ９０６で抽出した、フレーム再生完了後のジャンプ先のフレーム区間のラベル名に、置換する（Ｓ９０７）。すなわち、セルＢに対応する通常フレームが静的制約条件に違反している場合、その通常フレームがアニメフレームにジャンプしないような設定が行われる。
【００９１】
次に、遷移表生成部３０２は、アニメが省略される旨の警告をツールの画面に表示する（Ｓ９０８）。なお、ステップＳ９０６の処理において、ジャンプ先のラベル名が見つからない場合は、画面遷移自体がそこで中断してしまうので、その旨の警告がツール（図１を参照して説明したツール）の画面に表示されてもよい。
【００９２】
次に、遷移表生成部３０２は、未処理のアニメセルがあるか否かを判定する（Ｓ９０９）。ここで、未処理のアニメセルがある場合は（Ｓ９０９：Ｙｅｓ）、ステップＳ９０１へ戻る。一方、未処理のアニメセルがない場合は（Ｓ９０９：Ｎｏ）、ステップＳ９１０へ進む。以下、ステップＳ９１０からの処理を説明する。
【００９３】
次に、遷移表生成部３０２は、画面遷移表から、アニメセルＡに対応するアニメフレームへの遷移が記載された、通常フレームに対応するセル（以下、「通常セル」と言うことがある）Ｂを再び抽出する（Ｓ９１０）。
【００９４】
次に、遷移表生成部３０２は、通常セルＢの属する行からイベント名を抽出する（Ｓ９１１）。
【００９５】
次に、遷移表生成部３０２は、ステップＳ９１２にて、ステップＳ９１１で抽出したイベント名を検索キーとして、イベント制約定義表５００から動的制約条件を抽出し、その動的制約条件を、遷移後アニメ制限４１２としてセルＢに追記する（Ｓ９１２）。
【００９６】
次に、遷移表生成部３０２は、未処理セルがあるか否かを判定する（Ｓ９１３）。ここで、未処理セルがある場合は（Ｓ９１３：Ｙｅｓ）、ステップＳ９１０へ戻る。一方、未処理セルがない場合は（Ｓ９１３：Ｎｏ）、処理を終了する。
【００９７】
図１０は、画面遷移表から画面雛形を生成する処理のフローチャートの一例である。
【００９８】
まず、画面雛形生成部３０４は、フレームカウンタを０に設定する（Ｓ１００１）。
【００９９】
次に、画面雛形生成部３０４は、画面遷移表の列のタイトルからラベル名を抽出する（Ｓ１００２）。図１０の説明において、その列を、「対象列」と言う。
【０１００】
次に、画面雛形生成部３０４は、フレームカウンタからフレーム番号を生成する。生成されたフレーム番号は、例えば、フレームカウンタが示す値と一致する番号である。そして、画面雛形生成部３０４は、空の新規フレームを生成し、その新規フレームに、上記生成したフレーム番号と、ステップＳ１００２で抽出したラベル名とを付与する（Ｓ１００３）。
【０１０１】
次に、画面雛形生成部３０４は、対象列（付与されたラベル名の列）からイベント名を全て抽出する（Ｓ１００４）。抽出された各イベント名について、後述のＳ１００５が行われる。以下、１つのイベント名（図１０の説明において「対象イベント名」と言う）を例に取る。
【０１０２】
次に、画面雛形生成部３０４は、抽出された対象イベント名がボタン押下イベントを表すイベント名か否かを判定する（Ｓ１００５）。ここで、ボタン押下イベントの場合は（Ｓ１００５：Ｙｅｓ）、ステップＳ１００６へ進む。一方、ボタン押下イベントでない場合は（Ｓ１００５：Ｎｏ）、ステップＳ１０１１へ進む。以下、ステップ１００６からの処理を説明する。
【０１０３】
次に、画面雛形生成部３０４は、ボタン押下イベントを発生可能とするために、この新規フレームに、表示部品としてボタン雛形を配置する（Ｓ１００６）。
【０１０４】
次に、画面雛形生成部３０４は、コード雛形表７００を参照して、ステップＳ１００６で配置したボタン雛形に対応する対象イベント（対象イベント名から識別されるイベント）のコード雛形を生成し、生成したコード雛形を、新規フレームのスクリプト記載エリアに記載する（Ｓ１００７）。
【０１０５】
次に、画面雛形生成部３０４は、対象イベントに制約条件があるか否かを判定する（Ｓ１００８）。ここで、制約条件がある場合は（Ｓ１００８）、ステップＳ１００９へ進む。一方、制約条件がない場合（Ｓ１００８：Ｎｏ）、ステップＳ１０１３へ進む。以下、ステップＳ１００９からの処理を説明する。
【０１０６】
次に、画面雛形生成部３０４は、新規フレームに配置されたボタン雛形の色を変更する（Ｓ１００９）。これにより、生成後の画面データにおいて、制約がある表示部品は異なる色で表示されるので、視覚的に判別できるようになる。色の変更以外の種類の表示態様変更（強調表示）が採用されて良い。表示態様は、例えば、線の太さ、フォントなどである。
【０１０７】
次に、画面雛形生成部３０４は、対象イベント名に対応するセル（画面遷移表におけるセル）に記載されている制約条件を、コメントとしてコードに追記する（Ｓ１０１０）。
【０１０８】
次に、画面雛形生成部３０４は、ステップＳ１００４で抽出された１以上のイベント名にステップＳ１００５が未処理のイベント名があるか否かを判定する（Ｓ１０１３）。ここで、未処理のイベント名がある場合（Ｓ１０１３：Ｙｅｓ）、ステップＳ１００５へ戻る。一方、未処理のイベントがない場合（Ｓ１０１３：Ｎｏ）、ステップＳ１０１４へ進む。以下、ステップＳ１０１４からの処理を説明する。
【０１０９】
次に、画面雛形生成部３０４は、対象列に属する全てのセルにおいて「アニメフラグ」が「ｔｕｒｅ」か否かを判定する（Ｓ１０１４）。ここで、「アニメフラグ」が「ｔｒｕｅ」の場合は（Ｓ１０１４：Ｙｅｓ）、ステップＳ１０１５へ進む。一方、「アニメフラグ」が「ｆａｌｓｅ」の場合は（Ｓ１０１４：Ｎｏ）、ステップＳ１０１６へ進む。以下、ステップＳ１０１５からの処理を説明する。
【０１１０】
「アニメフラグ」が「ｔｒｕｅ」の場合（Ｓ１０１４：Ｙｅｓ）、画面雛形生成部３０４は、フレームカウンタに５を加算する（Ｓ１０１５）。フレームカウンタに５を加算する理由は、このフレーム区間にアニメのフレームを挿入するためである。一方、「アニメフラグ」が「ｆａｌｓｅ」の場合（Ｓ１０１４：Ｎｏ）、画面雛形生成部３０４は、フレームカウンタに１を加算する。
【０１１１】
次に、画面雛形生成部３０４は、画面遷移表で未処理の列が残っているか否かを判定する（Ｓ１０１７）。ここで、未処理の列が残っている場合は（Ｓ１０１７：Ｙｅｓ）、ステップＳ１００２へ戻る。一方、未処理の列が残っていない場合は（Ｓ１０１７：Ｎｏ）、処理を終了する。
【０１１２】
ところで、ステップＳ１００５において、ボタン押下イベントでない場合（Ｓ１００５：Ｎｏ）、画面雛形生成部３０４は、コード雛形をスクリプト記載エリア挿入する（Ｓ１０１１）。
【０１１３】
次に、画面雛形生成部３０４は、対象イベント名に対応するセル（画面遷移表におけるセル）に記載されている制約条件を、コメントとしてコードに追記し（Ｓ１０１２）、ステップＳ１０１３に進む。以降の処理は、上記と同様である。
【０１１４】
この図１０に示す一連の処理により、画面データの雛形３０３が生成される。
【０１１５】
以上が、本実施形態についての説明である。
【０１１６】
本実施形態によれば、開発者は、画面遷移表を基にＧＵＩにおけるフレームの遷移の流れを簡単に把握することができる。
【０１１７】
また、本実施形態によれば、ターゲット機器のスペックに応じた適切な制約条件（静的制約条件及び動的制約条件）がソフトウェア（例えばコード）に反映される。このため、開発者による開発の負荷が軽減される。
【０１１８】
また、本実施形態によれば、ターゲット機器のＣＰＵ使用率等に応じて、アニメ等の動作を制約する制約条件がソフトウェア（例えばコード）に反映される。このため、開発者は、ユーザフレンドリーなソフトウェアを開発することができる。
【０１１９】
また、本実施形態によれば、画面データ３０１の複雑度が低い場合はスクリプトコードを生成し、画面データ３０１の複雑度が高い場合はネイティブコードが生成される。これにより、拡張性と実行速度のバランスがとれたソフトウェアを作成することができる。
【０１２０】
なお、上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【０１２１】
例えば、ボタン操作時に音を出す必要がある場合は、音に対する制約条件を定めて、画面遷移表に制約条件として記載してもよい。また、本実施形態では、タイムライン型画面設計ツール自体に機能を内蔵したが、プラグインとして既存のツールに機能が追加されてもよい。
【０１２２】
また、上述したソフトウェア作成支援装置３００は、デザイナーと開発者の連携に有効である。このため、例えば、装置３００は、デザイナー用の認証情報（例えばログインＩＤ）と開発者用の認証情報（例えばログインＩＤ）とを管理していて、ユーザから入力された認証情報がデザイナー用であるか開発者用であるかによって、そのユーザに対して提供するサービス（実行するプログラム）を選択して良い。例えば、入力された認証情報がデザイナー用の認証情報であれば、プログラム３４０が実行されプログラム３５０は実行されず、一方、入力された認証情報が開発者用の認証情報であれば、プログラム３５０が実行されてプログラム３４０は実行されないで良い。
【０１２３】
また、例えば、ターゲット機器ＩＤは、ターゲット機器の種類のＩＤであっても良い。
【符号の説明】
【０１２４】
１００  ソフトウェア作成支援装置の画面表示例
３００  ソフトウェア作成支援装置
３０２  遷移表生成部
３１３  ドキュメント生成部
３１６  記憶部
３１７  複雑度判定部
３１８  コード雛形生成部
３１９  コード結合部
３２２  画面表示プログラム生成部
３２３  モジュール生成部
３４０  画面設計プログラム
３５０  画面遷移生成プログラム
４００  画面遷移表
５００  イベント制約定義表
７００  コード雛形表
【図１】
0005511704.tif 000002
【図２】
0005511704.tif 000003
【図３】
0005511704.tif 000004
【図４】
0005511704.tif 000005
【図５】
0005511704.tif 000006
【図６】
0005511704.tif 000007
【図７】
0005511704.tif 000008
【図８】
0005511704.tif 000009
【図９】
0005511704.tif 000010
【図１０】
0005511704.tif 000011