(57)【要約】【課題】ビジュアル言語によって作成されたプログラムを小さなコンピュータにおいて動作させるための技術を提供する。【解決手段】プログラム変換装置１は、ビジュアルプログラムを構成する複数のルールのなかから、対象イベントと同一の表示変更イベントと、対象図形と同一種類の表示変更前図形であって対象図形と同一または最も類似する表示変更前図形をパラメータとして含むルールを抽出するためのルール抽出命令を生成するルール抽出命令生成部（タイプ１ルール用ルール抽出命令生成部１２１）と、ルール抽出命令によって抽出されたルールを用いて対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成部（タイプ１ルール用表示変更命令生成部１２２）と、生成されたルール抽出命令と表示変更命令とから手続き型プログラムを生成するプログラム生成部とを備える。【選択図】図１
2011002959.tif 000002
【特許請求の範囲】
【請求項１】
表示変更イベント、表示変更前図形および表示変更後図形をパラメータとするルールであって、図形の表示を変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換装置であって、
一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと、前記対象図形と同一種類の前記表示変更前図形であって前記対象図形と同一または最も類似する前記表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成部と、
前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成部と、
前記ルール抽出命令生成部によって生成された前記ルール抽出命令と、前記表示変更命令生成部によって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成部と
を備えることを特徴とするプログラム変換装置。
【請求項２】
前記ルール抽出命令生成部は、
前記対象図形との角度差が極小である前記表示変更前図形を前記対象図形と同一または最も類似する前記表示変更前図形とすることによって、前記ルールを抽出する前記ルール抽出命令を生成することを特徴とする請求項１に記載のプログラム変換装置。
【請求項３】
前記ルール抽出命令生成部は、
前記対象図形との角度差が所定の閾値未満である前記表示変更前図形を前記対象図形と同一または最も類似する前記表示変更前図形とすることによって、前記ルールを抽出する前記ルール抽出命令を生成することを特徴とする請求項１または請求項２に記載のプログラム変換装置。
【請求項４】
表示変更イベント、２つの表示変更前図形および２つの表示変更後図形をパラメータとするルールであって、２つの表示変更前図形の表示を関連させて変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換装置であって、
一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、一方の表示変更前図形の表示に対する他方の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記２つの表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成部と、
前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成部と、
前記ルール抽出命令生成部によって生成された前記ルール抽出命令と、前記表示変更命令生成部によって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成部と
を備えることを特徴とするプログラム変換装置。
【請求項５】
前記ルール抽出命令生成部は、前記２つの表示変更前図形の距離と前記対象図形と任意の図形との距離との差が極小である前記２つの表示変更前図形を、前記同一または最も類似する前記２つの表示変更前図形とすることによって、前記ルールを抽出する前記ルール抽出命令を生成することを特徴とする請求項４に記載のプログラム変換装置。
【請求項６】
前記ルール抽出命令生成部は、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、第１の表示変更前図形の表示に対する第２の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記第１の表示変更前図形と前記第２の表示変更前図形とをパラメータとして含む第１のルールを抽出するためのルール抽出命令を生成し、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、第２の表示変更前図形の表示に対する第１の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記第２の表示変更前図形と前記第１の表示変更前図形とをパラメータとして含む第２のルールを抽出するためのルール抽出命令を生成し、
前記表示変更命令生成部は、前記第１のルールに含まれる前記第１の表示変更前図形の表示に対する前記第２の表示変更前図形の表示の関係が、前記第２のルールに含まれる前記第２の表示変更前図形の表示に対する前記第１の表示変更前図形の表示の関係よりも前記対象図形の表示に対する任意の図形の表示の関係に類似している場合、前記第１のルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成し、前記第２のルールに含まれる前記第２の表示変更前図形の表示に対する前記第１の表示変更前図形の表示の関係が、前記第１のルールに含まれる前記第１の表示変更前図形の表示に対する前記第２の表示変更前図形の表示の関係よりも前記対象図形の表示に対する任意の図形の表示の関係に類似している場合、前記第２のルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成することを特徴とする請求項４または請求項５に記載のプログラム変換装置。
【請求項７】
表示変更イベント、表示変更前図形および表示変更後図形をパラメータとするルールであって、図形の表示を変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換方法であって、
一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと、前記対象図形と同一種類の前記表示変更前図形であって前記対象図形と同一または最も類似する前記表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成手段と、
前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成手段と、
前記ルール抽出命令生成手段によって生成された前記ルール抽出命令と、前記表示変更命令生成手段によって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成手段と
を備えることを特徴とするプログラム変換方法。
【請求項８】
表示変更イベント、２つの表示変更前図形および２つの表示変更後図形をパラメータとするルールであって、２つの表示変更前図形の表示を関連させて変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換方法であって、一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、一方の表示変更前図形の表示に対する他方の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記２つの表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成手段と、
前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成手段と、
前記ルール抽出命令生成手段によって生成された前記ルール抽出命令と、前記表示変更命令生成手段によって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成手段と
を備えることを特徴とするプログラム変換方法。
【請求項９】
表示変更イベント、表示変更前図形および表示変更後図形をパラメータとするルールであって、図形の表示を変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換装置のコンピュータに、
一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと、前記対象図形と同一種類の前記表示変更前図形であって前記対象図形と同一または最も類似する前記表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成ステップと、
前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成ステップと、
前記ルール抽出命令生成ステップによって生成された前記ルール抽出命令と、前記表示変更命令生成ステップによって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成ステップと
を実行させることを特徴とするプログラム。
【請求項１０】
表示変更イベント、２つの表示変更前図形および２つの表示変更後図形をパラメータとするルールであって、２つの表示変更前図形の表示を関連させて変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換装置のコンピュータに、
一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、一方の表示変更前図形の表示に対する他方の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記２つの表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成ステップと、
前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成ステップと、
前記ルール抽出命令生成ステップによって生成された前記ルール抽出命令と、前記表示変更命令生成ステップによって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成ステップと
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム変換装置、プログラム変換方法およびプログラムに関する。
【背景技術】
【０００２】
Ｆｌａｓｈ（登録商標）やＪａｖａ（登録商標）などのプログラム言語を用いることで、携帯電話上で動作する、簡易なゲームなどある程度のコンテンツ（例えば、インタラクティブなゲーム）を作成することができる。当該コンテンツは、一般に、文字を記述する従来的なプログラミングを必要とするため、通常、専門的な知識を有する専門家によって作成されている。
【０００３】
ビジュアル言語を用いて図形を操作することによって、インタラクティブなアニメーションのプログラムを作成することができる（例えば、特許文献１参照）。特許文献１に係る技術では、初期状態の図形（座標、位置、色、図形の種類等）と目的状態の図形とを視覚的に与えるようなルールを記述する（初期状態の図形をルールの左辺に記述し、目的状態の図形をルールの右辺に記述する）ことによってプログラミングを行う。即ち、上記のようにして作成（記述）されたルールの集合と、アプリケーションの初期状態の図形の配置（位置座標、角度、図形の種類等）の集合とがプログラムである。表示画面には、与えられたアプリケーションの初期状態の配置で、各図形が配置される。各ルールには、当該ルールを起動させるためのイベント（マウスクリックや所定のキー操作等）が定義されている。これにより、プログラムされたルールの集合の中から、ユーザによって入力されたイベントに応じて、表示画面上の図形の状態（位置関係、角度、図形の種類等）に合致したルールが適用され、図形の書き換えが行われる。これが繰り返されることで、表示画面上の図形が動くアニメーションなどのアプリケーションになる。
【０００４】
以上のように、プログラムを視覚的に作成するビジュアル言語（例えば、特許文献１に開示されたプログラム言語）によるプログラミングの場合、文字を記述するプログラミング言語によるプログラミングの場合とは異なり、専門的な知識を有しない者（例えば、児童）であっても、ある程度のコンテンツを短時間で作成することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１８３８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、プログラムを視覚的に作成するビジュアル言語では、初期状態は実行時に与えられるため、実行時において、与えられたルールの集合のうち表示画面上のどの図形にどのルールを適用するかを解釈するための複雑な処理が必要となる。このため、大きなメモリ容量と大きな計算量が必要であり、携帯電話のような小さなコンピュータにおいて動作させることは困難であるという問題がある。
【０００７】
本発明は、このような事情を考慮してなされたものであり、その目的は、プログラムを視覚的に作成するビジュアル言語（例えば、特許文献１に開示されたプログラム言語）によって作成されたプログラムを、携帯電話のような小さなコンピュータにおいて動作させるための技術を提供することにある。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本発明の第１の実施態様であるプログラム変換装置は、表示変更イベント、表示変更前図形および表示変更後図形をパラメータとするルールであって、図形の表示を変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換装置であって、一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと、前記対象図形と同一種類の前記表示変更前図形であって前記対象図形と同一または最も類似する前記表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成部と、前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成部と、前記ルール抽出命令生成部によって生成された前記ルール抽出命令と、前記表示変更命令生成部によって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成部とを備えることを特徴とする。
【０００９】
上記プログラム変換装置の前記ルール抽出命令生成部は、前記対象図形との角度差が極小である前記表示変更前図形を前記対象図形と同一または最も類似する前記表示変更前図形とすることによって、前記ルールを抽出する前記ルール抽出命令を生成するようにしてもよい。
【００１０】
上記プログラム変換装置の前記ルール抽出命令生成部は、前記対象図形との角度差が所定の閾値未満である前記表示変更前図形を前記対象図形と同一または最も類似する前記表示変更前図形とすることによって、前記ルールを抽出する前記ルール抽出命令を生成するようにしてもよい。
【００１１】
上述した課題を解決するために、本発明の第２の実施態様であるプログラム変換装置は、表示変更イベント、２つの表示変更前図形および２つの表示変更後図形をパラメータとするルールであって、２つの表示変更前図形の表示を関連させて変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換装置であって、一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、一方の表示変更前図形の表示に対する他方の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記２つの表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成部と、前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成部と、前記ルール抽出命令生成部によって生成された前記ルール抽出命令と、前記表示変更命令生成部によって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成部とを備えることを特徴とする。
【００１２】
上記プログラム変換装置の前記ルール抽出命令生成部は、前記２つの表示変更前図形の距離と前記対象図形と任意の図形との距離との差が極小である前記２つの表示変更前図形を、前記同一または最も類似する前記２つの表示変更前図形とすることによって、前記ルールを抽出する前記ルール抽出命令を生成するようにしてもよい。
【００１３】
上記プログラム変換装置の前記ルール抽出命令生成部は、前記ルール抽出命令生成部は、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、第１の表示変更前図形の表示に対する第２の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記第１の表示変更前図形と前記第２の表示変更前図形とをパラメータとして含む第１のルールを抽出するためのルール抽出命令を生成し、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、第２の表示変更前図形の表示に対する第１の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記第２の表示変更前図形と前記第１の表示変更前図形とをパラメータとして含む第２のルールを抽出するためのルール抽出命令を生成し、前記表示変更命令生成部は、前記第１のルールに含まれる前記第１の表示変更前図形の表示に対する前記第２の表示変更前図形の表示の関係が、前記第２のルールに含まれる前記第２の表示変更前図形の表示に対する前記第１の表示変更前図形の表示の関係よりも前記対象図形の表示に対する任意の図形の表示の関係に類似している場合、前記第１のルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成し、前記第２のルールに含まれる前記第２の表示変更前図形の表示に対する前記第１の表示変更前図形の表示の関係が、前記第１のルールに含まれる前記第１の表示変更前図形の表示に対する前記第２の表示変更前図形の表示の関係よりも前記対象図形の表示に対する任意の図形の表示の関係に類似している場合、前記第２のルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成するようにしてもよい。
【００１４】
上述した課題を解決するために、本発明の第３の実施態様であるプログラム変換方法は、表示変更イベント、表示変更前図形および表示変更後図形をパラメータとするルールであって、図形の表示を変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換方法であって、一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと、前記対象図形と同一種類の前記表示変更前図形であって前記対象図形と同一または最も類似する前記表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成手段と、前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成手段と、前記ルール抽出命令生成手段によって生成された前記ルール抽出命令と、前記表示変更命令生成手段によって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成手段とを備えることを特徴とする。
【００１５】
上述した課題を解決するために、本発明の第４の実施態様であるプログラム変換方法は、表示変更イベント、２つの表示変更前図形および２つの表示変更後図形をパラメータとするルールであって、２つの表示変更前図形の表示を関連させて変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換方法であって、一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、一方の表示変更前図形の表示に対する他方の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記２つの表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成手段と、前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成手段と、前記ルール抽出命令生成手段によって生成された前記ルール抽出命令と、前記表示変更命令生成手段によって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成手段とを備えることを特徴とする。
【００１６】
上述した課題を解決するために、本発明の第５の実施態様であるプログラム変換方法は、表示変更イベント、表示変更前図形および表示変更後図形をパラメータとするルールであって、図形の表示を変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換装置のコンピュータに、一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと、前記対象図形と同一種類の前記表示変更前図形であって前記対象図形と同一または最も類似する前記表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成ステップと、前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成ステップと、前記ルール抽出命令生成ステップによって生成された前記ルール抽出命令と、前記表示変更命令生成ステップによって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成ステップとを実行させることを特徴とする。
【００１７】
上述した課題を解決するために、本発明の第６の実施態様であるプログラム変換方法は、表示変更イベント、２つの表示変更前図形および２つの表示変更後図形をパラメータとするルールであって、２つの表示変更前図形の表示を関連させて変更させるルールから構成されるビジュアルプログラムを、手続き型プログラムに変換するプログラム変換装置のコンピュータに、一の表示変更イベントが対象イベントとして与えられ、一の図形が対象図形として与えられた場合に、前記ビジュアルプログラムを構成する複数の前記ルールのなかから、前記対象イベントと同一の前記表示変更イベントと前記対象図形と同一種類の前記表示変更前図形とをパラメータとして含む前記ルールであって、一方の表示変更前図形の表示に対する他方の表示変更前図形の表示の関係が前記対象図形の表示に対する任意の図形の表示の関係と同一または最も類似する前記２つの表示変更前図形をパラメータとして含む前記ルールを抽出するためのルール抽出命令を生成するルール抽出命令生成ステップと、前記ルール抽出命令によって抽出された前記ルールを用いて前記対象図形の表示を変更させるための表示変更命令を生成する表示変更命令生成ステップと、前記ルール抽出命令生成ステップによって生成された前記ルール抽出命令と、前記表示変更命令生成ステップによって生成された前記表示変更命令とから前記手続き型プログラムを生成するプログラム生成ステップとを実行させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、携帯電話のような小さなコンピュータにおいて、プログラムを視覚的に作成するビジュアル言語によって作成されたプログラムを動作させることができるようになる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態による変換装置１の構成例を示すブロック図である。
【図２】図形を説明するための説明図である。
【図３】図形の書き換えを模式的に示す模式図である。
【図４】タイプ１ルール用変換部１２にて生成される命令（ルール抽出命令、表示変更命令）によって示されるフローチャートの一例である。
【図５】タイプ１ルール用変換部１２にて生成される命令（ルール抽出命令、表示変更命令）の一例である。
【図６】タイプ２ルール用変換部１３にて生成される命令（ルール抽出命令、表示変更命令）によって示されるフローチャートの一例である。
【図７】タイプ２ルール用変換部１３にて生成される命令（ルール抽出命令）によって示されるフローチャートの一例である。
【図８】タイプ２ルール用変換部１３にて生成される命令（ルール抽出命令）によって示されるフローチャートの一例である。
【図９】タイプ２ルール用変換部１３にて生成される命令（ルール抽出命令、表示変更命令）の一例である。
【発明を実施するための形態】
【００２０】
以下、本発明の一実施形態について図面を参照して説明する。本発明の一実施形態による変換装置１（例えば、コンパイラ）は、図１に示すように、ネットワークを介して、外部の記憶装置２と通信する。変換装置１は、送受信部１９、タイプ１ルール用変換部１２、タイプ２ルール用変換部１３およびプログラム生成部１４を備える。タイプ１ルール用変換部１２はタイプ１ルール用ルール抽出命令生成部１２１およびタイプ１ルール用表示変更命令生成部１２２を備え、タイプ２ルール用変換部１３はタイプ２ルール用ルール抽出命令生成部１３１およびタイプ２ルール用表示変更命令生成部１３２を備える。
【００２１】
なお、図１に破線にて示すようにタイプ１ルール用ルール抽出命令生成部１２１およびタイプ２ルール用ルール抽出命令生成部１３１は、本発明のルール抽出命令生成部に相当する。また、タイプ１ルール用表示変更命令生成部１２２およびタイプ２ルール用表示変更命令生成部１３２は、本発明の表示変更命令生成部に相当する。
【００２２】
まず、記憶装置２について説明する。記憶装置２は、図１に示すように、記憶部２０および送受信部２９を備える。
【００２３】
記憶装置２の記憶部２０は、変換装置１へ出力される、ビジュアル言語で作成されたプログラム（以下、「ビジュアルプログラム」という）と、プログラム変換装置１から入力される、手続き型言語で作成されたプログラム（以下、「手続き型プログラム」という）とを記憶する。手続き型プログラムは、後述するが、変換装置１によるビジュアルプログラムの変換結果である。
【００２４】
ビジュアルプログラムは、ビジュアル言語で作成されたコンパイル可能なルールの集合と、図形（絵）の配置の初期値を格納したファイルである。ビジュアル言語は、本来、コンパイル可能な種々の形式のルールを記述することができるが、便宜上、下記形式（下記式（１）または下記式（２））にて示されるルールについて説明する。なお、一般的なユーザの作成するプログラムに使用されるルールの形式は、当該形式であることが多く、また、ルールの形式を当該形式に限定しても十分多様な動作を記述し得るので、実用的な観点からはビジュアル言語の表現能力をほとんど損ねることがない。
【００２５】
（ｅｖｅｎｔ  Ｆ１  Ｆ２）  →  （ｆ１  ｆ２）  ・・・（１）
（ｅｖｅｎｔ  Ｆ１）  →  （ｆ１）  ・・・（２）
【００２６】
上記式（１）において、「Ｆ２」「ｆ２」の要素が存在しないものが、上記式（２）である。以下、上記式（２）に示すルールをタイプ１ルール、上記式（１）に示すルールをタイプ２ルールという。なお、タイプ１ルールおよびタイプ２ルールの詳細は後述する。
【００２７】
上記式（１）（２）において、「ｅｖｅｎｔ」は動作を開始または終了させるために入力手段（キーボード等）からイベント（本発明の表示変更イベントに相当する）である。イベントの集合Ｉは、下記式（３）によって記述される。即ち、イベントは、集合Ｉの何れかの要素に対応する。
【００２８】
Ｉ＝｛ｎｏｎｅ，ｋｅｙ１，・・・，ｋｅｙＮ−１｝  ・・・（３）
但し、Ｎはイベントの総数である。
【００２９】
上記式（３）において、「ｎｏｎｅ」は何も入力しない場合、「ｋｅｙ１」，・・・，「ｋｅｙＮ−１」は、キーボード上の所定キー（例えば、上、下、左、右などの方向キー）を押した場合またはマウスをクリックした場合などである。なお、イベントの値は、集合Ｉの何れのイベントであるかを識別するためのＩＤのようなもので記述してもよい。
【００３０】
上記式（１）（２）において、「Ｆ１」「Ｆ２」「ｆ１」「ｆ２」は図形である。「Ｆ１」および「Ｆ２」は書き換え前（表示変更前）の図形（本発明の表示変更前図形に相当する）、「ｆ１」および「ｆ２」は書き換え後（表示変更後）の図形（本発明の表示変更後図形に相当する）である。ユーザは、空間に図形を配置することで視覚的にルールを作成するが、これを、ビジュアルプログラムとして保存する際には、各ルールにおける「Ｆ１」「Ｆ２」「ｆ１」「ｆ２」のような図形は、４つの要素（下記式（４））を用いて記述される。
【００３１】
（ｔｙｐｅ，ｘ，ｙ，ｒｏｔａｔｉｏｎ）  ・・・（４）
【００３２】
上記式（４）において、「ｔｙｐｅ」は、図形の種類であって、同じ図形が識別できるような値であれば、数値や記号など何でもよい。例えば、図２に示す例において、ｔｙｐｅは車である。「ｘ」および「ｙ」は、図２に示すように、表示画面上の図形の中心点のｘ座標およびｙ座標である。「ｒｏｔａｔｉｏｎ」は、図２に示すように、表示画面上の図形の向いている角度であって、ｘ軸方向を０度（基準）として、−１８０度〜１８０度の値をとる。なお、上記式（４）は、図形の記述例であって、例えば、当該４つ要素に代えてまたは加えて、他の要素（例えば、図形の色）を用いて図形を記述してもよい。
【００３３】
以下、ある図形Ａの種類を「Ａ．ｔｙｐｅ」と表現するものとする。同様に、図形Ａのｘ座標を「Ａ．ｘ」と表現し、図形Ａのｙ座標を「Ａ．ｙ」と表現し、図形Ａの角度を「Ａ．ｒｏｔａｔｉｏｎ」と表現するものとする。例えば、図形Ｆ１に係る上記式（４）の各要素は、「Ｆ１．ｔｙｐｅ」、「Ｆ１．ｘ」、「Ｆ１．ｙ」、「Ｆ１．ｒｏｔａｔｉｏｎ」と表現される。
【００３４】
また、あるルールｒ内の要素「ｅｖｅｎｔ」を「ｒ．ｅｖｅｎｔ」と表現し、ルールｒ内の要素「Ｆ１」を「ｒ．Ｆ１」と表現し、ルールｒ内の要素「ｆ１」を「ｒ．ｆ１」と表現ものとする。要素「Ｆ２」、要素「ｆ２」についても同様である。
【００３５】
また、あるルールｒのある図形Ａの各要素を、「ｒ．Ａ．ｔｙｐｅ」、「ｒ.Ａ．ｘ」、「ｒ.Ａ．ｙ」、「ｒ.Ａ．ｒｏｔａｔｉｏｎ」と表現するものとする。例えば、ルールｒの図形Ｆ１の各要素は、「ｒ．Ｆ１．ｔｙｐｅ」、「ｒ．Ｆ１．ｘ」、「ｒ．Ｆ１．ｙ」、「ｒ．Ｆ１．ｒｏｔａｔｉｏｎ」と表現される。
【００３６】
タイプ１ルールは、１つの図形を書き換えるルール（表示を変更させるルール）である。つまり、アプリケーションを動作させる画面上の座標「（Ｆ１．ｘ，Ｆ１．ｙ）」に角度「Ｆ１．ｒｏｔａｔｉｏｎ」で置かれたＦ１．ｔｙｐｅの図形Ｆ１を、座標（ｆ１．ｘ，ｆ１．ｙ）に角度ｆ１．ｒｏｔａｔｉｏｎで置かれたｆ１．ｔｙｐｅの図形ｆ１に書き換える。つまり、タイプ１ルールは、「Ｆ１．ｔｙｐｅ」、「Ｆ１．ｘ」、「Ｆ１．ｙ」、「Ｆ１．ｒｏｔａｔｉｏｎ」と表現される図形Ｆ１を、「ｆ１．ｔｙｐｅ」、「ｆ１．ｘ」、「ｆ１．ｙ」、「ｆ１．ｒｏｔａｔｉｏｎ」と表現される図形ｆ１に書き換える。図３（ａ）は、タイプ１ルールによる図形の書き換え例である。
【００３７】
タイプ２ルールは、２つの図形を関連させて書き換えるルール（表示を変更させるルール）である。つまり、座標（Ｆ１．ｘ，Ｆ１．ｙ）に角度Ｆ１．ｒｏｔａｔｉｏｎで置かれたＦ１．ｔｙｐｅの図形Ｆ１と、座標（Ｆ２．ｘ，Ｆ２．ｙ）に角度Ｆ２．ｒｏｔａｔｉｏｎで置かれたＦ２．ｔｙｐｅの図形Ｆ２とを、座標（ｆ１．ｘ，ｆ１．ｙ）に角度ｆ１．ｒｏｔａｔｉｏｎで置かれたｆ１．ｔｙｐｅの図形ｆ１と、座標（ｆ２．ｘ，ｆ２．ｙ）に角度ｆ２．ｒｏｔａｔｉｏｎで置かれたｆ２．ｔｙｐｅの図形ｆ２とに書き換える。例えば、タイプ２ルールによれば、進行方向に出現する障害物（図形Ｆ２）を左方向に回避する車（図形Ｆ１）の動作を記述することができる。
【００３８】
以上のように、ビジュアルプログラムのファイルは、上記式（４）のように図形を記述した上記式（１）（２）の形式のルールと、アプリケーション（アニメーション等）におけるＭ個の図形Ｏ１，Ｏ２，・・・，ＯＭの初期値（上記式（４）の情報）が格納されている。
【００３９】
記憶装置２の送受信部２９は、記憶部２０に記憶されたビジュアルプログラムに含まれるルールを取り出して、変換装置１に送信する。また、送受信部２９は、変換装置１から手続き型プログラムを取得して、記憶部２０に記憶する。
【００４０】
続いて、変換装置１について説明する。変換装置１の送受信部１９は、記憶装置２からビジュアルプログラムに含まれるルール（タイプ１ルールおよびタイプ２ルール）を取得する。送受信部１９は、記憶装置２から取得したタイプ１ルールをタイプ１ルール用変換部１２（タイプ１ルール用ルール抽出命令生成部１２１）に供給し、記憶装置２から取得したタイプ２ルールをタイプ２ルール用変換部１３（タイプ２ルール用ルール抽出命令生成部１３１）に供給する。また、送受信部１９は、プログラム生成部１４から手続き型プログラムを取得する。送受信部１９は、プログラム生成部１４から取得した手続き型プログラムを記憶装置２に送信する。
【００４１】
タイプ１ルール用変換部１２は、送受信部１９から受信したタイプ１ルールに関して、イベントの種類（ｋとする）に応じて、アプリケーションで用いられる各図形（Ｏ１，Ｏ２，・・・，ＯＭ）を書き換えるための手続き型の言語の命令（命令文）を生成する。
【００４２】
具体的には、タイプ１ルール用変換部１２は、書き換え対象の図形であるターゲット図形（本発明の対象図形に相当する）が既に選択されていると仮定して、当該ターゲット図形に対してタイプ１ルールに従ってターゲット図形を書き換えるための手続き型言語の命令文を生成する。タイプ１ルール用変換部１２は、ターゲット図形毎、上述の手続き型言語の命令文を生成し、イベントの種類（ｋ）とともに、プログラム生成部１４に供給する。
【００４３】
なお、変換装置１において最終的に生成されるものは、アプリケーションで用いられる各図形（Ｏ１，Ｏ２，・・・，ＯＭ）を、イベントの種類（ｋ）に応じて動作させる（書き換える）手続き型プログラムである。なお、各図形を対象として書き換え動作をする手続き型プログラムは、プログラム生成部１４にて生成される。
【００４４】
以下、詳細に説明する。タイプ１ルール用変換部１２のタイプ１ルール用ルール抽出命令生成部１２１は、送受信部１９から受信したタイプ１ルールに関して、イベントの種類（ｋ）に応じて、アプリケーションで用いられる各図形（Ｏ１，Ｏ２，・・・，ＯＭ）を書き換えるためのタイプ１ルールを抽出するためのルール抽出命令（ルール抽出命令文）を生成する。即ち、タイプ１ルール用ルール抽出命令生成部１２１は、一のイベントが対象イベント（ｋ）として与えられ、一の図形がターゲット図形として与えられた場合に、ビジュアルプログラムを構成する複数のタイプ１ルールのなかから、対象イベントと同一のイベントと、ターゲット図形と同一種類の書き換え前の図形であってターゲット図形と同一または最も類似する書き換え後の図形をパラメータとして含むタイプ１ルールを抽出するためのルール抽出命令を生成する。
【００４５】
タイプ１ルール用ルール抽出命令生成部１２１は、ターゲット図形との角度差が極小である書き換え前の図形をターゲット図形と同一または最も類似する書き換え前の図形とすることによって、ルール抽出命令を生成してもよい。また、タイプ１ルール用ルール抽出命令生成部１２１は、ターゲット図形との角度差が所定の閾値未満である書き換え前の図形をターゲット図形と同一または最も類似する書き換え前の図形とすることが好ましい。
【００４６】
タイプ１ルール用変換部１２のタイプ１ルール用表示変更命令生成部１２２は、タイプ１ルール用ルール抽出命令生成部１２１によって生成されたルール抽出命令によって抽出されたルールを用いてターゲット図形の表示を変更させるための表示変更命令（表示変更命令文）を生成する。
【００４７】
図４は、タイプ１ルール用変換部１２にて生成される手続き型言語の命令によって示されるフローチャートの一例である。図４において、ステップＳ１乃至ステップＳ８は、タイプ１ルール用ルール抽出命令生成部１２１によって生成されるルール抽出命令によって示される部分、ステップＳ９およびステップＳ１０は、タイプ１ルール用表示変更命令生成部１２２によって生成される表示変更命令によって示される部分である。以下、図４のフローチャートを説明する。なお、図４において、アプリケーションで用いられる図形の集合はＯ＝｛Ｏ１，Ｏ２，・・・，ＯＭ｝、ターゲット図形のインデックスはｔである（つまり、ターゲット図形はＯｔである）。
【００４８】
ステップＳ１は、インデックスｊのルールであるルールｒｊの退避先であるルールｐを初期化する処理である。つまり、ステップＳ１は、書き換えに使用するルールｐ（ルールｒｊの複製）を初期化する処理である。ステップＳ２は、インデックスｊを初期化する処理である。
【００４９】
ステップＳ３は、ルールｒｊが所定の条件をクリアするか否かを判断する処理である。所定の条件は、「ルールｒｊのイベントの種類はｋである」、「ルールｒｊの左辺の第２要素の図形の種類（ｒｊ．Ｆ１．ｔｙｐｅ）はターゲット図形Ｏｔの種類（Ｏｔ．ｔｙｐｅ）と同一である」、および、「ルールｒｊはタイプ１ルールである」の３つのＡＮＤ条件である。なお、ルールｒｊがタイプ１ルールであるかタイプ２ルールであるかは、ルールｒｊの要素数に基づいて判断している。具体的には、ルールの左辺の第３要素がない場合（ｒｊ．Ｆ２ ＝ｎｕｌｌの場合）、タイプ１ルールと判断する。なお、記号「＝＝」は左辺と右辺が等価である旨を表す記号である。
【００５０】
ステップＳ４は、ルールｒｊの左辺の図形の角度（ｒｊ．Ｆ１．ｒｏｔａｔｉｏｎ）とターゲット図形Ｏｔの角度（Ｏｔ．ｒｏｔａｔｉｏｎ）との角度差ｄを算出する処理である。なお、ステップＳ４の記号「←」は右辺の値を左辺に代入する旨を表す記号である（他のステップにおいても同様である）。
【００５１】
ステップＳ５は、角度差ｄと比較値θとを比較する処理である。なお、比較値θの値は、ルールｒｊのカウンタｊ迄における最小の角度差ｄが格納されるが（ステップＳ６参照）、比較値θの初期値は、閾値として、０°≦θ＜３６０°の範囲で予め任意に設定しておく。ステップＳ６は、カウンタｊ迄における、最小の角度差ｄを比較値θに代入するとともに、角度差ｄが最小であるルールｒｊをルールｐに代入する処理である。
【００５２】
ステップＳ７は、インデックスｊをインクリメントする処理である。ステップＳ８は、ｊ≦Ｎの間、ステップＳ３からステップＳ７を繰り返し実行させる処理である。ステップＳ３からステップＳ７を繰り返し実行することによって、ビジュアルプログラムに格納されているルールｒｊのうち、ステップＳ３の所定の条件をクリアするルールであって、ターゲット図形Ｏｔの角度（Ｏｔ．ｒｏｔａｔｉｏｎ）とルールｒｊの左辺の図形の角度（ｒｊ．Ｆ１．ｒｏｔａｔｉｏｎ）との角度差ｄが最小であるルールｒｊを、書き換えに使用するルールｐとして抽出（選択）している。
【００５３】
ステップＳ９は、書き換えに使用するルールｐが抽出されているか否かを判断する処理である。ステップＳ１０は、ルールｐが抽出されている場合に（ステップＳ９：Ｙｅｓ）、ルールｐに従って、ターゲット図形Ｏｔを変換する処理（図形を書き換える処理、つまり、図形の表示を変更する処理）である。なお、「ｔｒａｎｓｆｏｒｍ（ｔ，ａ，ｂ）」は、図形ａを図形ｂへ書き換えるルールに従って、図形ｔを書き換えたときの書き換え後の状態（図形の種類、ｘ座標、ｙ座標、角度）を計算して返す関数である図５参照）。
【００５４】
図４のフローチャートによれば、ルールｒｊの左辺の図形の角度（ｒｊ．Ｆ１．ｒｏｔａｔｉｏｎ）とターゲット図形Ｏｔの角度（Ｏｔ．ｒｏｔａｔｉｏｎ）との角度差ｄが閾値θ（初期値として設定する比較値θ）未満のルールｒｊであって、かつ、角度差ｄが最小であるルールｒｊを、ターゲット図形Ｏｔの状態（配置、角度）に近いルールｒｊとして抽出（探索）し、抽出したルールｐを適用し、ターゲット図形Ｏｔを書き換えている（ターゲット図形Ｏｔの表示を変更している）。
【００５５】
なお、角度差ｄが、比較値θ以上の場合（ステップＳ５：Ｎｏ）、ステップＳ６を飛ばしてルールｒｊをルールｐとして抽出しないようにしているが、左辺の図形の角度（ｒｊ．Ｆ１．ｒｏｔａｔｉｏｎ）がターゲット図形Ｏｔの角度（Ｏｔ．ｒｏｔａｔｉｏｎ）と近いルールｒｊがビジュアルプログラムに１つも格納されていない場合、即ち、ターゲット図形Ｏｔの角度と近い角度の図形に関するルールｒｊが全く存在しない場合、ルールｒｊ（即ち、ルールｐ）を用いて、ターゲット図形Ｏｔの書き換えを行わないようにするためである。なお、ターゲット図形Ｏｔの角度と近い角度の図形に関するルールｒｊが全く存在しない場合、ルールｐは１度も抽出されないため（ルールｐはｎｕｌｌのままであるため）、ステップＳ１０の書き換えは行われない。
【００５６】
閾値θ（初期値として設定する比較値θ）を十分大きな値（プログラムを実行するシステム上で表現し得る整数の最大値等）で設定した場合、図形の種類（ｔｙｐｅ）が同じルールｒｊであれば、当該ルールｒｊの左辺の図形の角度（ｒｊ．Ｆ１．ｒｏｔａｔｉｏｎ）がターゲット図形Ｏｔの角度（Ｏｔ．ｒｏｔａｔｉｏｎ）と全く異なっていても、他に適切なルールｒｊが存在しなければ、ルールｒｊを用いてターゲット図形Ｏｔの書き換えが行われるようになる。
【００５７】
なお、図４のフローチャートの変形例として、角度差ｄが、所定の閾値未満のルールｒｊを１つ抽出した時点で、当該ルールｒｊをルールｐとして決定し、ループ（ステップＳ３からステップＳ８の繰り返し処理）を終了するようにしてもよい。最適なルールｒｊがルールｐとして決定されるとは限らないが、当該フローチャートに係る処理を高速化させることができるようになる。
【００５８】
図５は、図４に示すフローチャートに示す処理を実現する手続き型言語の命令の一例（イメージ）である。図５において、Ｏ［ｔ］は、ビジュアルプログラムで初期値が定義されている図形の集合をＯとした場合における、集合Ｏのｔ番目の要素、即ち、図４のフローでターゲット図形Ｏｔに相当する。Ｒは、ビジュアルプログラムで定義されているルールの集合Ｒ＝｛ｒ１，ｒ２，・・・，ｒＮ｝である。Ｒ［ｊ］はＲのｊ番目のルールである。Ｒ［ｊ］．Ｆ１はルールＲ［ｊ］の左辺の第２要素（上記式（２）のＦ１）の図形である。Ｒ［ｊ］．ｆ１はルールＲ［ｊ］の右辺の第１要素（上記式（２）のｆ１）の図形である。
【００５９】
ｍｉｎａｎｇｌｅ（Ｏ［ｔ］，Ｒ）は、図形Ｏ［ｔ］の角度とルールの左辺の第２要素の図形の角度との差が最小となるルールの集合Ｒ中の要素番号（インデックス）を返す関数である。ａｔａｎ（ｃ）は、ａｒｃｔａｎｇｅｎｔを求める関数、すなわち、ｔａｎφ＝ｃを満たすφを求める関数である。ｓｑｒｔ（ｃ）は、ｃの平方根を求める関数である。
【００６０】
なお、図５において、「ｉｆ  （ｊ！＝ｎｕｌｌ）｛Ｏ［ｔ］＝ｔｒａｎｓｆｏｒｍ（Ｏ［ｔ］，Ｒ［ｊ］．Ｆ１，Ｒ［ｊ］．ｆ１）；｝」が、タイプ１ルール用表示変更命令生成部１２２によって生成される表示変更命令に該当する。
【００６１】
図３（ｂ）は、図５の例によるターゲット図形（車）の書き換えの例である。なお、ターゲット図形（車）を無地、書き換え後の図形（車）を斜線で表している。なお、図５において図３（ａ）のルールが適用されているものとする。『「Ｏ［ｔ］＝ｔｒａｎｓｆｏｒｍ（Ｏ［ｔ］，Ｒ［ｊ］．Ｆ１，Ｒ［ｊ］．ｆ１）；』におけるＲ［ｊ］は、図３（ａ）のルールであるものとする。
【００６２】
なお、タイプ１ルール用変換部１２が生成する、手続き型言語の命令文は、タイプ１ルールの左辺の図形の角度とターゲット図形Ｏｔの角度との角度差が、閾値θ（初期値として設定する比較値θ）未満のタイプ１ルールを抽出し、抽出したタイプ１ルールに従って、ターゲット図形Ｏｔを書き換える手続きを構成するものであればよく、図５の例に限定されるものではない。また、手続き型言語の命令文などの文法（構文）の形式は、当該手続き型言語の種類に応じて異なるものである。
【００６３】
タイプ２ルール用変換部１３は、送受信部１９から受信したタイプ２ルールに関して、イベントの種類（ｋ）に応じて、ターゲット図形Ｏｔをタイプ２ルールに従って書き換えるための手続き型言語の命令（命令文）を生成する。
【００６４】
具体的には、タイプ２ルール用変換部１３は、タイプ１ルール用変換部１２と同様、ターゲット図形Ｏｔが既に選択されていると仮定して、当該ターゲット図形に対してタイプ２ルールに従ってターゲット図形Ｏｔの書き換えるための手続き型言語の命令を生成する。タイプ２ルール用変換部１３は、ターゲット図形Ｏｔ毎、上記手続き型言語の命令を生成し、イベントの種類（ｋ）とともに、プログラム生成部１４に供給する。
【００６５】
以下、詳細に説明する。タイプ２ルール用変換部１３のタイプ２ルール用ルール抽出命令生成部１３１は、送受信部１９から受信したタイプ２ルールに関して、イベントの種類（ｋ）に応じて、アプリケーションで用いられる各図形（Ｏ１，Ｏ２，・・・，ＯＭ）を書き換えるためのタイプ２ルールを抽出するためのルール抽出命令（ルール抽出命令文）を生成する。即ち、タイプ２ルール用ルール抽出命令生成部１３１は、一のイベントが対象イベント（ｋ）として与えられ、一の図形がターゲット図形Ｏｔとして与えられた場合に、ビジュアルプログラムを構成する複数のタイプ２ルールのなかから、対象イベントと同一のイベントとターゲット図形Ｏｔと同一種類の書き換え前の図形とをパラメータとして含むタイプ２ルールであって、一方の書き換え前の図形の表示に対する他方の書き換え前の図形の表示の関係がターゲット図形Ｏｔの表示に対する任意の図形の表示の関係と同一または最も類似する２つの書き換え前の図形をパラメータとして含むルールを抽出するためのルール抽出命令を生成する。
【００６６】
タイプ２ルール用ルール抽出命令生成部１３１は、２つの書き換え前の図形の距離とターゲット図形Ｏｔと任意の図形との距離との差が極小である２つの書き換え前の図形を、同一または最も類似する２つの書き換え前の図形とすることによって、ルール抽出命令を生成してもよい。
【００６７】
また、タイプ２ルール用ルール抽出命令生成部１３１は、ビジュアルプログラムを構成する複数のタイプ２ルールのなかから、対象イベント（ｋ）と同一のイベントとターゲット図形Ｏｔと同一種類の書き換え前の図形とをパラメータとして含むルールであって、第１の書き換え前の図形の表示に対する第２の書き換え前の図形の表示の関係がターゲット図形Ｏｔの表示に対する任意の図形の表示の関係と同一または最も類似する第１の書き換え前の図形と第２の書き換え前の図形とをパラメータとして含む第１ルール（後述）を抽出するためのルール抽出命令を生成するとともに、ビジュアルプログラムを構成する複数のタイプ２ルールのなかから、対象イベント（ｋ）と同一のイベントとターゲット図形Ｏｔと同一種類の書き換え前の図形とをパラメータとして含むルールであって、第２の書き換え前の図形の表示に対する第１の書き換え前の図形の表示の関係がターゲット図形Ｏｔの表示に対する任意の図形の表示の関係と同一または最も類似する第２の書き換え前の図形と第１の書き換え前の図形とをパラメータとして含む第２ルール（後述）を抽出するためのルール抽出命令を生成するようにしてもよい。
【００６８】
タイプ２ルール用変換部１３のタイプ２ルール用表示変更命令生成部１３２は、タイプ２ルール用ルール抽出命令生成部１３１によって生成されたルール抽出命令によって抽出されたルールを用いてターゲット図形Ｏｔの表示を変更させるための表示変更命令（表示変更命令文）を生成する。
【００６９】
なお、タイプ２ルール用表示変更命令生成部１３２は、タイプ２ルール用ルール抽出命令生成部１３１が第１ルールおよび第２ルールを抽出するためのルール抽出命令を生成する場合には、第１ルールに含まれる第１の書き換え前の図形の表示に対する第２の書き換え前の図形の表示の関係が、第２ルールに含まれる第２の書き換え前の図形の表示に対する第１の書き換え前の図形の表示の関係よりも対象ターゲット図形Ｏｔの表示に対する任意の図形の表示の関係に類似している場合、第１ルールを用いて対象ターゲット図形Ｏｔの表示を変更させるための表示変更命令を生成し、第２ルールに含まれる第２の書き換え前の図形の表示に対する第１の書き換え前の図形の表示の関係が、第１ルールに含まれる第１の書き換え前の図形の表示に対する第２の書き換え前の図形の表示の関係よりも対象ターゲット図形Ｏｔの表示に対する任意の図形の表示の関係に類似している場合、第２ルールを用いて対象ターゲット図形Ｏｔの表示を変更させるための表示変更命令を生成するようにしてもよい。
【００７０】
図６乃至図８は、タイプ２ルール用変換部１３にて生成される手続き型言語の命令によって示されるフローチャートの一例である。図６において、ステップＳ１００およびステップＳ２００は、タイプ２ルール用ルール抽出命令生成部１３１によって生成されるルール抽出命令によって示される部分、ステップＳ３００乃至ステップＳ７００は、タイプ２ルール用表示変更命令生成部１３２によって生成される表示変更命令によって示される部分である。以下、図６乃至図８のフローチャートを説明する。タイプ２ルールは、上述の如く、２つの図形を同時に書き換えるルールであるため、現在選択しているターゲット図形Ｏｔと一緒に書き換える図形をＯ１，Ｏ２，・・・，ＯＭの中から抽出する処理（「第１ルール抽出処理」「第２ルール抽出処理」）が必要になる。
【００７１】
図６のステップＳ１００は、対象イベント（ｋ）と同一のイベントとターゲット図形Ｏｔと同一種類の書き換え前の図形とをパラメータとして含むルールであって、第１の書き換え前の図形の表示に対する第２の書き換え前の図形の表示の関係が、ターゲット図形Ｏｔの表示に対する他方の図形（ターゲット図形Ｏｔと同時に書き換えを行う他方の図形）の表示の関係と同一または最も類似するときの、当該第１の書き換え前の図形と当該第２の書き換え前の図形とをパラメータとして含むルール（第１ルール）を抽出する処理（第１ルール抽出処理）である。図７は、第１ルール抽出処理の詳細である。
【００７２】
図７のステップＳ１０１は、第１ルールとしてのルールｒｊの退避先であるルールｐ１を初期化する処理である。つまり、ステップＳ１０１は、書き換えの使用候補であるルールｐ１（ルールｒｊの複製）を初期化する処理である。ステップＳ１０２は、インデックスｊを初期化する処理である。
【００７３】
ステップＳ１０３は、ルールｒｊが所定の条件をクリアするか否かを判断する処理である。所定の条件は、「ルールｒｊのイベントの種類はｋである」、「ルールｒｊの左辺の第２要素の図形の種類（ｒｊ．Ｆ１．ｔｙｐｅ）はターゲット図形Ｏｔの種類（Ｏｔ．ｔｙｐｅ）と同一である」、および、「ルールｒｊはタイプ２ルールである」の３つのＡＮＤ条件である。なお、ルールｒｊがタイプ１であるかタイプ２であるかは、ルールｒｊの要素数に基づいて判断している。具体的には、ルールの左辺の第３要素がある場合（ｒｊ．Ｆ２ ≠ｎｕｌｌの場合）、タイプ２ルールと判断する。
【００７４】
ステップＳ１０４は、ルールｒｊの左辺の２つの図形（ｒｊ．Ｆ１とｒｊ．Ｆ２）の位置関係から、ターゲット図形Ｏｔに対応する他方の図形（Ｆ２に相当する図形）の種類、位置、角度を計算し、ｔ１に代入する処理である。即ち、第１の書き換え前の図形（ｒｊ．Ｆ１）に対する第２の書き換え前の図形（ｒｊ．Ｆ２）の関係に対応する、ターゲット図形Ｏｔに対する他方の図形Ｏｔ１（ターゲット図形Ｏｔと同時に書き換えを行う図形）を設定（算出）する処理である。なお、図形Ｏｔ１の種類、位置角度は、ｔｒａｎｓｆｏｒｍ関数によって求めることができる（図５参照）。
【００７５】
ステップＳ１０５乃至ステップＳ１０９は、他方の図形Ｏｔ1を除くアプリケーション上で動作可能な図形（ビジュアルプログラムに初期値が定義されている図形）Ｏ１，Ｏ２，・・・，ＯＭの中から、他方の図形Ｏｔ１の位置座標と最も近い位置にある図形Ｏｉを抽出して、図形Ｏｉのインデックスｉをｉ１に代入するとともに、ルールｒｊをｐ１に代入する処理である。なお、「ｄｉｓｔａｎｃｅ（Ｏｉ，Ｏｔ1）」は、図形Ｏｉと他方の図形Ｏｔ１と距離を算出する関数であって、上記式（４）による図形Ｏｉのｘ座標「Ｏｉ．ｘ」およびｙ座標「Ｏｉ．ｙ」、並びに、他方の図形Ｏｔ１のｘ座標「Ｏｔ1．ｘ」およびｙ座標「Ｏｔ1．ｙ」の値から、ユークリッド距離などを算出する関数である。
【００７６】
ステップＳ１１０は、インデックスｊをインクリメントする処理である。ステップＳ１１１は、ｊ≦Ｎの間、ステップＳ１０３からステップＳ１１０を繰り返し実行させる処理である。ステップＳ１０３からステップＳ１１０を繰り返し実行することによって、タイプ２ルールの左辺の第２要素（Ｆ１に相当）をターゲット図形Ｏｔとし、タイプ２ルールの第３要素（Ｆ２に相当）を他方の図形Ｏｔ１として、ルールｒｊに定義された各図形と種類が同一であって、ルールｒｊに定義された２つの図形の位置関係（ｒｊ．Ｆ１とｒｊ．Ｆ２）と最も近い位置関係の図形Ｏｉが存在するルールｒｊをｐ１、そのときのターゲット図形Ｏｔに対応する他方の図形Ｏｔ１のインデックスｉ１、ターゲット図形Ｏｔと他方の図形Ｏｉ１との距離ｄ１を出力する。
【００７７】
図６のステップＳ２００は、対象イベント（ｋ）と同一のイベントとターゲット図形Ｏｔと同一種類の書き換え前の図形とをパラメータとして含むルールであって、第２の書き換え前の図形の表示に対する第１の書き換え前の図形の表示の関係が、ターゲット図形Ｏｔの表示に対する他方の図形（ターゲット図形Ｏｔと同時に書き換えを行う他方の図形）の表示の関係と同一または最も類似するときの、当該第２の書き換え前の図形と当該第１の書き換え前の図形とをパラメータとして含むルール（第２ルール）を抽出する処理（第２ルール抽出処理）である。図８は、第２ルール抽出処理の詳細である。なお、第２ルール抽出処理は、ステップＳ２０３、ステップＳ２０４などに示すように、第１ルール抽出処理において、第１の書き換え前の図形と第２の書き換え前の図形の関係を逆にした処理である。
【００７８】
図８のステップＳ２０１は、第２ルールとしてのルールｒｊの退避先であるルールｐ２を初期化する処理である。つまり、書き換えの使用候補であるルールｐ２（ルールｒｊの複製）を初期化する処理である。ステップＳ２０２は、インデックスｊを初期化する処理である。
【００７９】
ステップＳ２０３は、ルールｒｊが所定の条件をクリアするか否かを判断する処理である。所定の条件は、「ルールｒｊのイベントの種類はｋである」、「ルールｒｊの左辺の第３要素の図形の種類（ｒｊ．Ｆ２．ｔｙｐｅ）はターゲット図形Ｏｔの種類（Ｏｔ．ｔｙｐｅ）と同一である」の３つのＡＮＤ条件である。なお、タイプ２ルールには必ず第２要素（Ｆ１）が存在するので、第１ルール抽出処理のステップＳ１０３における条件（ｒｊ．Ｆ２≠ｎｕｌｌ）に相当する条件（ｒｊ．Ｆ１≠ｎｕｌｌ）は不要である。
【００８０】
ステップＳ２０４は、ルールｒｊの左辺の２つの図形（ｒｊ．Ｆ２とｒｊ．Ｆ１）の位置関係から、ターゲット図形Ｏｔに対応する他方の図形（Ｆ１に相当する図形）の種類、位置、角度を計算し、ｔ２に代入する処理である。即ち、第２の書き換え前の図形（ｒｊ．Ｆ２）に対する第１の書き換え前の図形（ｒｊ．Ｆ１）の関係に対応する、ターゲット図形Ｏｔに対する他方の図形Ｏｔ２（ターゲット図形Ｏｔと同時に書き換えを行う図形）を設定（算出）する処理である。なお、図形Ｏｔ２の種類、位置角度は、ｔｒａｎｓｆｏｒｍ関数によって求めることができる（図５参照）。
【００８１】
ステップＳ２０５からステップＳ２１１は、第１ルール抽出処理のステップＳ１０４からステップＳ１１１と同様である。即ち、第２ルール抽出処理では、タイプ２ルールの左辺の第３要素（Ｆ２に相当）をターゲット図形Ｏｔとし、タイプ２ルールの第２要素（タＦ１に相当）を他方の図形Ｏｔ2として、ルールｒｊに定義された各図形と種類が同一であって、ルールｒｊに定義された２つの図形の位置関係（ｒｊ．Ｆ２とｒｊ．Ｆ１）と最も近い位置関係の図形Ｏｉが存在するルールｒｊをｐ２、そのときのターゲット図形Ｏｔに対応する他方の図形Ｏｔ２のインデックスｉ２、ターゲット図形Ｏｔと他方の図形Ｏｉ２との距離ｄ２を出力する。
【００８２】
図６のステップＳ３００は、第１ルール抽出処理で求めた距離ｄ１と第２ルール抽出処理で求めた距離を比較する処理である。
【００８３】
ステップＳ５００は、距離ｄ１が距離ｄ２以下の場合であって（ステップＳ３００：Ｙｅｓ）、ルールｐ１がある（ルールｐ１≠ｎｕｌｌ）場合において（ステップＳ４００：Ｙｅｓ）、ルールｐ１を用いてターゲット図形Ｏｔと他方の図形Ｏｉ１の書き換えを行う処理である。
【００８４】
ステップＳ７００は、距離ｄ１が距離ｄ２より大きい場合であって（ステップＳ３００：Ｎｏ）、ルールｐ２がある（ルールｐ２≠ｎｕｌｌ）場合において（ステップＳ６００：Ｙｅｓ）、ルールｐ２を用いてターゲット図形Ｏｔと他方の図形Ｏｉ２の書き換えを行う処理である。
【００８５】
即ち、ステップＳ３００乃至ステップＳ６００では、より書き換えに適したルールを適用するために、第１ルール抽出処理で抽出した第１ルール（ルールｐ１）と第２ルール抽出処理で抽出した第２ルール（ルールｐ２）のうち、ルールに定義されている書き換え対象の２つの図形（Ｆ１、Ｆ２）の距離と、実際に書き換えられる２つの図形（Ｏｔ、Ｏｉ1またはＯｔ、Ｏｉ2）の距離との差（ｄ１またはｄ２）がより小さい方のルール（ｐ１またはｐ２）を適用して、書き換えを行っている。
【００８６】
なお、予め距離ｄ１と距離ｄ２に閾値を設定しておくことで、距離が閾値以下となるようなルールを抽出することができる。これにより、ルールに近い図形が存在しない場合に、ルールに記述された２つの図形と種類は同じであるが、位置関係が全く異なるような図形をルールで書き換えてしまうことを避けることができる。即ち、該当するルールが存在しない場合にはルールｐ１やルールｐ２が空の状態（ｎｕｌｌ）となるため、書き換えを行わない（ステップＳ４００：Ｎｏ、ステップＳ６００：Ｎｏ）。
【００８７】
また、タイプ１ルール用変換部１２と同様に、最適なルールｒｊを求めるのではなく、ステップＳ１０６を満たすルールｒｊを１つ抽出した時点で、当該ルールｒｊをルールｐ１として決定し、ループ処理を終了してもよい。同様に、ステップＳ２０６を満たすルールｒｊを１つ抽出した時点で、当該ルールｒｊをルールｐ２として決定し、ループ処理を終了してもよい。
【００８８】
また、第１ルール抽出処理においてルールｐ１が抽出された場合は第２ルール抽出処理を省略し、第１ルール抽出処理においてルールｐ１が抽出されなかった場合に限り、第２ルール抽出処理を実行するようにしてもよい。或いは、第１ルール抽出処理よりも先に第２ルール抽出処理を実行し、第２ルール抽出処理においてルールｐ２が抽出された場合は第１ルール抽出処理を省略し、第２ルール抽出処理においてルールｐ２が抽出されなかった場合に限り、第１ルール抽出処理を実行するようにしてもよい。
【００８９】
図９は、図６乃至図８に示すフローチャートに示す処理を実現する手続き型言語の命令の一例（イメージ）である。なお、タイプ２ルール用変換部１３が生成する、手続き型言語の命令文は、図９の例に限定されるものではない。図９においては、距離の閾値であるｄ１やｄ２の初期値として、システムが表現し得る最大の整数値（ＭＡＸＩＮＴ）を設定した例を示しているが、ｄ１やｄ２は一の値を設定してもよい。
【００９０】
なお、図９において、「Ｏ［ｔ］＝ｔｒａｎｓｆｏｒｍ（Ｏ［ｔ］，ｐ１．Ｆ１，  ｐ１．ｆ１）；Ｏ［ｉ１］＝ｔｒａｎｓｆｏｒｍ（Ｏ［ｉ１］，ｐ１．Ｆ２，ｐ１．ｆ２）；」等が、タイプ２ルール用表示変更命令生成部１３２によって生成される表示変更命令に該当する。
【００９１】
変換装置１のプログラム生成部１４は、タイプ１ルール用変換部１２、タイプ２ルール用変換部１３によって生成された命令文（ルール抽出命令文、表示変更命令文）から手続き型プログラムを生成する。
【００９２】
即ち、プログラム生成部１４は、タイプ１ルール用変換部１２から、イベントの種類（ｋ）とともに、ターゲット図形毎のタイプ１に係る手続き型言語の命令文を取得する。また、プログラム生成部１４は、タイプ２ルール用変換部１３から、イベントの種類（ｋ）とともに、ターゲット図形毎のタイプ２に係る手続き型言語の命令文を取得する。そして、プログラム生成部１４は、アプリケーションで用いられる各図形（Ｏ１，Ｏ２，・・・，ＯＭ）を、イベントの種類（ｋ）に応じて動作させる（表示を変更させる）手続き型プログラムを生成する。
【００９３】
即ち、プログラム生成部１４は、ビジュアルプログラムの中で初期値が定義されている図形（Ｏ１，Ｏ２，・・・，ＯＭ）について、イベントの種類（ｋ）毎、図形毎に、タイプ１ルール用変換部１２から取得した手続き型言語の命令文またはタイプ２ルール用変換部１３から取得した手続き型言語の命令文を繰り返し実行する手続き型プログラムを生成する。プログラム生成部１４は、生成した手続き型プログラムを送受信部１９に供給する。
【００９４】
変換装置１において生成する手続き型プログラム、つまり、ビジュアルプログラムから生成する手続き型プログラムは、ビジュアルプログラム（ビジュアル言語）で表現できる高機能な動作を全て正確に再現するものではないが、比較的単純な処理で元のビジュアル言語で作成されたアプリケーションの動作を模倣することができ、携帯電話のような処理能力の低い端末上でも実行させることができる。
【００９５】
以上、本実施形態では、初期状態を静的に固定し、ビジュアル言語で定義されたルール（ビジュアルプログラムに含まれるルール）から冗長性を削減することによって、ビジュアルプログラムを、図形を効率的に書き換えるような手続き型プログラムに変換している。つまり、本実施形態では、大きなメモリ容量と大きな計算量とを必要とするビジュアルプログラム（ゲーム、アニメーション）を、小さなメモリ消費量と小さな計算量（低実時間）で実行可能なプログラム、即ち、携帯電話のような小さなコンピュータでも実行可能な手続き型プログラムに変換している。従って、ビジュアルプログラムを、手続き型プログラムに変換することによって、携帯電話のような小さなコンピュータにおいて動作させることができるようになる。
【００９６】
換言すれば、本実施形態は、ビジュアル言語によって作られたビジュアルプログラムから冗長である動的な部分を削って、携帯電話のような小さなコンピュータでも実行可能な手続き型プログラムに変換するための、ビジュアル言語のコンパイル技術とも言える。
【００９７】
なお、本実施形態では、上述の如く、初期状態を固定しているが、初期状態を固定しても、表現できる範囲は実質的に減少しないことを利用している。なお、初期状態を固定しても、ユーザのインタラクションを除けば、毎回、同じ動作ができることから、安定したアプリケーションの動作が可能である。
【００９８】
なお、本発明の一実施形態による変換装置１の各処理を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、本発明の一実施形態による変換装置１の各処理に係る上述した種々の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００９９】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【０１００】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１０１】
１  変換装置  ２  記憶装置  １２  タイプ１ルール用変換部  １３  タイプ２ルール用変換部  １４  プログラム生成部  １９  送受信部  ２０  記憶部  ２９  送受信部  １２１  タイプ１ルール用ルール抽出命令生成部  １２２  タイプ１ルール用表示変更命令生成部  １３１  タイプ２ルール用ルール抽出命令生成部  １３２  タイプ２ルール用表示変更命令生成部
【図１】
2011002959.tif 000003
【図２】
2011002959.tif 000004
【図３】
2011002959.tif 000005
【図４】
2011002959.tif 000006
【図５】
2011002959.tif 000007
【図６】
2011002959.tif 000008
【図７】
2011002959.tif 000009
【図８】
2011002959.tif 000010
【図９】
2011002959.tif 000011