(57)【要約】【課題】別途生成された画面コードと容易に結合してアプリケーションを構築することができる前記画面コードとは独立したプログラムコードを自動生成すること。【解決手段】Actionプログラム生成部１０７，Metaプログラム生成部１０８，ValueObjectプログラム生成部１０９が、画面上で発生したイベントに応じて実行される処理、画面上にレイアウトされる部品の設計情報を定義する処理、画面上にレイアウトされる部品とのデータ受け渡しする処理に対応するプログラムコード（Actionプログラム１１２，Metaプログラム１１４，ValueObjectプログラム１１６）を、画面を構成するコードと分離独立した形態で生成する構成を特徴とする。【選択図】図１
2008287365.tif 000002
【特許請求の範囲】
【請求項１】
画面上で発生したイベントに応じて実行される処理、画面上にレイアウトされる部品の設計情報を定義する処理、画面上にレイアウトされる部品とのデータ受け渡しする処理に対応するプログラムコードを、画面を構成するコードと分離独立した形態で生成する生成手段を有することを特徴とするプログラム生成装置。
【請求項２】
前記生成手段は、前記画面を構成するコードを生成しないことを特徴とする請求項１に記載のプログラム生成装置。
【請求項３】
前記生成手段は、前記各処理に対応するプログラムコードを、互いに分離した形態で生成することを特徴とする請求項１又は２に記載のプログラム生成装置。
【請求項４】
前記生成手段は、前記各プログラムコード内に、該プログラムコードにより実現される処理を示すコメント情報を含めることを特徴とする請求項３に記載のプログラム生成装置。
【請求項５】
生成手段が、画面上で発生したイベントに応じて実行される処理、画面上にレイアウトされる部品の設計情報を定義する処理、画面上にレイアウトされる部品とのデータ受け渡しする処理に対応するプログラムコードを、画面を構成するコードと分離独立した形態で生成する生成手段を有することを特徴とするプログラム生成方法。
【請求項６】
コンピュータを、画面上で発生したイベントに応じて実行される処理、画面上にレイアウトされる部品の設計情報を定義する処理、画面上にレイアウトされる部品とのデータ受け渡しする処理に対応するプログラムコードを、画面を構成するコードと分離独立した形態で生成する生成手段として機能させるためのプログラム。
【請求項７】
コンピュータを、画面上で発生したイベントに応じて実行される処理、画面上にレイアウトされる部品の設計情報を定義する処理、画面上にレイアウトされる部品とのデータ受け渡しする処理に対応するプログラムコードを、画面を構成するコードと分離独立した形態で生成する生成手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計情報に基づいてプログラムを生成するプログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体に関する。
【背景技術】
【０００２】
従来より、設計情報からプログラムを自動生成するプログラム生成装置がある。しかし、自動生成されたアプリケーションの画面は、自動で画面項目のレイアウト位置が決定されたり、用意された画面パターンを使用しなければならなかったりと、ユーザの多様な画面レイアウト要求を十分に満足したものではなかった。
【０００３】
この問題を解決するため、アプリケーションの生成時に画面をユーザが自由にカスタマイズする技術が提案されている（特許文献１）。
【０００４】
特許文献１では、アプリケーションの生成時に初期生成画面イメージを専用プログラム上に出力し、その初期生成画面イメージをユーザが専用プログラム上でカスタマイズすることで要求どおりの画面を作成する方法が提案されている。
【特許文献１】特開２００４−１５７９２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１では、上記初期生成画面イメージの変更は、必ず専用のプログラムを介して行う必要があり、その専用プログラムの習熟に時間がかかるという問題点を有している。
【０００６】
また、特に（分業化された）Ｗｅｂ系のシステムの場合、画面作成専任のデザイナーが画面の変更にあたることが多く、デザイナーにはそれぞれ「使い慣れた」、高機能なエディタがある。上記初期生成画面イメージの変更に、このような「エディタ」を使用できないことは、作業効率だけでなく、作成画面の品質や機能（の高さ、量）に影響を及ぼしてしまう。
【０００７】
さらに、上記特許文献１では、アプリケーションを作成した後に、生成された画面を変更するという手順がない。近年、（使用感や見栄えを確かめるため）画面だけを先に（上述エディタで一から）作成したり、（工数削減や統一感の為）既にある画面を再利用したりする開発手順も求められている。しかしながら、上記特許文献１の方法では、自動生成の過程にユーザが作成した画面を組み込むことができないという問題点があった。
【０００８】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、別途生成された画面コードと容易に結合してアプリケーションを構築することができる前記画面コードとは独立したプログラムコードを自動生成することができる仕組を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、画面上で発生したイベントに応じて実行される処理、画面上にレイアウトされる部品の設計情報を定義する処理、画面上にレイアウトされる部品とのデータ受け渡しする処理に対応するプログラムコードを、画面を構成するコードと分離独立した形態で生成する生成手段を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、別途生成された画面コードと容易に結合してアプリケーションを構築することができる前記画面コードとは独立したプログラムコードを自動生成することができる。
【００１１】
この結果、画面のデザイナーは、自動生成されるプログラムコードとは関係なく柔軟なレイアウトの画面を作成することができる。そして、仕様変更によりプログラムコード又は画面コードが修正された場合も、互いに影響することがなくなる。
【発明を実施するための最良の形態】
【００１２】
本発明は、アプリケーションシステムを構成するプログラムや画面等のソフトウェアを生成するケースツール環境において、プログラムを自動生成する技術分野に関するものである。このため、ケースツール環境の説明は、本発明と直接関係のある部分についてのみ言及する。
【００１３】
以下、図面を用いて詳細に説明する。
【００１４】
図１は、本発明の一実施形態を示す情報処理装置（プログラム生成装置）の構成を示すブロック図である。
【００１５】
図１において、１００は本発明のプログラム生成装置としてのコンピュータである。１０３はコンピュータ本体である。１０１はキーボード，ポインティングデバイス（マウス等）の入力装置である。１０２はＣＲＴディスプレイや液晶ディスプレイ等の表示装置である。１０４はハードディスクドライブ（ＨＤＤ）等の外部記憶装置である。
【００１６】
図１に示すように、ユーザは入力装置１０１より、表示装置１０２に表示された画面を通じてコンピュータ本体１０３に対してプログラム自動生成命令を発行すると、コンピュータ１０３は、全体制御部１０５で自動生成処理を行う。以下、詳細に説明する。
【００１７】
まず、プログラム自動生成命令を受けた画面制御部１０６は、Actionプログラム生成部１０７，Metaプログラム生成部１０８，ValueObjectプログラム生成部１０９に処理を委譲する。
【００１８】
Actionプログラム生成部１０７は、予め作成されて外部記憶装置１０４に格納されるActionテンプレート１１１（後述する図１４）を元に、予め入力されて外部記憶装置１０４に格納されるユーザ定義情報１１０（後述する図１２，図１３）を適用し、Actionプログラム１１２（後述する図６，図１５）を生成し、外部記憶装置１０４に格納する。なお、Actionテンプレート１１１は、Actionプログラム１１２を生成のためのテンプレート(ひな形)である。また、Actionプログラム１１２は、画面上で発生したイベントに応じて実行される処理（例えばサーバへのデータ送受信処理等）に対応するプログラムコードである。
【００１９】
Metaプログラム生成部１０８は、予め作成されて外部記憶装置１０４に格納されるMetaテンプレート１１３（後述する図１６）を元に、予め入力されて外部記憶装置１０４に格納されるユーザ定義情報１１０を適用し、Metaプログラム１１４（後述する図８，図１７）を生成し、外部記憶装置１０４に格納する。なお、Metaテンプレート１１３は、Metaプログラム１１４を生成のためのテンプレート(ひな形)である。また、Metaプログラム１１４は、画面上にレイアウトされる部品の設計情報（例えばデータタイプや桁数等）を定義する処理に対応するプログラムコードである。
【００２０】
ValueObjectプログラム生成部１０９は、予め作成されて外部記憶装置１０４に格納されるValueObjectテンプレート（VOテンプレート）１１５（後述する図１８）を元に、予め入力されて外部記憶装置１０４に格納されるユーザ定義情報１１０を適用し、ValueObjectプログラム（VOプログラム）１１５（後述する図１０，図１９）を生成し、外部記憶装置１０４に格納する。なお、VOテンプレート１１５は、VOプログラム１１６を生成のためのテンプレート(ひな形)である。また、VOプログラム１１６は、画面上にレイアウトされる部品とのデータ受け渡しする処理に対応するプログラムコードである。
【００２１】
サーバプログラム生成部１１７は、予め作成されて外部記憶装置１０４に格納されるサーバテンプレート１１８（詳細は不図示）を元に、予め入力されて外部記憶装置１０４に格納されるユーザ定義情報１１０を適用し、サーバプログラム１１９（詳細は不図示）を生成し、外部記憶装置１０４に格納する。なお、サーバテンプレート１１８は、サーバプログラム１１９を生成のためのテンプレート(ひな形)である。また、サーバプログラム１１９は、サーバ側で実行される処理に対応するプログラムコードである。
【００２２】
次に、図２を参照して、図１に示したプログラム生成装置としてのコンピュータ１００のハードウェア構成について説明する。
【００２３】
図２は、図１に示したプログラム生成装置としてのコンピュータ１００のハードウェア構成を示すブロック図であり、図１と同一のものには同一の符号を付してある。
【００２４】
図２において、２０１はＣＰＵ（中央演算処理装置）２０１であり、ＲＯＭ２０３或いは外部記憶装置１０４に記憶されている制御プログラムに基づいて、システムバスに接続されている各種デバイスとのアクセスを総括的に制御する構成となっている。
【００２５】
システムバスには、ＣＰＵ２０１の主メモリ、ワークエリア等として機能するＲＡＭ（ランダム・アクセス・メモリ）２０２が接続されている。ＲＯＭ２０３或いは外部記憶装置１０４には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Basic Input ／ Output System）やオペレーティングシステム（以下、「ＯＳ」という。）プログラム、コンピュータ１０３が実行する処理を実現するために必要な各種プログラム等が記憶されている。
【００２６】
ＣＰＵ２０１は、処理の実行に際して必要な各種プログラム等をＲＡＭ２０２にロードして、当該プログラム等を実行することで図１に示した全体制御部１０５の機能及び各種動作を実現するものである。
【００２７】
外部記憶装置１０４は、上述した各種プログラムとして、図示しないブートプログラム、各種アプリケーションプログラム、フォントデータ、ユーザーファイル等を記憶する。
【００２８】
ＣＰＵ２０１は、例えば、ＲＡＭ２０２内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、表示装置１０２上でＷＹＳＩＷＹＧを可能としている。また、ＣＰＵ２０１は、表示装置１０２上のマウスカーソル(不図示)等で指示されたコマンドに基づいて、登録された種々なウィンドウを開き、種々のデータ処理を実行する。
【００２９】
以下、図３〜図１０を参照して、図１で示したActionプログラム生成部１０７，Metaプログラム生成部１０８，ValueObjectプログラム生成部１０９，サーバプログラム生成部１１７で行われるプログラム生成処理について説明する。
【００３０】
図３は、本発明における第１の制御処理手順の一例を示すフローチャートであり、図１で示したコンピュータ１０３のActionプログラム生成部１０７，Metaプログラム生成部１０８，ValueObjectプログラム生成部１０９，サーバプログラム生成部１１７で行われるプログラム生成処理に対応する。なお、このフローチャートの処理は、図２に示したＣＰＵ２０１が外部記憶装置１０４に格納されたプログラムをＲＡＭ２０２に読み出して実行するプログラム生成部１０７により実現される。なお、図中、Ｓ３０１〜Ｓ３０９は各ステップを示す。
【００３１】
まず、入力装置１０１から入力されるプログラム自動生成命令の指示を受けると、全体制御部１０５内の画面制御部１０６は、プログラム生成部１０７に処理を委譲し、ステップＳ３０１に処理を進める。
【００３２】
ステップＳ３０１では、Actionプログラム生成部１０７は、まず外部記憶装置１０４からユーザ定義情報１１０（図４）を読み込み、これをＲＡＭ２０２に保管する。
【００３３】
次にステップＳ３０２において、Actionプログラム生成部１０７は、生成するプログラムの元となるActionテンプレート１１１（図５）を読み込み、これをＲＡＭ２０２に保管する。なお、Actionテンプレート１１１は、プログラムの下敷き（テンプレート）としての役割を持ち、図５の１４００，１４０１に示すように、具体的なデータはまだ変数化されている。
【００３４】
次にステップＳ３０３において、Actionプログラム生成部１０７は、Ｓ３０１で取得されＲＡＭ２０２内に保管されているユーザ定義情報から項目タイプ１２０６が「Ａアクション」である行（図４の１２１１，１２１５等）の各項目の値を取得し、項目タイプ１２０６のデータはＲＡＭ２０２に確保される変数ioItem.itemType、項目コード１２００のデータはioItem.code、名前１２０１のデータはioItem.name、表示１２０２のデータはioItem.isVisible、必須１２０３のデータはioItem.isRequire、・・・、桁数１２０４のデータはioItem.length、小数桁１２０５のデータはioItem.scale、・・・・・に格納する。さらに、Actionプログラム生成部１０７は、取得したユーザ定義情報の各項目の値を、Ｓ３０２で取得したActionテンプレート１１１内の変数化されている場所（図５の１４００，１４０１）に、はめ込み（図６の１５００，１５０１）、Actionプログラム１１２を生成し、外部記憶装置１０４に格納する。そして、この処理を、項目タイプ１２０６が「Ａアクション」である全ての行のユーザ定義情報に対して行う。
【００３５】
以下、Ｓ３０３についてより具体的に説明する。
【００３６】
図５は、Actionテンプレートの一例を示す図である。
【００３７】
図５において、１４００，１４００は、テンプレートの変数を表す。１４００は、ユーザ定義情報の「項目コード」１２００に対応する。１４０１は、ユーザ定義情報の「項目名」１２０１に対応する。
【００３８】
図６は、Actionプログラム生成結果の一例を示す図である。なお、この図は図４の１２１５に示すユーザ定義情報に対応する例である。
【００３９】
図６において、１５００は、テンプレートの変数「${ioItem.name}」１４００にユーザ定義情報の「項目コード」１２００の値「UPDATE」が代入された結果を表す。１５０１は、テンプレートの変数「${ioItem.code}」１４０１にユーザ定義情報の「項目名」１２０１の値「更新」が代入された結果を表す。以上、図３のステップＳ３０３の説明を終了する。
【００４０】
次に図３のステップＳ３０４において、Metaプログラム生成部１０８は、生成するプログラムの元となるMetaテンプレート１１３を読み込み、これをＲＡＭ２０２に保管する。なお、Metaテンプレート１１３は、プログラムの下敷き（テンプレート）としての役割を持ち、図７の１６００，１６０１，・・・に示すように、具体的なデータはまだ変数化されている。
【００４１】
次にステップＳ３０５において、Metaプログラム生成部１０８は、Ｓ３０１で取得されＲＡＭ２０２内に保管されているユーザ定義情報から項目タイプ１２０６が「ＩＯ入出力」である行（図４の１２１２〜１２１４等）の各項目の値を取得し、項目タイプ１２０６のデータはＲＡＭ２０２に確保される変数ioItem.itemType、項目コード１２００のデータはioItem.code、名前１２０１のデータはioItem.name、表示１２０２のデータはioItem.isVisible、必須１２０３のデータはioItem.isRequire、・・・、桁数１２０４のデータはioItem.length、小数桁１２０５のデータはioItem.scale、・・・・・に格納する。さらに、Metaプログラム生成部１０８は、取得したユーザ定義情報の各項目の値を、Ｓ３０４で取得したMetaテンプレート１１３内の変数化されている場所（図７の１６００，１６０１，・・・）にはめ込み（図８の１７００，１７０１，・・・）、Metaプログラム１１４を生成し、外部記憶装置１０４に格納する。そして、この処理を、項目タイプ１２０６が「ＩＯ入出力」である全ての行のユーザ定義情報に対して行う。
【００４２】
以下、Ｓ３０５についてより具体的に説明する。
【００４３】
図７は、Metaテンプレートの一例を示す図である。
【００４４】
図７において、１６００〜１６０６は、テンプレートの変数を表す。
【００４５】
１６０１は、ユーザ定義情報の「項目名」１２０１に対応する。１６００は、ユーザ定義情報の「項目コード」１２００に対応する。１６０２は、ユーザ定義情報の「表示」１２０２に対応する。１６０６は、ユーザ定義情報の「項目タイプ」１２０６に対応する。１６０３は、ユーザ定義情報の「必須」１２０３に対応する。１６０４は、ユーザ定義情報の「桁数」１２０４に対応する。１６０５は、ユーザ定義情報の「少数桁」１２０５に対応する。
【００４６】
図８は、Metaプログラム生成結果の一例を示す図である。なお、この図は図４の１２１２に示すユーザ定義情報に対応する例である。
【００４７】
図８において、１７０１は、テンプレートの変数「${ioItem.code}」１６０１にユーザ定義情報の「名前」１２０１の値「社員ID」が代入された結果を表す。１７００は、テンプレートの変数「${ioItem.name}」１６００にユーザ定義情報の「項目コード」１２００の値「EMP_ID」が代入された結果を表す。
【００４８】
１７０２は、テンプレートの変数「${ioItem.isVisible}」１６０２にユーザ定義情報の「表示」１２０１の値「表示」に対応する「true」が代入された結果を表す。１７０６は、テンプレートの変数「${ioItem.itemType}」１６０６にユーザ定義情報の「項目タイプ」１２０６の値「IO入出力」に対応する「IO」が代入された結果を表す。
【００４９】
１７０３は、テンプレートの変数「${ioItem.isRequire}」１６０３にユーザ定義情報の「必須」１２０３の値（空白）に対応する「false」が代入された結果を表す。１７０４は、テンプレートの変数「${ioItem.length}」１６０４にユーザ定義情報の「桁数」１２０４の値「４」が代入された結果を表す。１７０５は、テンプレートの変数「${ioItem.scale}」１６０５にユーザ定義情報の「小数桁」１２０５の値「０」が代入された結果を表す。以上、図３のステップＳ３０５の説明を終了する。
【００５０】
次に、図３のステップＳ３０６において、ValueObjectプログラム生成部１０９は、生成するプログラムの元となるVOテンプレート１１５を読み込み、これをＲＡＭ２０２に保管する。なお、VOテンプレート１１５は、プログラムの下敷き（テンプレート）としての役割を持ち、図９の１８００，１８０１に示すように、具体的なデータはまだ変数化されている。
【００５１】
次にステップＳ３０７において、ValueObjectプログラム生成部１０９は、Ｓ３０１で取得されＲＡＭ２０２内に保管されているユーザ定義情報から項目タイプ１２０６が「ＩＯ入出力」である行（図４の１２１２〜１２１４等）の各項目の値を取得し、項目タイプ１２０６のデータはＲＡＭ２０２に確保される変数ioItem.itemType、項目コード１２００のデータはioItem.code、名前１２０１のデータはioItem.name、表示１２０２のデータはioItem.isVisible、必須１２０３のデータはioItem.isRequire、・・・、桁数１２０４のデータはioItem.length、小数桁１２０５のデータはioItem.scale、・・・・・に格納する。さらに、Metaプログラム生成部１０８は、取得したユーザ定義情報の各項目の値を、Ｓ３０６で取得したVOテンプレート１１５内の変数化されている場所（図９の１８００，１８０１）にはめ込み（図１０の１９００，１９０１）、VOプログラム１１６を生成し、外部記憶装置１０４に格納する。そして、この処理を、項目タイプ１２０６が「ＩＯ入出力」である全ての行のユーザ定義情報に対して行う。
【００５２】
以下、Ｓ３０７についてより具体的に説明する。
【００５３】
図９は、VOテンプレートの一例を示す図である。
【００５４】
図９において、１８００，１８０１は、テンプレートの変数を表す。１８００は、ユーザ定義情報の「項目コード」１２００に対応する。１８０１は、ユーザ定義情報の「項目名」１２０１に対応する。
【００５５】
図１０は、VOプログラム生成結果の一例を示す図である。なお、この図は図４の１２１２に示すユーザ定義情報に対応する例である。
【００５６】
図１０において、１９００は、テンプレートの変数「${ioItem.name}」１８００にユーザ定義情報の「項目コード」１２００の値「EMP_ID」が代入された結果を表す。１９０１は、テンプレートの変数「${ioItem.code}」１６０１にユーザ定義情報の「名前」１２０１の値「社員ID」が代入された結果を表す。以上、図３のステップＳ３０７の説明を終了する。
【００５７】
次にステップＳ３０８において、サーバプログラム生成部１１７は、生成するプログラムの元となるサーバテンプレート１１８を読み込み、これをＲＡＭ２０２に保管する。なお、サーバテンプレート１１８は、プログラムの下敷き（テンプレート）としての役割を持ち、具体的なデータはまだ変数化されている。
【００５８】
次にステップＳ３０９において、サーバプログラム生成部１１７は、Ｓ３０８で取得したサーバテンプレート１１８内の変数化されている場所に、Ｓ３０１で取得した具体的なデータをはめ込み、サーバプログラム１１９を生成し、外部記憶装置１０４に格納する（この処理の詳細は省略する）。そして、本フローチャートの処理を終了する。
【００５９】
以上の処理により、Actionプログラム１１２，Metaプログラム１１４，VOプログラム１１６，サーバプログラム１１９が生成される。
【００６０】
次に、図１１，図１２を参照して、従来のプログラム生成装置で生成されるプログラムと、図１に示した本実施形態のプログラム生成装置で生成されたプログラムとを比較する。
【００６１】
図１１は、従来のプログラム生成装置で生成されたプログラムの一例を示す模式図である。太枠の部分は従来のプログラム生成装置で生成される部分であり、画面レイアウト４０１とサーバ生成部品４０２が生成される。
【００６２】
図１２は、図１に示した本実施形態のプログラム生成装置で生成されたプログラムの一例を示す模式図である。太枠の部分は本実施形態のプログラム生成装置で生成される部分であり、クライアント生成部品４０４とサーバ生成部品４０５が生成される。
【００６３】
なお、従来のプログラム生成装置で生成される画面レイアウト４０１には、クライアント側の画面にレイアウトされる部品とクライアント側で実行されるアクションとが含まれていた。
【００６４】
これに対して、本実施形態のプログラム生成装置は、図１２に示すように、クライアント生成部品４０４を画面レイアウト４０３と切り離して（分離独立した形態で）生成する構成を有する。
【００６５】
例えば、大規模なアプリケーション開発を行う場合、複数人で画面を作成する場合がよくある。そのメンバーは、アプリケーションの業務ロジックを実装する「アプリ開発者」と画面のＧＵＩ部品の配置をする「デザイナー」等から構成される。
【００６６】
本実施形態のプログラム生成装置は、図３に示したように、「アプリ開発者」が定義したユーザ定義１１０を読み込み、クライアント生成部品４０４としてプログラム１１２（例えば図１３），１１４（例えば図１５），１１６（例えば図１７）を生成する。
【００６７】
また、「デザイナー」は、図１４，図１６，図１８に示すようなＧＵＩ部品を含む画面レイアウト４０３を作成する。この画面レイアウトの一例を図１９に示す。
【００６８】
この画面作成の際、「デザイナー」は、画面に配置したＧＵＩ部品と、本実施形態のプログラム生成装置が出力したプログラム１１２，１１４，１１６の結びつきを定義する。
【００６９】
以下、「デザイナー」が画面に配置したＧＵＩ部品と、本実施形態のプログラム生成装置が生成したプログラム１１２，１１４，１１６との結びつける方法について、具体的に説明する。
【００７０】
例えば、「デザイナー」は、作成した画面定義内のボタン（例えば図１９の更新ボタン２００１）とプログラム生成装置が生成したActionプログラム１１２とを結びつけるコードを当該ボタン定義内に記述する。
【００７１】
詳細には、図１４の７０１に示すように、Buttonコンポーネントのclick属性として、Actionプログラム１１２の中のActionクラスをインスタンス化(srv)しそのメソッド(図１３の６０１に示すUPDATE)を呼び出すコード「click="srv.UPDATE(req)"」を記述する。これにより、図１９の２００１に示す更新ボタンがクリックされると、図１３の６０１に示すUPDATEが実行されることになる。
【００７２】
また、「デザイナー」は、作成した画面定義内のLabelコンポーネントのtext属性として、図１６の９０１に示すように、Metaプログラム１１４の中のMetaクラス(WSEMPMeta)のstaticのプロパティ(EMP_ID.name)の値を使用するコード「text="{WsEMPMeta.EMP_ID.name}"」を記述する。これにより、図１９の２００２に示すように、画面上に図１５の８０１に示すEMP_ID.nameの値"社員ID"が表示されることになる。
【００７３】
さらに、「デザイナー」は、作成した画面定義内のTextInputコンポーネントのtext属性として、プログラム生成装置が生成したVOプログラム１１６の中のVOクラス(vo)をインスタンス化したプロパティ(EMP_ID)の値を使用するコード(text="{vo.EMP_ID}")を記述する。これにより、図１９の２００１に示すテキストボックスの値が、図１７の１００１に示すVOプログラム１１６の中のVOクラス(vo)をインスタンス化したvo.EMP_IDに保持されることになる。
【００７４】
以上、例示したように、プログラム生成装置から出力したActionプログラム１１２，Metaプログラム１１４，VOプログラム１１６と「デザイナー」が別途作成した画面定義（画面を構築するコード）とを容易に結びつけることができる。このように結び付けられて構築されたアプリケーションの実行画面は図１９に示すように表示されることになる。
【００７５】
なお、大規模なアプリケーション開発を行う場合、仕様変更（画面の配置変更、ラベル名の変更、ボタンの動作の変更）がよくある。このような仕様変更が発生しても、本実施形態のプログラム生成装置を用いた上記方法によれば、各担当者（「開発者」，「デザイナー」）の仕様変更が、お互いに影響しないように開発を行うことができる。
【００７６】
例えば、図４に示したユーザ定義情報の項目「EMP_ID」の名前「社員ID」が仕様変更で「社員番号」となった場合、「開発者」は図４のユーザ定義情報の定義「EMP_ID」を「社員ID」に変更し、再度、プログラム生成装置によりプログラムコードを生成するだけでよい。即ち、「デザイナー」が作成したコード（図１８の１１０１）は一切変更する必要がなく、仕様変更（「EMP_ID」を「社員ID」に変更）を行うことができる。
【００７７】
また、画面部品の位置や種類が仕様変更になった場合、例えばボタンの位置が仕様変更になった場合、「デザイナー」は、図１４の７０１に示す画面座標「x="293" y="127"」の部分を変更するだけでよい。即ち、プログラム生成装置でプログラムコードを再生成したり、プログラムと画面定義との結びつきの部分を変更する必要は全くない。
【００７８】
また、更新処理(UPDATE)の処理内容が仕様変更になった場合、「開発者」は、図４の定義「UPDATE」の処理内容を変更し、再度、プログラム生成装置によりプログラムコードを生成するだけでよい。即ち、「デザイナー」が作成した図１８のコードは一切変更することなく、仕様の変更を行うことができる。
【００７９】
以上のように、本実施形態のプログラム生成装置を用いてプログラムを生成し、「デザイナー」が生成した画面定義と結び付けることにより、仕様変更に対して柔軟なプログラム開発を行うことができる。
【００８０】
一方、図１１に示したような従来のプログラム生成装置で生成されるプログラムでは、上述のように、図４に示したユーザ定義情報の項目「EMP_ID」の名前「社員ID」が仕様変更で「社員番号」となった場合、画面レイアウト４０１，サーバ生成部品４０２の双方を再度生成する必要があった。
【００８１】
また、画面部品の位置や種類が仕様変更になった場合、例えばボタンの位置が仕様変更になった場合でも、従来のプログラム生成装置で生成されるプログラムでは、画面レイアウト４０１，サーバ生成部品４０２の双方を再度生成する必要があった。
【００８２】
また、更新処理(UPDATE)の処理内容が仕様変更になった場合も、従来のプログラム生成装置で生成されるプログラムでは、画面レイアウト４０１，サーバ生成部品４０２の双方を再度生成する必要があった。
【００８３】
図１１に示した従来の方法では、プログラム生成装置を用いて画面レイアウトを生成していたため、画面に仕様できる部品に制限がある場合が多かった。例えば、数値を入力する部品に、スライダーバーを用いたい、プルダウンメニューを用いたい等、その仕様はユーザの数だけ存在するといっても過言ではなく、それら全てをプログラム生成装置でカバーすることは困難であった。
【００８４】
しかし、本発明では、プログラム生成装置によりプログラムを生成し、「デザイナー」が画面を生成し、双方を結びつける方法を用いるので、柔軟な画面デザインを行うことができる。
【００８５】
なお、本実施形態のプログラム生成装置は、単に画面と分離されたプログラムを生成するというものではなく、別途作成された画面定義と容易に結びつけられるような形態でプログラムを生成する構成を有する。
【００８６】
まず、機能毎に分けてプログラムを生成している。例えば、サーバ側のロジック全般とサーバのアクションに対応するクライアント側のリクエスト処理プログラム（即ち、画面上で発生したイベントに応じて実行される処理に対応するプログラム）としてActionプログラム１１２を生成する。また、画面のＧＵＩ部品の設計定義情報（名前、型、項目の桁数等を含む）を有するプログラム（即ち、画面上にレイアウトされる部品の設計情報を定義する処理に対応するプログラム）としてMetaプログラム１１４を生成している。また、ＧＵＩ部品の値を受け渡しするデータ処理プログラム（即ち、画面上にレイアウトされる部品とのデータ受け渡しする処理に対応するプログラム）としてVOプログラム１１６を生成している。
【００８７】
そして、Actionプログラム１１２には、図１３の６０２に示すように、どのオペレーションに対応するプログラムであるのかを示すコメント情報が埋め込まれている。よって、デザイナーは図１３の６０２を参照して該当するActionプログラムを決定して図１４の７０１に示す記載を容易に画面定義内に埋め込むことができる。
【００８８】
また、Metaプログラム１１４には、図１５の８０２に示すように、どの部品の設計定義情報に該当するのかを示すコメント情報が埋め込まれている。よって、デザイナーは図１５の８０２を参照して該当するMetaプログラムを決定して図１６の９０１に示す記載を容易に画面定義内に埋め込むことができる。
【００８９】
また、VOプログラム１１６には、図１７の１００１に示すように、どの部品の値を取り扱うかを示すコメント情報が埋め込まれている。よって、デザイナーは図１７の１００１を参照して該当するVOプログラムを決定して図１８の１１０１に示す記載を容易に画面定義内に埋め込むことができる。
【００９０】
このように、本実施形態のプログラム生成装置により生成された各プログラムコード内には、該プログラムコードにより実現される処理を示すコメント情報が埋め込まれている。よって、デザイナーは別途生成した画面コードと、本実施形態のプログラム生成装置により生成された各プログラムコードとを容易に結びつけることができる。
【００９１】
なお、従来のプログラム生成装置で作成されたプログラムを、画面と切り離し、この切り離したプログラムを、デザイナーが別途作成した画面に組み込んで使用するといったことは非常に困難であり、現実的でなかった。
【００９２】
以上説明したように、別途生成された画面と容易に結びつけ可能なプログラムを生成することにより、プログラム生成装置に依存しない画面のＧＵＩ部品を使用して、自由にレイアウトや設計をすることができる。
【００９３】
このため、新規に作成されたＧＵＩ部品を導入する際にも、プログラム生成装置自体を変更することなく、新規に導入されたＧＵＩ部品を使用できる。
【００９４】
また、サーバ部品と自由につながるので、新規に導入されたＧＵＩ部品をレイアウトできるだけではなく、適切な動作も可能である。
【００９５】
さらに、デザイナーは、プログラム生成装置の生成とは関係なく、より柔軟なレイアウトで画面を作成できる。そして、開発者はユーザ定義情報（例えば、名前や桁数）を変更してアプリケーションを容易に修正できる。
【００９６】
つまり、デザイナーと開発者は、仕様変更してもお互いの修正に影響することなく並行に開発をすることが容易になる。
【００９７】
さらに、本発明のプログラム生成装置は、使用感や見栄えを確かめるため、デザイナーが画面だけを先に作成したり、工数削減や統一感の為に、既にある画面を再利用したりするといった開発手順も用意に実行することができる仕組を提供できる。
【００９８】
従って、デザイナーが作成した見栄えの良い画面と、プログラム生成装置により自動生成された動作ロジックの両方を容易に享受することができる。
【００９９】
なお、本実施形態のプログラム生成装置は、画面を構成するコードを生成しない構成となっているが、デフォルトの画面を構成するコードを生成するように構成してもよい。これにより、デザイナーによる画面作成に遅れが生じた場合などでも、自動生成したデフォルトの画面を用いてアプリケーションを実行することが可能となる。なお、デザイナーによる画面が作成されたあかつきには、該作成された画面によりデフォルトの画面を差し替え可能である。
【０１００】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０１０１】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１０２】
以下、図２０に示すメモリマップを参照して本発明に係るプログラム生成装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０１０３】
図２０は、本発明に係るプログラム生成装置で読み取り可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【０１０４】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１０５】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０１０６】
本実施形態における図３に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１０７】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１０８】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１０９】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＤＶＤ−ＲＯＭ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ，シリコンディスク等を用いることができる。
【０１１０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１１】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１２】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウエアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１１３】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ，データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１１４】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【図面の簡単な説明】
【０１１５】
【図１】本発明の一実施形態を示す情報処理装置（プログラム生成装置）の構成を示すブロック図である。
【図２】図１に示したプログラム生成装置としてのコンピュータのハードウェア構成を示すブロック図である。
【図３】本発明における第１の制御処理手順の一例を示すフローチャートである。
【図４】図１に示したユーザ定義情報の一例を示す図である。
【図５】図１に示したActionテンプレートの一例を示す図である。
【図６】図１に示したActionプログラムの一例を示す図である。
【図７】図１に示したMetaテンプレートの一例を示す図である。
【図８】図１に示したMetaプログラムの一例を示す図である。
【図９】図１に示したVOテンプレートの一例を示す図である。
【図１０】図１に示したVOプログラムの一例を示す図である。
【図１１】従来のプログラム生成装置で生成されたプログラムの一例を示す模式図である。
【図１２】図１に示した本実施形態のプログラム生成装置で生成されたプログラムの一例を示す模式図である。
【図１３】Actionプログラムの一例を示す図である。
【図１４】図１３に示したActionプログラムを画面上にレイアウトされる部品の属性として使用した例を示す図である。
【図１５】Metaプログラムの一例を示す図である。
【図１６】図１５に示したMetaプログラムを画面上にレイアウトされる部品の属性として使用した例を示す図である。
【図１７】VOプログラムの一例を示す図である。
【図１８】図１７に示したVOプログラムを画面上にレイアウトされる部品の属性として使用した例を示す図である。
【図１９】実行されたアプリケーションの画面の一例を示す図である。
【図２０】本発明に係るプログラム生成装置で読み取り可能な各種データ処理プログラムを格納する記録媒体（記憶媒体）のメモリマップを説明する図である。
【符号の説明】
【０１１６】
１００  コンピュータ
１０１  入力装置
１０２  表示装置
１０３  コンピュータ本体
１０４  外部記憶装置
１０５  全体制御部
１０６  画面制御部
１０７  Actionプログラム生成部
１０８  Metaプログラム生成部
１０９  ValueObjectプログラム生成部
１１０  ユーザ定義情報
１１１  Actionテンプレート
１１２  Actionプログラム
１１３  Metaテンプレート
１１４  Metaプログラム
１１５  ValueObjectテンプレート
１１６  ValueObjectプログラム
【図１】
2008287365.tif 000003
【図２】
2008287365.tif 000004
【図３】
2008287365.tif 000005
【図４】
2008287365.tif 000006
【図５】
2008287365.tif 000007
【図６】
2008287365.tif 000008
【図７】
2008287365.tif 000009
【図８】
2008287365.tif 000010
【図９】
2008287365.tif 000011
【図１０】
2008287365.tif 000012
【図１１】
2008287365.tif 000013
【図１２】
2008287365.tif 000014
【図１３】
2008287365.tif 000015
【図１４】
2008287365.tif 000016
【図１５】
2008287365.tif 000017
【図１６】
2008287365.tif 000018
【図１７】
2008287365.tif 000019
【図１８】
2008287365.tif 000020
【図１９】
2008287365.tif 000021
【図２０】
2008287365.tif 000022