(57)【特許請求の範囲】
【請求項１】
フレームワークと生成プログラム種別との対応付けをフレームワーク対応情報として記憶し、
画面に配置する部品情報を画面設計情報として記憶し、
生成プログラムに含まれる部品に関するソースコードについて、画面モデル情報の部品対応ソースコードとフレームワーク種別毎の部品対応ソースコードとを関連付けて部品変換情報として記憶する記憶手段と、
上記画面設計情報に指定された部品に関する情報に基づき、基本のソースプログラムとなる画面モデル情報を生成する画面モデル生成手段と、
いずれかのフレームワークが指定されると、上記フレームワーク対応情報を参照して指定された上記フレームワークに対応する生成プログラム種別を特定し、上記部品変換情報を参照して上記画面モデル情報を構成するソースコードを上記プログラム種別に対応するソースコードに変換することにより指定された上記フレームワークに対応するソースコードを生成するソースコード生成手段と、
を備えたことを特徴とするソースプログラム生成装置。
【請求項２】
上記記憶手段は、さらに、上記画面モデル上に選択できる部品の部品情報を画面部品情報として記憶し、
上記画面部品情報に基づき、部品をＧＵＩ(Graphical User Interface)表示し、操作者が作成したＧＵＩ画面に基づき、上記画面設計情報を生成する処理手段と
を備えたことを特徴とする請求項１に記載のソースプログラム生成装置。
【請求項３】
上記画面設計情報は、上記部品情報として部品配置情報とともに、該当部品のイベント情報を記憶することを特徴とする請求項１または２のいずれかに記載のソースプログラム生成装置。
【請求項４】
上記ソースコード生成手段は、部品毎のソースコードを変換するとき、該当部品と他の部品との配置状況により、異なるソースコードに変換することを特徴とする請求項１〜３のいずれかに記載のソースプログラム生成装置。
【請求項５】
コンピュータを、請求項１〜４のいずれか一項に記載のソースプログラム生成装置として機能させるソースプログラム生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、１つの画面設計図（画面モデル）から複数のフレームワークに対応するソースプログラムを作成するソースプログラム生成装置およびソースプログラム生成プログラムに関するものである。
【背景技術】
【０００２】
フレームワークとは、アプリケーションを作成するときに汎用的に使われる機能を提供するソフトウェアである。このフレームワークを利用すると、フレームワークで予め用意されている機能と独自な機能とを組み合わせて、アプリケーションを作ることができる。つまり開発者は、汎用的な機能はフレームワークを利用し、独自な機能の部分のみ開発すれば良いので、開発効率の向上が見込まれる。
特許文献１（特開２０１０−１０８３７０号公報）では、複数のＧＵＩ(Graphical User Interface)フレームワーク間で共通のＧＵＩ部品を用いる場合は、指定されたＩＤにより、ＧＵＩ部品を特定し、フレームワークに依存しない命令文を記述する。それにより、複数のフレームワークで共通のＧＵＩ部品を用いることができる。
しかし特許文献１に開示された、フレームワークプログラムでは、複数のフレームワークで共有できるのは、画面上の部品のみであり、画面全体の設計やその画面を用いた処理プログラムに関して、フレームワークに対応したソースコードを作成することはできない。
フレームワークを用いるために作成する画面モデルは、フレームワークが異なったとしても、共通で使用できることが多い。しかし従来技術では、１つの画面モデルを複数のフレームワークで共有する仕組みはなく、またフレームワークが作成するソースプログラムはフレームワーク毎に異なるため、１つの画面モデルから複数のソースプログラムを生成することはできない。
技術の変化とともに、フレームワークは多様化し、開発者はニーズに応じてフレームワークを変更する可能性がある。しかし従来技術では、フレームワークが変更されれば、ソースプログラムも再生成する必要が出てくるため、フレームワークを変更した後のソースプログラム生成に関しては、生産性の問題があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１０８３７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この発明は、１つの画面モデルから複数のフレームワークに対応するソースプログラムを生成することを課題とする。
【課題を解決するための手段】
【０００５】
この発明に係るソースプログラム生成装置は、フレームワークと生成プログラム種別との対応付けをフレームワーク対応情報として記憶し、画面に配置する部品情報を画面設計情報として記憶し、生成プログラムに含まれる部品に関するソースコードについて、画面モデル情報の部品対応ソースコードとフレームワーク種別毎の部品対応ソースコードとを関連付けて部品変換情報として記憶する記憶手段と、上記画面設計情報に指定された部品に関する情報に基づき、基本のソースプログラムとなる画面モデル情報を生成する画面モデル生成手段と、いずれかのフレームワークが指定されると、上記フレームワーク対応情報を参照して生成プログラム種別を特定し、上記部品変換情報を参照して上記画面モデル情報を構成するソースコードを上記プログラム種別に対応するソースコードに変換することにより指定されたフレームワークに対応するソースコードを生成するソースコード生成手段とを備えたことを特徴とする。
【０００６】
また上記記憶手段は、さらに、上記画面モデル上に選択できる部品の部品情報を画面部品情報として記憶し、上記画面部品情報に基づき、部品をＧＵＩ(Graphical User Interface)表示し、操作者が作成したＧＵＩ画面に基づき、上記画面設計情報を生成する処理手段とを備えたことを特徴とする。
【０００７】
また上記画面設計情報は、上記部品情報として部品配置情報とともに、該当部品のイベント情報を記憶することを特徴とする。
【０００８】
上記ソースコード生成手段は、部品毎のソースコードを変換するとき、該当部品と他の部品との配置状況により、異なるソースコードに変換することを特徴とする。
【０００９】
またこの発明に係るソースプログラム生成プログラムは、コンピュータを、請求項１〜４のいずれか一項に記載のソースプログラム生成装置として機能させることを特徴とする。
【発明の効果】
【００１０】
この発明のソースプログラム生成装置およびソースプログラム生成プログラムによると、１つの画面モデルから複数のフレームワークに対応するソースプログラムを生成することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１におけるシステム構成図である。
【図２】実施の形態１において表示装置９０１に表示する操作画面５００の一例を示した図である。
【図３】実施の形態１において操作画面５００に表示するパレット５０２と設計エリア５０３の一例を示した図である。
【図４】実施の形態１において設計エリア５０３での画面設計例を示した図である。
【図５】実施の形態１で用いる画面部品情報２６の構成の一例を示した図である。
【図６】実施の形態１で用いるフレームワーク対応情報２７の構成の一例を示した図である。
【図７】実施の形態１で用いる画面設計情報２８ａの構成の一例を示した図である。
【図８】実施の形態１で用いる画面設計情報２８ｂの構成の一例を示した図である。
【図９】実施の形態１で用いる部品変更情報２９ａの構成の一例を示した図である。
【図１０】実施の形態１で用いる部品変更情報２９ｂの構成の一例を示した図である。
【図１１】実施の形態１で用いる画面モデル情報３０の構成の一例を示した図である。
【図１２】実施の形態１で用いるソースコード情報３１ａの構成の一例を示した図である。
【図１３】実施の形態１で用いるソースコード情報３１ｂの構成の一例を示した図である。
【図１４】実施の形態１における処理の流れを示したフローチャートである。
【図１５】実施の形態１における処理の流れを示したフローチャートである。
【図１６】実施の形態１における処理の流れを示したフローチャートである。
【図１７】各実施の形態で用いたクライアント端末１００、ソースプログラム生成装置２００、サーバ装置３００のハードウェア資源の一例を示す図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
操作者（開発者）は、ソースプログラム生成装置２００を用いてフレームワークを選択し、提供される画面部品を用いて画面モデルを作成する。この提供される画面部品は、複数のフレームワークで共通化したものである。その後ソースプログラム生成装置２００は、選択されたフレームワークに対応するソースプログラム（生成プログラム）を生成する。
図１を用いて、本実施の形態のシステム構成図を説明する。操作者からの入力を受け付けソースプログラムを生成するソースプログラム生成装置２００は、ネットワーク４００を介してクライアントサーバ型（Ｃ／Ｓ型）プログラムを実行するクライアント端末１００とサーバ装置３００とに接続されている。
【００１３】
ソースプログラム生成装置２００は、通信手段２１、処理手段２２、画面モデル生成手段２３、ソースコード生成手段２４、オブジェクト生成手段２５を備える。また記憶装置９２９（後述する）に、画面モデル上に選択できる部品の部品情報（部品ＩＤ、部品名、グループおよびグループ内での階層）を記憶した画面部品情報２６、フレームワークと生成プログラム種別との対応付けを記憶したフレームワーク対応情報２７、画面に配置する部品に関して部品配置情報（部品名、ラベル、階層、タグＩＤ、位置）と部品イベント情報とを記憶した画面設計情報２８、生成プログラムに含まれる部品に関するソースコードについて、画面モデル情報を構成する画面モデルの部品対応ソースコードとフレームワーク毎の部品対応ソースコードとを関連付けて記憶する部品変換情報２９を備える。
【００１４】
さらに記憶装置９２９は、画面設計情報２８に指定された部品に関する情報を基本ソースプログラムとして記憶している画面モデル情報３０、画面モデル情報３０を指定のフレームワークに合わせた生成プログラムに変換したソースコード情報３１、ソースコード情報３１をオブジェクトとして構成したオブジェクト情報３２も記憶している。
【００１５】
通信手段２１はクライアント端末１００及びサーバ装置３００に対して、データの送信を行う。処理手段２２はデータの入出力／送受信を処理し、画面部品情報２６に基づき、表示装置９０１（後述する）に部品をＧＵＩ（Graphical User Interface）表示し、操作者が作成したＧＵＩ画面（画面モデル）に基づき、画面設計情報２８を生成する。画面モデル生成手段２３は、画面設計情報２８に指定された部品に関する情報に基づき、基本のソースプログラムとなる画面モデル情報３０を生成する。ソースコード生成手段２４は、いずれかのフレームワークが指定されると、フレームワーク対応情報２７を参照して生成プログラム種別を特定し、次に部品変換情報２９を参照して画面モデル情報３０を構成する基本ソースコードを、特定したプログラム種別に対応する部品対応ソースコードに変換する処理を繰り返すことにより、指定されたフレームワークに対応するソースコード情報３１を生成する。オブジェクト生成手段２５は、ソースコード情報３１をコンパイルしてオブジェクト情報３２を生成する。その後オブジェクト生成手段２５は、複数のオブジェクト情報３２をリンクして、実行可能なオブジェクト情報３２を生成するが、既存技術なので詳細は省略する。
【００１６】
クライアント端末１００は、通信手段１１、処理手段１２、オブジェクト情報１３を備える。通信手段１１は、ソースプログラム生成装置２００及びサーバ装置３００とデータの送受信を行う。処理手段１２は、Ｃ／Ｓ型プログラムを実行するとき、オブジェクト情報１３に基づきクライアント側の処理を行う。
【００１７】
サーバ装置３００は、通信手段３３、処理手段３４、オブジェクト情報３５を備える。通信手段３３は、クライアント端末１００及びソースプログラム生成装置２００とデータの送受信を行う。処理手段３４は、Ｃ／Ｓ型プログラムを実行するとき、オブジェクト情報３５に基づきサーバ側の処理を行う。
【００１８】
次に図２〜４を用いて、表示装置９０１に表示する操作者向けの操作画面５００について説明する。図２に示すフレームワーク選択画面５０１は、操作者から画面作成要求（ソースプログラム生成要求）の入力を受け付けたとき、処理手段２２が最初に表示する画面である。操作者は、フレームワーク選択画面５０１でどのフレームワークに対応するソースプログラムを生成するかを選択する。図２では、フレームワーク２を選択した例を示している。フレームワーク選択画面５０１で選択できるフレームワークの種別、数は、任意に設定することができる。
【００１９】
図３は、操作画面５００に画面部品を一覧で表示するパレット５０２と設計エリア５０３とを表示した例を示す。操作者は、パレット５０２に表示された部品を例えば、クリック、ドラッグ、ドロップ等のマウス操作で選択し、設計エリア５０３に配置する。図３に示す例では、画面上からプレートが配置され、プレートの上部にテキストが配置されている。その下にボタンが配置され、さらにその下にプレートが配置され、プレートの上部にテキストエリアが配置されている。またその下に、ボタンが配置されている。なおテキストとテキストエリアは、どちらもデータの表示エリア（入力も可能とすることができる）であるが、テキストは１行（１レコード）のみ、テキストエリアは複数行（複数レコード）のエリアである。プレートは、他の部品を上部に配置することができ、プレートが下部に配置されていることで上部に配置された部品の説明文をラベルとして指定することができる。
なお図３の説明で、「画面上」、「その下」という表現は、便宜上、操作画面の見た目の位置で上下関係を示している。「上部」という表現は、便宜上、ある部品の上に別の部品を配置した場合、「ある部品の上部に別の部品を配置した」と表現している。
【００２０】
図４は、設計エリア５０３で１つの画面の画面設計が完了した例を示している。テキストに「クライアントからの送信データ」というラベルを付し、ボタンに「サーバへ送信」というラベルを付し、テキストエリアに「サーバからの返送データ」というラベルを付し、その下のボタンに「メッセージクリア」というラベルを付している。これらのラベルは、設計エリア５０３へのデータ入力で指定する。
また設計エリア５０３の上部に、設計した画面の画面ＩＤ入力欄があり、操作者からの入力を受け付ける。
【００２１】
図５〜１２は、記憶装置９２９に記憶された情報の構成を示す。図５は、画面部品情報２６の一例を示すものである。画面部品情報２６は、図５に示すように、設計エリア５０３に配置する部品について、部品ＩＤ、部品名、グループ及び階層を記憶する。設計エリア５０３の一番下部には、画面部品情報２６の１レコード目に記載した「部品ＩＤ＝root、部品名＝パネル」が配置される。一番下部に配置される部品であることを「階層＝１」で示している。それ以外の部品は、階層が２以上で定められ、同じグループ内で階層が低い（数字が小さい）部品ほど、下部に配置される。例えばグループ２では、プレートの上部にテキストエリアが配置され、グループ４では、テーブルの上部にセルが配置され、セルの上部にテキストが配置されることを示す。
処理手段２２は、画面部品情報２６に基づき操作画面５００上のパレット５０２を表示する。
【００２２】
図６は、フレームワーク対応情報２７の一例を示すものである。フレームワーク対応情報２７は、フレームワークと生成プログラム種別との対応を記憶する。例えば、フレームワーク１は、プログラム種別「ＰＧ１（Ｗｅｂアプリケーション用）」に対応し、フレームワーク２は、プログラム種別「ＰＧ２（モバイル向けＷｅｂアプリケーション用）」に対応する。
【００２３】
図７，８は、画面設計情報２８の一例を示すものである。図７に示す画面設計情報２８ａは、部品配置情報であり、部品が設計エリア５０３においてどのように配置されるかを定めている。画面設計情報２８は、設計エリア５０３に配置された部品情報を表形式で示したものであり、例えばＥｘｃｅｌ（登録商標）等の表計算ソフトウェアで編集可能なデータである。画面設計情報２８ａは、部品名、ラベル、階層、及びタグＩＤで構成され、部品名、階層は、画面部品情報２６に定められたものであり、ラベルは設計エリア５０３にデータ入力されたものである。
【００２４】
処理手段２２は、操作画面５００上の設計エリア５０３の構成情報に基づき、画面設計情報２８ａを生成する。処理手段２２は、タグＩＤを設計エリア５０３から入力するように構成してもよいが、操作者が画面設計情報２８ａを編集可能なアプリケーション（表計算ソフトウェア等）を操作することにより、タグＩＤを入力するように構成してもよい。１番目の部品は、設計エリア５０３への入力に基づき、画面ＩＤに関する指定となる。
また図示していないが画面設計情報２８ａは、設計エリア５０３に各々の部品を配置できるように、位置情報及びサイズ情報を有している。
【００２５】
図８に示す画面設計情報２８ｂは、部品イベント情報であり、部品に対するイベントが発生したときに、どのような処理を実行するかを定めている。例えば図８に示すようにタグＩＤが「hellobutton」のボタンに対して「onclick」のイベントが発生したとき、「helloclient」のプレート上部のテキストに入力されたデータを入力として、「Helloメソッド」を呼び出し、「Helloメソッド」からの出力情報をタグＩＤ「helloserver」のプレート上部のテキストエリアに出力することを示している。処理手段２２は、画面設計情報２８ｂを設計エリア５０３から入力するように構成してもよいが、操作者が表計算ソフトウェア等の編集可能なアプリケーションを操作することにより、画面設計情報２８ｂにデータ入力するように構成してもよい。
図７に示す画面設計情報２８ａと図８に示す画面設計情報２８ｂは、１つのファイルとして構成するが、別ファイルとして構成してもよい。
【００２６】
処理手段２２は、設計エリア５０３の入力情報に基づき画面設計情報２８を作成しつつ、表計算ソフトウェア等で直接入力または更新された画面設計情報２８を読み込み、設計エリア５０３に部品情報を配置する。
そのため操作者は、適宜、操作画面５００上で画面を設計したり、画面設計情報２８に直接データ入力することができる。
【００２７】
図９，１０は、部品変換情報２９の一例を示すものである。図９に示す部品変換情報２９ａは、例として部品名「button」について、画面モデルと３つのフレームワークとが項目毎にソースコードでどのように記述されるかを定めている。例えば画面モデルのタグ名は＜type=“button”＞と表現されるものが、フレームワーク１では＜PG1：commandButton＞と変換され、フレームワーク２では＜PG2：Button＞と変換され、フレームワーク３では＜PG3：Button＞ と変換される。
項目とは、部品の特性を示す定義情報であり、図９では、タグ名、ラベル名、ＩＤ、イベントを例示している。１つの部品に関して、複数の項目が定義される。
【００２８】
項目「ＩＤ」について、画面モデルと３つのフレームワークの違いについて説明する。一例として画面モデルでは、ＩＤは単一（ユニーク）とする構文ルールを有しているので、１つのソースコード情報３１に含まれる複数の画面が含まれるとしても画面ＩＤは重複することがないため、「ＩＤ」の指定を「タグＩＤ」で行う。一方フレームワーク１は、同一画面ＩＤでＩＤを単一とする構文ルールを有しているので、「ＩＤ」の指定を画面ＩＤから該当部品のＩＤまで、階層の低い順に定義する。フレームワーク２〜３も画面モデル同様に、ＩＤを単一とする構文ルールを有し、さらに階層が低い部品から順に定義する構文ルールを有しているので、階層の低い順に該当部品のＩＤまで「ＩＤ」を定義する。
また項目「イベント」について、画面モデルはイベントを記述する構文ルールを有しているので、「action_event=“onclick”」のパラメータを含む。フレームワーク１は、パラメータを指定せずに呼び出しメソッドを記述する構文ルールを有しているので、「actionListener=“#{画面ID.exec_メソッド名}”」という記述になる。フレームワーク２，３は、「lib」というライブラリの中で「onClick」のイベントを処理する構文ルールを有しているので、「click=“lib.onClick(event)”」という記述になる。
このように部品変換情報２９は、画面モデルや個々のフレームワークの構文ルールに基づき、画面モデルの部品対応ソースコードとフレームワーク毎の部品対応ソースコードとを関連付けて記憶する。
【００２９】
同様に図１０に示す部品変換情報２９ｂは、部品名「label」、「table」、「text」について、画面モデルと３つのフレームワークとが項目毎にソースコードでどのように記述されるかを定めている。画面モデルのタグ名は＜type=“*”＞（「*」には部品名が埋め込まれる）と表現されるものが、フレームワーク１では＜typeToName(PG1,*)/＞と変換され、フレームワーク２では＜typeToName(PG2,*)/＞、フレームワーク３では＜typeToName(PG3,*)/＞と変換される。このように複数の部品で共通の変換ルールについては、「*」等の変換対象を示す記号を用いて部品変換情報２９を構成する。
なお「typeToName」は、部品名をフレームワーク対応の部品名に変換するため、予め用意されている関数である。例えば「*」が「table」の場合、「typeToName(PG1, table)」により、フレームワーク１に対応した部品名に変換される。
図９に示す部品変換情報２９ａと図１０に示す部品変換情報２９ｂは、１つのファイルとして構成してもよい。
【００３０】
図１１は、基本のソースプログラムとなる画面モデル情報３０の一例を示す。画面モデル生成手段２３は、画面設計情報２８と別途記憶している画面モデル情報３０の構文構成情報（図示せず）とを参照する等により、構文ルールに則ったソースプログラムを生成し、画面モデル情報３０として記憶する。図１１では、図７に示した画面設計情報２８ａ内のラベルが「サーバへ送信」の部品名「ボタン（button）」（上から５番目の部品）について、画面モデル生成手段２３が基本のソースプログラムを生成した例を示す。
【００３１】
図１１の画面モデル情報３０に対応する構文構成情報は、下記のように定められている。
また画面設計情報２８に基づき、同一グループ内の部品を並べて、階層が下部の部品から上部の部品へソースプログラムを生成することが定められている。
<component depth="「部品名の階層を代入」" type="「部品名を代入」">
<io name="「部品名のタグＩＤを代入」"/>
<layout label="「部品名のラベルを代入」"/>
<action action_event="「部品名のイベントを代入」" 
action_method="「部品名の呼び出しを代入」"
action_in="「部品名の入力を代入」"
action_out="「部品名の出力を代入」"/>
</component>
【００３２】
構文構成情報の「component」タグは、部品を示す名称である。「io」タグの「name」属性は、タグＩＤを指定する。「layout」タグの「label」属性は、部品を表示する文字列を示す。「layout」タグは、その他レイアウト全般について、左寄せ、中央、右寄せ、横並び、縦並び等を指定することができる。
「action」は、「action_event」でイベント操作、「action_method」でイベント操作
により呼び出すメソッド、「action_in」でメソッドに渡す入力部品のＩＤ、「action_out」でメソッドから返ってくるデータを出力する出力部品のＩＤを指定する。
【００３３】
画面モデル情報３０の生成手順について説明する。上から順番に、<component depth="2" type="button">のレコードは、構文構成情報に基づき構文ルールに則った構文に、画面設計情報２８ａ内の部品名＝「button」、階層＝「２」を参照することにより、「depth="2" type="button"」を代入している。
次の<layout label="サーバへ送信"/>のレコードには、画面設計情報２８ａ内のラベル＝「サーバへ送信」を参照することにより、「label="サーバへ送信"」を代入している。
さらに<io name=“helloｂutton"/>のレコードには、画面設計情報２８ａ内のタグＩＤ＝「helloｂutton」を参照することにより、「name=“helloｂutton"」を代入している。<action action_event="onclick"
action_method="hello"
action_in=“helloclient"
action_out=“helloserver"/>のレコードには、画面設計情報２８ｂ内のイベント＝「onclick」、呼び出しメゾット＝「ｈello」メソッド、入力＝「helloclient」、出力＝「helloserver」を参照することにより、「action_event="onclick" action_in=“helloclient" action_method="hello" action_out=“helloserver"」を代入する。
このように画面モデル生成手段２３は、構文構成情報の構文ルールに基づき、画面設計情報２８の値を代入して画面モデル情報３０を生成する。
【００３４】
図１２，１３は、ソースコード情報３１の一例を示す。図１２のソースコード情報３１ａは、ソースプログラムＰＧ１に対応したソースプログラムであり、図１３のソースコード情報３１ｂは、ソースプログラムＰＧ２に対応したソースプログラムである。ソースコード生成手段２４は、それぞれのソースプログラムに対応した構文ルール（図示しない構文構成情報）に則り、画面モデル情報３０と部品変換情報２９とを参照して、ソースコード情報３１を生成する。一例としてソースプログラムＰＧ１は、利用者からのカスタマイズを受け付けない構成となっているため、図１２に示すように、最適化のための構文を含んだ構文ルールを有する。
【００３５】
ソースコード生成手段２４は部品変換情報２９ａを参照することにより、例えばソースコード情報３１ａの先頭行にソースプログラムＰＧ１に対応する「PG１:commandButton」を代入する。３行目に「value="サーバへ送信"」を代入する。「actionListener」は、図９に示すように部品に対してイベントが発生したとき実行され、画面ＩＤ「helloWorld」で指定した「hello」メソッドを呼び出すことを示す。「reRender」は、アクションにより反映させるエリアとして、入力部品と出力部品のＩＤとを指定する。
下３行は、操作パフォーマンス向上のため、デフォルトで挿入される構文である。「onclick =”this.disabled=true”」は、ボタンを押した瞬間にボタン操作を不可とし、これによりサーバ装置３００側の処理が終わる前に、ボタンを２度以上押させないようにしている。「oncomplete=”this.disabled=false”」は、サーバ処理が完了した際に、ボタン操作不可を解除している。
「ajaxSingle=“true”」は、リクエスト範囲を限定している。この場合、<PG1:commandButton>を含むコンポーネントのみリクエストをサーバ装置３００に送信することにより、無駄なトラフィックを発生させない。
【００３６】
また図１３に示すように、ソースプログラムＰＧ２は、クライアント側でライブラリが用意されているため、ライブラリを呼び出す構文ルールを有する。
またソースコード情報３１ｂの先頭行にソースプログラムＰＧ２に対応する「PG２:Button」を代入し、３行目に「label="サーバへ送信"」を代入する。「keyUp」は、キーボードを押して離した瞬間に呼び出される処理であり、キーボードによる操作を可能とする。
イベントについては、「onClick」と同様である。
【００３７】
図１４〜図１６を用いて、本実施の形態における処理の流れを説明する。処理を開始し、ソースプログラム生成装置２００の処理手段２２は、操作者からの画面作成要求を受け付け、フレームワーク選択画面５０１を表示し（ステップＳ１、図２参照）、フレームワーク選択画面５０１で選択されたフレームワークを記憶装置９２９に記憶する（ステップＳ２）。
【００３８】
次に処理手段２２は画面部品情報２６を参照して、操作画面５００にパレット５０２を表示し、さらに設計エリア５０３も表示する（ステップＳ３、図３参照）。処理手段２２は、操作者から操作画面５００を用いた画面設計を受け付け（図４参照）、設計が完了した旨の入力を操作者から受け付けたとき、設計エリア５０３の定義内容から画面設計情報２８を生成する（ステップＳ４）。画面モデル生成手段２３は、画面設計情報２８を参照しながら、画面モデル情報３０を生成する（ステップＳ５）。ステップＳ５の処理は、画面設計情報２８の全てのレコードに対して、実行される。
【００３９】
図１５に移り、ソースコード生成手段２４は、フレームワーク対応情報２７を参照して、ステップＳ２で記憶したフレームワークに対応するプログラム種別を作成するプログラム種別として決定する（ステップＳ６）。ソースコード生成手段２４は、部品変換情報２９と画面モデル情報３０とを参照して、ソースコードを生成し、ソースコード情報３１に記憶する（ステップＳ７）。ステップＳ７でソースコード生成手段２４は、画面モデル情報３０を構成するソースコードを順次参照し、部品変換情報２９の項目のいずれかに設定されているソースコードの一部を検出した場合は、部品変換情報２９の項目毎の対応情報を参照して、特定したプログラム種別に対応するソースコード情報３１に変換する。具体的にはフレームワーク１が指定されている場合、ソースコード生成手段２４は、画面モデル情報３０を上から順番に参照していき、例えば、図１１の先頭行<component depth="2" type="button">を参照して、「type="button"」の部分が部品変換情報２９の項目「タグ名」に設定されていることを検出し、フレームワーク１の項目「タグ名」に設定された「PG1:commandButton」を「type="button"」の部分に代入する。同様に、画面モデル情報３０のレコードを部品変換情報２９に基づき変換し、ソースコード情報３１を生成する。
オブジェクト生成手段２５は、ソースコード情報３１を参照しながら、オブジェクト情報３２を生成し（ステップＳ８）、処理手段２２は通信手段２１を用いて、オブジェクト情報３２のクライアント部分のクライアント端末１０に、サーバ部分をサーバ装置３００に送信し（ステップＳ９）、処理を終了する。
【００４０】
図１６に示すように、クライアント端末１００の通信手段１１は、ソースプログラム生成装置２００からクライアント部分のオブジェクト情報を受信し、オブジェクト情報１３として記憶する（ステップＳ１１）。処理手段１２は、オブジェクト情報１３を用いて、処理を実行する（ステップＳ１２）。
【００４１】
同様に、サーバ装置３００の通信手段３３は、ソースプログラム生成装置２００からサーバ部分のオブジェクト情報を受信し、オブジェクト情報３５として記憶する（ステップＳ２１）。処理手段３４は、オブジェクト情報３５を用いて、処理を実行する（ステップＳ２２）。ステップＳ１２とステップＳ２２で示す処理は、連動して実行される。
【００４２】
なおステップＳ４で処理手段２２は、設計エリア５０３の定義内容に基づき表形式の画面設計情報２８を生成するが、前述したように画面設計情報２８は表計算ソフトウェア等で編集可能な形式である。操作者はステップＳ３，４の処理を実行する代わりに所定の表計算ソフトウェアで画面設計情報２８を生成して、ステップＳ５の処理に継続してもよい。また既に作成済みの画面設計情報２８をステップＳ５で読み込み、読み込んだ情報を設計エリア５０３に表示し、設計エリア５０３での設計変更を受け付け、変更内容に基づき画面設計情報２８を更新するように構成してもよい。このようにステップＳ５で処理手段２２は、画面設計情報２８の新規作成、読み込み、及び読み込み後の再作成を実行する。
【００４３】
本実施の形態によるソースプログラム生成装置２００では、操作者は、操作画面５００の操作、または画面設計情報２８へのデータ入力、更新を行うだけよい。画面設計情報２８から生成した画面モデル情報３０と部品変換情報２９とを参照することにより、操作者が選択したフレームワークに合ったソースプログラムを生成する。部品変換情報２９は、操作者または、システム開発責任者等により、随時、追加／更新される。
【００４４】
以上説明したように本実施の形態によるソースプログラム生成装置では、記憶装置９２９（記憶手段）はフレームワークと生成プログラム種別との対応付けをフレームワーク対応情報２７として記憶し、画面に配置する部品情報を画面設計情報２８として記憶し、生成プログラムに含まれる部品に関するソースコードについて、画面モデル情報３０の部品対応ソースコードとフレームワーク種別毎の部品対応ソースコードとを関連付けて部品変換情報２９として記憶する。部品変換情報２９には、図９に示したように部品の特性を示す定義情報である項目（タグ名、ラベル名、ＩＤ、イベント等）毎に、画面モデルとフレームワークとの対応付けが設定されている。
【００４５】
また画面モデル生成手段２３は、画面設計情報２８に指定された部品に関する情報に基づき、基本のソースプログラムとなる画面モデル情報３０を生成する。その後ソースコード生成手段２４は、操作者によりいずれかのフレームワークが指定されると、フレームワーク対応情報２７を参照して生成プログラム種別を特定する。さらにソースコード生成手段２４は、画面モデル情報３０を構成するソースコードを順次参照し、部品変換情報２９の項目のいずれかに設定されているソースコードの一部を検出した場合は、部品変換情報２９の項目毎の対応情報を参照して、特定したプログラム種別に対応するソースコード情報３１に変換（代入）する。それにより、指定されたフレームワークに対応するソースコード情報３１が生成される。
【００４６】
記憶装置９２９は、さらに、画面モデル上に選択できる部品の部品情報を画面部品情報２６として記憶し、処理手段２２は、画面部品情報２６に基づき、部品をＧＵＩ表示し、操作者が作成したＧＵＩ画面に基づき、画面設計情報２８を生成する。
また画面設計情報２８は、部品情報として部品配置情報（図７）とともに、該当部品のイベント情報（図８）を記憶する。
【００４７】
このように本実施の形態では、１つの画面モデル（画面デザイン）から複数のフレームワークに対応するソースプログラムを作成することができる。それにより、画面デザインは変更しないが、フレームワークを変更する場合でも、新しいフレームワークに対応したソースプログラムを生成することが容易となる。
また部品だけではなく、画面全体の設計や処理プログラムについて、複数のフレームワークで共通で使用することができる。
本実施の形態のソースプログラム生成方法は、クライアント端末１００側に何らかの操作画面を有するＣ／Ｓ型プログラムのソースプログラム生成に対応できる。
【００４８】
実施の形態２．
本実施の形態では、ソースコード生成手段２４は、部品毎のソースコードを変換するとき、該当部品と他の部品との配置状況により、変換するソースコードが異なる点が特徴である。
図４のように設計された画面で、ラベルが「メッセージクリア」のボタンはルートの上に直接配置されているが、別のボタンをプレートの上部に配置することができる。例えば、ルート上部のボタン（プレートなし）と、プレート上部のボタンで、変換するソースコードを変更する場合がある。
【００４９】
実現方法としては、部品変換情報２９ａ、２９ｂの部品名毎のレコードに下部（または上部）部品名という項目を追加し、１レコードを部品名、フレームワーク、項目、下部（または上部）部品名、部品対応ソースコードという項目で構成する。このとき、１つの部品に対する下部部品名、または上部部品名は、画面部品情報２６に記憶された同一グループの部品に限定される。
図１５で示す処理の流れの中のステップＳ７で、ソースコード生成手段２４が個々の部品のソースコードを生成するとき、参照すべき部品変換情報２９に下部部品名が指定されていれば、画面モデル情報３０の該当部品の<component depth="「部品名の階層を代入」" type="「部品名を代入」">レコードの「depth＝」の数値を取得する。その数値より小さい数値で指定された部品が直前にあるかどうかを確認し、直前にあれば下部部品があると判定する。下位部品があれば、その部品の<component depth="「部品名の階層を代入」" type="「部品名を代入」">レコードの「type＝」の項目名を取得する。その項目名が部品変換情報２９の下部部品名で指定された項目名と一致すると判定した場合、一致する下部項目名が指定されたレコードの部品対応ソースコードを参照データとして用いる。
【００５０】
参照すべき部品変換情報２９に下部部品名が指定されていない場合、参照すべき部品変換情報２９に下部部品名が指定されていても、該当の部品の階層を示す数値より小さい数値で指定された部品が直前にない場合、および直前にある部品が部品変換情報２９の下部部品名で指定された項目名と一致しない場合は、部品変換情報２９の下部部品名が指定されていないレコードの部品対応ソースコードを参照データとして用いる。
【００５１】
同様に、図１５で示す処理の流れの中のステップＳ７で、ソースコード生成手段２４が個々の部品のソースコードを生成するとき、参照すべき部品変換情報２９に上部部品名が指定されていれば、画面モデル情報３０の該当部品の<component depth="「部品名の階層を代入」" type="「部品名を代入」">レコードの「depth＝」の数値を取得する。その数値より大きい数値で指定された部品が直後にあるかどうかを確認し、直後にあれば上部部品があると判定する。上部部品があれば、その部品の<component depth="「部品名の階層を代入」" type="「部品名を代入」">レコードの「type＝」の項目名を取得する。その項目名が部品変換情報２９の上部部品名で指定された項目名と一致すると判定した場合、一致する上部項目名が指定されたレコードの部品対応ソースコードを参照データとして用いる。
参照すべき部品変換情報２９に上部部品名が指定されていない場合、参照すべき部品変換情報２９に上部部品名が指定されていても、該当の部品の階層を示す数値より大きい数値で指定された部品が直後にない場合、および直後にある部品が部品変換情報２９の上部部品名で指定された項目名と一致しない場合は、部品変換情報２９の上部部品名が指定されていないレコードの部品対応ソースコードを参照データとして用いる。
【００５２】
部品変換情報２９に上部部品名、下部部品名を追加することにより、ソースコード生成手段２４が参照する部品対応ソースコードを変更するように構成することができる。またソースコード生成手段２４が、上部部品、下部部品の存在により参照する部品対応ソースコードを変更するルールを記憶し、該当の上部部品または下部部品が存在することを確認したとき、記憶したルールに基づき、参照する部品対応ソースコードを変更するように構成することもできる。
【００５３】
このように本実施の形態によると、ソースコード生成手段２４は、部品毎のソースコードを変換するとき、部品変換情報２９に記憶された該当部品と他の部品との配置状況により、異なるソースコードに変換する。
同じ部品でも上部部品または、下部部品の存在による配置状況により、生成するソースコードを変更させることができ、複雑な処理を行うソースプログラムにも対応できる。その場合も操作者は、画面設計情報２８を生成に関する作業をするだけでよく、生産性向上を妨げることはない。
上部部品、下部部品の階層については、２層以上の配置状況を設定することができ、また、上部部品、下部部品どちらも特定の部品がある配置状況を設定することもできる。
【００５４】
図１７は、各実施の形態で用いたクライアント端末１００、ソースプログラム生成装置２００、サーバ装置３００のハードウェア資源の一例を示す図である。
図１７において、コンピュータは、システムユニット（図示せず）、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶ディスプレイ）の表示画面を有する表示装置９０１、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニットは、コンピュータであり、ＬＡＮに接続されている。
【００５５】
各コンピュータは、プログラムを実行するＣＰＵ９１１（「演算装置」、「マイクロプロセッサ」、「マイクロコンピュータ」、「プロセッサ」ともいう）を備えている。ＣＰＵ９１１は、図１で示した各処理部（〜手段）でデータや情報の演算、加工、読み取り、書き込みなどを行うために利用される処理装置である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、スキャナ装置９０６、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカードリーダライタなどの記憶媒体が用いられてもよい。
【００５６】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、それぞれのコンピュータが用いる記憶装置（記憶部）９２９の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、スキャナ９０６などは、入力装置（図示せず）の一例である。また、通信ボード９１５、表示装置９０１などは、出力装置（図示せず）の一例である。表示装置９０１をタッチパネルとして、入力装置の機能を備えるように構成することもできる。
【００５７】
通信ボード９１５は、ネットワーク４００に接続されている。ネットワーク４００は、ＬＡＮに限らず、インターネット、あるいは、ＷＡＮなどで構成されていても構わない。
記憶装置（磁気ディスク装置）９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本実施の形態の説明において「〜手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。また、ファイル群９２４には、各実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（ＩＤｅｎｔｉｆｉｅｒ）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として記憶されている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ディスクやメモリなどの記憶媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのＣＰＵ９１１の処理（動作）に用いられる。抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００５８】
また、各実施の形態の説明において説明するブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号は、ＲＡＭ９１４などのメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク（ＭＤ）、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）などの記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体により伝送される。
【００５９】
また、各実施の形態の説明において「〜手段」として説明するものは、「〜部」、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜手段」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、ソフトウェアのみ、あるいは、素子・デバイス・基板・配線などのハードウェアのみ、あるいは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤなどの記録媒体に記憶される。このプログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、各実施の形態の説明で述べる「〜手段」としてコンピュータを機能させるものである。あるいは、各実施の形態の説明で述べる「〜手段」の手順や方法をコンピュータに実行させるものである。
【符号の説明】
【００６０】
１１  通信手段、１２  処理手段、１３  オブジェクト情報、２１  通信手段、２２  処理手段、２３  画面モデル生成手段、２４  ソースコード生成手段、２５  オブジェクト生成手段、２６  画面部品情報、２７  フレームワーク対応情報、２８  画面設計情報、２９  部品変換情報、３０  画面モデル情報、３１  ソースコード情報、３２  オブジェクト情報、３３  通信手段、３４  処理手段、３５  オブジェクト情報、１００  クライアント端末、２００  ソースプログラム生成装置、３００  サーバ装置、４００  ネットワーク、５００  操作画面、５０１  フレームワーク選択画面、５０２  パレット、５０３  設計エリア。
【要約】
【課題】１つの画面モデルから複数のフレームワークに対応するソースプログラムを生成することを課題とする。
【解決手段】フレームワーク対応情報２７と画面設計情報２８と部品変換情報２９を記憶する記憶手段と、画面設計情報２８に指定された部品毎に基づき、画面モデル情報を生成する画面モデル生成手段２３と、いずれかのフレームワークが指定されると、フレームワーク対応情報２７を参照して生成プログラム種別を特定し、部品変換情報２９を参照して画面モデル情報３０を構成する画面モデル３０に対応するソースコードをプログラム種別に対応する部品対応ソースコードに変換することにより指定されたフレームワークに対応するソースコードを生成するソースコード生成手段２４とを備えたことを特徴とする。
【選択図】図１【図１】
0005629355.tif 000002
【図２】
0005629355.tif 000003
【図３】
0005629355.tif 000004
【図４】
0005629355.tif 000005
【図５】
0005629355.tif 000006
【図６】
0005629355.tif 000007
【図７】
0005629355.tif 000008
【図８】
0005629355.tif 000009
【図９】
0005629355.tif 000010
【図１０】
0005629355.tif 000011
【図１１】
0005629355.tif 000012
【図１２】
0005629355.tif 000013
【図１３】
0005629355.tif 000014
【図１４】
0005629355.tif 000015
【図１５】
0005629355.tif 000016
【図１６】
0005629355.tif 000017
【図１７】
0005629355.tif 000018