(57)【特許請求の範囲】
【請求項１】
アプリケーションサーバ上で稼働するＷｅｂアプリケーションプログラムのソースコードを生成するコード生成サーバを有するアプリケーション開発支援システムであって、
さらに、前記Ｗｅｂアプリケーションプログラムの実行時に画面上に表示する１つ以上の入出力項目の識別情報をキーとして、前記入出力項目についてのラベルコントロールのテキストを示す表示名の情報と前記入出力項目を入力もしくは出力するために表示する入出力コントロールに係る情報とを少なくとも有するパーツオブジェクトについての１つ以上のパラメータの初期値からなる情報を辞書データとして保持する辞書テーブルを有する辞書サーバを有し、
前記コード生成サーバは、前記各入出力項目について、これらをそれぞれ画面上に表示するための前記パーツオブジェクトを呼び出すことによって前記Ｗｅｂアプリケーションプログラムを構成し、構成した前記Ｗｅｂアプリケーションプログラムのソースコードを生成するコード生成部を有し、
前記パーツオブジェクトは、前記アプリケーションサーバ上での前記Ｗｅｂアプリケーションプログラムの実行時に画面上に対応する入出力項目を表示するために呼び出された際、前記入出力項目の識別情報をキーとして、前記辞書サーバ上の前記辞書テーブルから前記パーツオブジェクトについての前記パラメータの一部または全部の情報を取得し、取得した前記パラメータに基づいて前記ラベルコントロールおよび／または前記入出力コントロールを表示するものであることを特徴とするアプリケーション開発支援システム。
【請求項２】
請求項１に記載のアプリケーション開発支援システムにおいて、
前記コード生成サーバは、さらに、前記アプリケーションサーバ上の前記Ｗｅｂアプリケーションプログラムがアクセスする業務データベースのスキーマ情報を読み込んで前記業務データベースの各カラムの識別情報を含む構成に係る情報を取得するスキーマ取得部と、
前記パーツオブジェクトについての識別情報と、前記入出力項目の識別情報とのマッピングに係るマッピング情報を生成するマッピング生成部とを有し、
前記マッピング生成部は、前記スキーマ取得部が取得した前記業務データベースの前記各カラムの識別情報を、前記辞書テーブルにおける前記入出力項目の識別情報として、前記マッピング情報を作成し、
前記コード生成部は、前記マッピング情報を前記Ｗｅｂアプリケーションプログラムのソースコードに出力することを特徴とするアプリケーション開発支援システム。
【請求項３】
請求項２に記載のアプリケーション開発支援システムにおいて、
前記コード生成サーバの前記コード生成部は、ＣＲＵＤ型アプリケーションのフレームワークに基づいて、前記業務データベースについてのＣＲＵＤ型アプリケーションを生成することを特徴とするアプリケーション開発支援システム。
【請求項４】
請求項１〜３のいずれか１項に記載のアプリケーション開発支援システムにおいて、
前記パーツオブジェクトは、前記アプリケーションサーバでの前記Ｗｅｂアプリケーションプログラムの実行時に、前記ラベルコントロールと、指定された種類の前記入出力コントロールとを組み合わせて表示し、もしくは前記ラベルコントロールおよび／または前記入出力コントロールを表示しないよう表示制御し、
前記コード生成サーバの前記コード生成部は、前記Ｗｅｂアプリケーションプログラムのソースコードを生成する際に、前記パーツオブジェクトについて前記表示制御の内容を特定する所定の初期値を指定して呼び出すよう生成することを特徴とするアプリケーション開発支援システム。
【請求項５】
請求項１〜４のいずれか１項に記載のアプリケーション開発支援システムにおいて、
前記パーツオブジェクトは、表示する前記入出力コントロールに応じた制御処理を実装しており、
前記辞書サーバの前記辞書テーブルは、前記辞書データにおいて、前記パーツオブジェクトについての前記パラメータとして、前記制御処理の内容を指定するための情報を登録可能であることを特徴とするアプリケーション開発支援システム。
【請求項６】
請求項２に記載のアプリケーション開発支援システムにおいて、
前記辞書サーバは、前記辞書テーブルにキーと辞書データからなるエントリーを登録する辞書登録部を有し、
前記辞書登録部は、前記コード生成サーバの前記コード生成部により生成されたソースコード上の前記マッピング情報と、前記辞書テーブルに登録されているエントリーとに基づいて、前記辞書テーブルに登録が必要な前記入出力項目の識別情報を判別することを特徴とするアプリケーション開発支援システム。
【請求項７】
アプリケーションサーバ上で稼働するＷｅｂアプリケーションプログラムのソースコードを生成するコード生成サーバと、前記Ｗｅｂアプリケーションプログラムの実行時に画面上に表示する１つ以上の入出力項目の識別情報をキーとして、前記入出力項目についてのラベルコントロールのテキストを示す表示名の情報と前記入出力項目を入力もしくは出力するために表示する入出力コントロールに係る情報とを少なくとも有するパーツオブジェクトについての１つ以上のパラメータの初期値からなる情報を辞書データとして保持する辞書テーブルを有する辞書サーバとを有するアプリケーション開発支援システムにおける前記コード生成サーバとしてコンピュータを動作させるアプリケーション開発支援プログラムであって、
前記各入出力項目について、これらをそれぞれ画面上に表示するための前記パーツオブジェクトを呼び出すことによって前記Ｗｅｂアプリケーションプログラムを構成し、構成した前記Ｗｅｂアプリケーションプログラムのソースコードを生成するコード生成処理を実行し、
前記パーツオブジェクトは、前記アプリケーションサーバ上での前記Ｗｅｂアプリケーションプログラムの実行時に画面上に対応する入出力項目を表示するために呼び出された際、前記入出力項目の識別情報をキーとして、前記辞書サーバ上の前記辞書テーブルから前記パーツオブジェクトについての前記パラメータの一部または全部の情報を取得し、取得した前記パラメータに基づいて前記ラベルコントロールおよび／または前記入出力コントロールを表示するものであることを特徴とするアプリケーション開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムの開発を支援する技術に関し、特に、データベースに対するＣＲＵＤ（Create,Read,Update,Delete）型のアプリケーションプログラム等についてのソースコードを自動生成するアプリケーション開発支援システムおよびアプリケーション開発支援プログラムに適用して有効な技術に関するものである。
【背景技術】
【０００２】
Ｗｅｂアプリケーションプログラムなどを開発する際の開発負荷低減や標準化等を目的として、例えば、ＧＵＩ（Graphical User Interface）作成機能などを含むいわゆる統合開発環境（ＩＤＥ：Integrated Development Environment）や、Ruby on Rails（ＲｏＲ、非特許文献１）などのアプリケーションフレームワークなどが用いられる場合が多い。また、これらを組み合わせて用いることも行われている。このような開発支援ツール等を用いることで、例えばユーザインタフェースを有するＷｅｂアプリケーションプログラムについてソースコードを自動生成することが可能である。
【０００３】
しかしながら、これらの開発支援ツールでは、ソースコードを自動生成したアプリケーションに対して、その後さらに画面表示の内容の変更や調整等（例えば、画面上の表示項目やコントロール（部品）、その属性等の変更）をしようとする場合には煩雑な手順を踏む必要がある。例えば、開発支援ツールのＧＵＩ作成機能等を使用して画面表示内容についての設定や定義等の修正を行い、再度ソースコードの自動生成を行って、さらに必要に応じてビルド等を行い、作成されたモジュールを入れ替える等の作業を行う必要がある。このような作業は、開発者にとって負担となるだけでなく、障害を誘発する要因ともなり得る。
【０００４】
これに対して、例えば、特開２００７−２８０１８９号公報（特許文献１）には、サーバに備えられた表示画面から表示される画面の設定変更を行うためのプログラムを生成するプログラム生成装置において、画面を変更する場合、画面項目情報管理部が画面項目情報に基づいて表示項目用ファイルを作成し、入力項目／カラム対応部がテーブル項目情報に基づいて入力項目用ファイルを作成し、出力項目／カラム対応部がテーブル項目情報に基づいて出力項目用ファイルを作成し、さらに、表示項目用ファイル、入力項目用ファイル、および出力項目用ファイルを用いて、プログラム生成部が画面プログラムおよびサーバプログラムを生成することにより、画面プログラムおよびサーバプログラムのソースコードを変更することなく画面を変更する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２８０１８９号公報
【非特許文献】
【０００６】
【非特許文献１】インターネット＜URL：http://rubyonrails.org/＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載されているような技術を利用することにより、ソースコードを変更することなく画面表示の内容を変更することが可能である。しかしながら、特許文献１に記載されているような技術では、画面上の入出力項目としてどのような項目を表示するかや、表示項目とデータベースのカラムとの対応関係を変更することは可能であるが、例えば、入出力項目を表示する各コントロールの外観や属性等について、試行錯誤により調整しながらユーザインタフェースを構築していくといったような作業を、いったん作成したソースコードを変更せずに、もしくは変更を加えるとしても簡易な変更のみにより動的に行うということは困難である。
【０００８】
そこで本発明の目的は、データベースに対するＣＲＵＤ型のアプリケーションプログラム等についてのソースコードを自動生成し、その後、生成されたソースコードに対して変更を加えずに、もしくは加えるとしても簡易な変更のみにより、画面上の入出力項目を表示するコントロールの外観や属性等について動的に変更することを可能とするアプリケーション開発支援システムおよびアプリケーション開発支援プログラムを提供することにある。
【０００９】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【００１１】
本発明の代表的な実施の形態によるアプリケーション開発支援システムは、アプリケーションサーバ上で稼働するＷｅｂアプリケーションプログラムのソースコードを生成するコード生成サーバを有するシステムであって、以下の特徴を有するものである。
【００１２】
すなわち、アプリケーション開発支援システムは、さらに、前記Ｗｅｂアプリケーションプログラムの実行時に画面上に表示する１つ以上の入出力項目の識別情報をキーとして、前記入出力項目についてのラベルコントロールのテキストを示す表示名の情報と前記入出力項目を入力もしくは出力するために表示する入出力コントロールに係る情報とを少なくとも有するパーツオブジェクトについての１つ以上のパラメータの初期値からなる情報を辞書データとして保持する辞書テーブルを有する辞書サーバを有し、前記コード生成サーバは、前記各入出力項目について、これらをそれぞれ画面上に表示するための前記パーツオブジェクトを呼び出すことによって前記Ｗｅｂアプリケーションプログラムを構成し、構成した前記Ｗｅｂアプリケーションプログラムのソースコードを生成するコード生成部を有する。
【００１３】
前記パーツオブジェクトは、前記アプリケーションサーバ上での前記Ｗｅｂアプリケーションプログラムの実行時に画面上に対応する入出力項目を表示するために呼び出された際、前記入出力項目の識別情報をキーとして、前記辞書サーバ上の前記辞書テーブルから前記パーツオブジェクトについての前記パラメータの一部または全部の情報を取得し、取得した前記パラメータに基づいて前記ラベルコントロールおよび／または前記入出力コントロールを表示するものであることを特徴とするものである。
【００１４】
また、本発明は、コンピュータを上記のようなアプリケーション開発支援システムにおけるコード生成サーバとして動作させるプログラムにも適用することができる。
【発明の効果】
【００１５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１６】
すなわち、本発明の代表的な実施の形態によれば、データベースに対するＣＲＵＤ型のアプリケーションプログラム等についてのソースコードを自動生成し、その後、生成されたソースコードに対して変更を加えずに、もしくは加えるとしても簡易な変更のみにより、画面上の入出力項目を表示するコントロールの外観や属性等の画面内容について動的に変更することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施の形態であるアプリケーション開発支援システムの構成例について概要を示した図である。
【図２】本発明の一実施の形態におけるパーツオブジェクトにより対応するカラムの入出力項目を画面上に表示する際の処理の例について概要を示した図である。
【図３】本発明の一実施の形態におけるパーツオブジェクトにより表示されるコントロールの外観等について変更する際の処理の例について概要を示した図である。
【図４】本発明の一実施の形態におけるパーツオブジェクトにより表示されるコントロールの外観等について変更する際の処理の別の例について概要を示した図である。
【図５】本発明の一実施の形態における辞書テーブルにエントリーが登録されていく際のソースコードの生成について概要を示した図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１９】
本発明の一実施の形態であるアプリケーション開発支援システムは、例えば、上述したＲｏＲなどのようなアプリケーションフレームワークや、これとＧＵＩ作成機能、バージョン管理、ビルド等の開発機能を統合したＩＤＥなどのソフトウェアプログラムを動作させるシステムとして構成され、データベースに対するＣＲＵＤ型のＷｅｂアプリケーションを始めとする、ユーザインタフェースを有するＷｅｂアプリケーションプログラムについてのソースコードを自動生成する機能を有する。
【００２０】
ここでは例えば、公知の技術により、アプリケーションプログラムによるアクセス対象の業務データベースについてＤＢＭＳ（DataBase Management System）において管理されているスキーマ情報を読み込むことで、対象のデータベース（テーブル）のカラムの構成に係る情報を取得する。その内容に基づいて、公知の技術により、予め定められた画面デザインや動作内容を有するＣＲＵＤ型のＷｅｂアプリケーションプログラムのソースコードを、例えば、Ｊａｖａ（登録商標）やＰＨＰ（Hypertext Preprocessor）、Ｒｕｂｙなどのオブジェクト指向プログラミング言語により自動生成する。このとき、従来技術などと同様に、データベースの各カラムと画面上の入出力項目とのマッピングに係る情報を保持しておく。
【００２１】
本実施の形態では、例えば、業務データベースにアクセスするＣＲＵＤ型のＷｅｂアプリケーションプログラムにおいて、画面上の入出力項目（例えば、業務データベースからデータを取得するための検索条件の内容を指定する入力項目や、検索結果の内容を表示する出力項目）に係る内容を表示するために、標準的なコントロールオブジェクト（以下では単に“コントロール”と記載する場合がある）を直接用いるのではなく、後述するような、表示名称とコントロールの設定内容や制御処理および説明テキストの各データが一体となったパーツオブジェクトを用いるものとする。
【００２２】
このパーツオブジェクトは、画面上にどのようなコントロールを表示するか（例えば、テキストコントロールのみ、（テキストコントロールと）入力フィールド、（テキストコントロールと）ドロップダウンリスト、…等）をパラメータとして指定することが可能である。また、コントロールの属性値（例えば、テキストコントロールに表示されるテキストの内容や、入力フィールドの長さ等）や、制御情報（例えば、入力データの妥当性チェックをどのように行うか等）などについても指定することができるものとし、指定された内容に従ってコントロールを表示および制御するよう実装されている。
【００２３】
換言すると、パーツオブジェクトは、入力フィールドやドロップダウンリスト、テキストなどの、入出力項目のデータを取り扱う入出力コントロールと、入出力項目の名称等を表示するテキストコントロールであるラベルコントロールとを組み合わせて表示するよう構成されており、これらのコントロールの出力のパターンを指定可能であるという構成を有する。
【００２４】
このとき、ラベルコントロールと入出力コントロールとを一括して整合性を持った形でコントロールの幅等の属性値を調整することができるため、ユーザが個別に整合性を持つように属性値等を指定するという煩雑な処理の必要がなく、表示されるコントロールの外観の調整を行うことができる。この調整には、例えば、表示可能領域に対して、ラベルコントロールが意図しない箇所で改行されたり、逆に意図した箇所で改行されなかったり等を防止するよう、ラベルコントロールと入出力コントロールの表示幅を一体的に調整することなどが含まれる。
【００２５】
本実施の形態のアプリケーション開発支援システムは、画面上の各入出力項目に係る内容について当該パーツオブジェクトを使用して表示するものとしてソースコードを生成する。すなわち、パーツオブジェクトを使用して間接的にコントロールを表示する（パーツオブジェクトがＷｅｂサーバシステム上での実行時に対象のコントロールを表示するＨＴＭＬ（HyperText Markup Language）やスクリプト等を動的に生成する）。また、アプリケーションプログラムがアクセスする対象のデータベースの各カラムと画面上の入出力項目とのマッピングに係る情報は、データベースの各カラムの識別情報（例えばカラム名称）と、対応するパーツオブジェクトの識別情報（例えばＨＴＭＬのＩＤ属性値）とのマッピング情報としてソースコード上に保持する。
【００２６】
さらに、本実施の形態では、各パーツオブジェクトにおいてラベルコントロールに表示するテキスト、および入出力コントロールの属性値や制御処理に係る情報などについて、後述するように、一部を除き、ソースコード上で直接指定するのではなく、パーツオブジェクトのＩＤもしくは対応するデータベースのカラム名称等の識別情報と関連付けられた辞書データとして外出しにして保持するよう構成する。パーツオブジェクトは、実行時に辞書データを読み出して、この内容に基づいてラベルコントロールや入出力コントロールを表示する。この辞書データの内容を設定・変更等することにより、いったん生成されたソースコードに対して変更を加えずに、もしくは加えるとしても簡易な変更のみにより、パーツオブジェクトにより画面上に表示されるコントロールの外観や属性等を動的に変更可能とする。
【００２７】
＜システム構成＞
図１は、本発明の一実施の形態であるアプリケーション開発支援システムの構成例について概要を示した図である。アプリケーション開発支援システム１は、例えば、ＰＣ（Personal Computer）やサーバ機器、クラウドコンピューティング環境での仮想サーバなどのコンピュータ機器により構成されるコード生成サーバ１０と、辞書サーバ２０からなる。コード生成サーバ１０により生成されたソースコード４０は、当該ソースコード４０を含むモジュールにより構成されるＷｅｂアプリケーションプログラムを実行してサービスを提供するアプリケーションサーバ３０に適用される。
【００２８】
コード生成サーバ１０は、アプリケーションサーバ３０上で業務データベースにアクセスするＣＲＵＤ型のＷｅｂアプリケーションプログラムについてのソースコード４０を自動生成する機能を有し、例えば、図示しないＯＳ（Operating System）やＤＢＭＳなどのミドルウェアに加え、ソフトウェアにより実装されるスキーマ取得部１１、マッピング生成部１２、およびコード生成部１３などの各部を有する。これら各部の他に例えば、ＧＵＩ作成機能やバージョン管理、ビルド等の開発機能を有してＩＤＥとして機能するような構成としてもよい。
【００２９】
スキーマ取得部１１は、例えば公知の技術により、アプリケーションサーバ３０上の業務データベース（ＤＢ）３３についてのスキーマ情報を読み込み、業務ＤＢ３３内の各テーブルのカラムの構成に係る情報を取得する。取得する情報には、例えば、各カラムの名称などの識別情報や、データタイプ、長さ等の属性値などが含まれる。
【００３０】
マッピング生成部１２は、スキーマ取得部１１が取得した各カラムの情報について、例えば、カラム名称などの識別情報と、対応する（すなわち、当該カラムに対応する入出力項目を画面上に表示する）パーツオブジェクト１５に設定するＩＤの情報との対応関係をマッピング情報として生成する。なお、当該マッピング情報の内容は、後述するコード生成部１３によりソースコード４０に出力される。
【００３１】
コード生成部１３は、スキーマ取得部１１が取得した各カラムの情報、およびマッピング生成部１２が生成したマッピング情報に基づいて、予め定義されているＣＲＵＤ型フレームワーク１４により、例えば、上述したＲｏＲなどのアプリケーションフレームワークなどの既存技術と同様に、業務ＤＢ３３に対する標準的なＣＲＵＤ型のＷｅｂアプリケーションプログラムを構築し、そのソースコード４０を生成して出力する。出力されたソースコード４０をアプリケーションサーバ３０に展開することで、業務ＤＢ３３にアクセスするＣＲＵＤ型のＷｅｂアプリケーションプログラムを稼働させることができる。
【００３２】
なお、本実施の形態において生成されるＣＲＵＤ型のＷｅｂアプリケーションでは、上述したように、業務ＤＢ３３の各カラムに対応する入出力項目に係る内容を画面に表示する際、ソースコード４０上では、標準的なコントロールを直接呼び出すのではなく、パーツオブジェクト１５を呼び出して間接的にコントロールを表示するものとする。
【００３３】
一方、辞書サーバ２０は、ソースコード４０上に配置された各パーツオブジェクト１５においてラベルコントロールに表示するテキスト、および入出力コントロールの属性値や制御処理に係る情報等を含む辞書データを、パーツオブジェクト１５のＩＤもしくは対応するデータベースのカラム名称等の識別情報と関連付けて保持する辞書テーブル２２を有し、これを管理する機能を有する。
【００３４】
辞書サーバ２０は、例えば、図示しないＯＳやＤＢＭＳなどのミドルウェアに加え、ソフトウェアにより実装される辞書登録部２１などを有する。辞書登録部２１は、辞書テーブル２２にエントリーを登録する機能を有する。キー（カラム名称）に対応する辞書データの内容やフォーマットは特に限定されない。本実施の形態では、簡易な手法として、例えば後述するように、画面を介して業務ＤＢ３３の対象のカラムへのデータの入出力処理を行うのに必要な種々のデータ（入出力を行うためのパーツオブジェクト１５の属性値や制御のために必要なパラメータ等）を所定の順序でカンマ区切り等により指定するものとする。
【００３５】
このようなデータとしては、例えば、対応するパーツオブジェクト１５においてラベルコントロールを表示する際の内容である表示名称や、入出力コントロールとして入力フィールドを表示する際の長さ（文字数）、妥当性チェックの種別やＩＭＥ（Input Method Editor：文字変換プログラム）のモードなどの制御処理の内容に係る指定、出力データをテーブルに一覧表示する際の短縮されたテキストである短縮表示名称および表示幅、ドロップダウンリスト等により表示する際の値リストなどが考えられる。
【００３６】
業務ＤＢ３３の各カラム名称をキーとして上記のような辞書データを辞書テーブル２２に登録する処理については、辞書登録部２１を介して開発者等が手動で行なってもよいし、後述するように、辞書登録部２１がソースコード４０上に保持されているマッピング情報と、辞書テーブル２２の現状の登録状況とを突合して未登録のカラムを判別し、これらについて辞書テーブル２２に追加登録するようにしてもよい。このとき、登録するカラムをユーザ（開発者等）に選択・指定させるようにしてもよい。
【００３７】
通常、アプリケーションプログラムでは複数の画面やソースコードが作成されるが、これらの画面やソースコード間で業務ＤＢ３３の同一のカラムに重複してアクセスする場合も多い。すなわち、同一のカラムについては、これを入出力項目として表示するパーツオブジェクト１５に指定するパラメータ等の情報は、辞書テーブル２２に一度辞書データとしてエントリーを登録しておけば、他の画面やソースコードでこれを再利用することができる。従って、同一の業務ＤＢ３３にアクセスする多数の画面やソースコード４０を開発する際の作業効率を向上させることができる。
【００３８】
辞書テーブル２２では、キーとして業務ＤＢ３３のカラム名称を用いているが、上述したように、ソースコード４０上に保持されているマッピング情報では、各カラムの名称などの識別情報と、対応する（すなわち、当該カラムに対応する入出力項目を画面上に表示する）パーツオブジェクト１５に設定するＩＤの情報との対応関係を保持している。これを利用することにより、ソースコード４０上において、各パーツオブジェクト１５は、実行時に生成するＨＴＭＬデータにおいて、対応するカラム名称をキー等の情報として直接指定する必要がなく、自身のＩＤをキー等の情報とすることができるため、実際のカラム名称をＨＴＭＬデータ上から隠蔽してセキュリティの強化を図ることが可能である。
【００３９】
すなわち、各パーツオブジェクト１５は、後述するように、まずソースコード４０上のマッピング情報を介して、ＨＴＭＬデータ上での自身のＩＤに対応するカラム名称を取得した後、当該カラム名称をキーとして辞書テーブル２２にアクセスして対応する辞書データを取得することになる。なお、ソースコード４０上のマッピング情報による上記のようなＩＤの変換を行わず、ＨＴＭＬデータ上で各パーツオブジェクト１５（によって表示されるコントロール）において対応する業務ＤＢ３３のカラム名称をキー等の情報として直接指定するようにしてもよい。
【００４０】
アプリケーションサーバ３０は、コード生成サーバ１０により生成されたソースコード４０を含むモジュールにより構成される、業務ＤＢ３３にアクセスするＣＲＵＤ型のＷｅｂアプリケーションプログラムを実行してサービスを提供するＷｅｂサーバである。アプリケーションサーバ３０は、例えば、図示しないＯＳやＤＢＭＳに加え、Ｗｅｂサーバプログラム３１などのミドルウェアを有する。また、ソフトウェアにより実装される辞書処理部３２などを有する。
【００４１】
辞書処理部３２は、辞書サーバ２０の辞書テーブル２２から、指定されたキー（本実施の形態では、画面上の対象の入出力項目（パーツオブジェクト１５）に対応する業務ＤＢ３３のカラム名称）に対する辞書データ（パーツオブジェクト１５がラベルコントロールに表示するテキストや、入出力コントロールの属性値や制御処理に係る情報等）を取得して出力する機能を有する。
【００４２】
これにより、Ｗｅｂサーバプログラム３１上でソースコード４０が呼び出されて実行される際、後述するように、ソースコード４０上に配置された各パーツオブジェクト１５は、ＨＴＭＬデータ上での自身のＩＤからソースコード４０上に保持されたマッピング情報に基づいて対応する業務ＤＢ３３のカラム名称を取得し、この値をキーとして、辞書処理部３２を介して辞書サーバ２０の辞書テーブル２２にアクセスして辞書データを取得する。この辞書データの内容に基づいて、ラベルコントロールや入出力コントロールを表示するＨＴＭＬデータを生成する。
【００４３】
なお、ソースコード４０上に配置されたパーツオブジェクト１５が、アプリケーションサーバ３０での実行時に辞書データを使用するか否か（辞書テーブル２２にアクセスするか否か）の情報をコード生成サーバ１０に設定できるようにしてもよい。コード生成部１３は、この設定内容に従ってソースコード４０を生成する。辞書データを使用しないように設定した場合は、パーツオブジェクト１５に対してソースコード４０上で直接指定されている内容や、パーツオブジェクト１５で予め定義されているデフォルト値を使用して、ラベルコントロールや入出力コントロールを表示する。これは、辞書データを使用するよう設定した状態で辞書テーブル２２に指定したキーに該当する辞書データが存在しなかった場合も同様である。
【００４４】
＜画面表示処理＞
図２は、生成されたソースコード４０に基づいてアプリケーションサーバ３０上で稼働するＣＲＵＤ型アプリケーションにおいてパーツオブジェクト１５により対応するカラムの入出力項目を画面上に表示する際の処理の例について概要を示した図である。図２の例では、業務ＤＢ３３からデータを読み出す際の検索条件を入力する画面において、“顧客名”を指定する入力フィールドを表示する場合の例を抜粋して示している。
【００４５】
図の上段に示しているＷｅｂアプリケーションプログラムのソースコード４０では、“顧客名”を指定する入力フィールドを表示するためにパーツオブジェクト１５を呼び出している。具体的には、まず、ソースコード４０上に保持されているマッピング情報（図２の例では、array()により対応関係を保持している）からＩＤ（“Ａ０１”）に対応するカラム名称（“customer_name”）の情報を取得する。
【００４６】
その後、例えば、パーツオブジェクト１５の機能を実装したクラスから各開発環境において継承したサブクラスについてインスタンスを作成する形で呼び出す（“CF_itemDic();”）。図２の例では、パラメータの一部として、呼び出す辞書テーブル２２のタイプ（“共通辞書”）、表示する入出力コントロールのタイプ（“入力フィールド”）、ＨＴＭＬのＩＤ属性値（“Ａ０１”）などを指定して呼び出した状態を簡略化して示している。なお、ＨＴＭＬのＩＤ属性値（“Ａ０１”）は、マッピング情報によりカラム名称（“customer_name”）に動的に変換される。
【００４７】
このようなコードにより呼び出されたパーツオブジェクト１５は、データとして、少なくとも表示名（ラベルコントロールのテキスト）と表示する入出力コントロールの内容に係る情報を含むデータを保持する。図２に示すように、さらに説明テキストなどの他の情報を保持していてもよい。図２の例では、パーツオブジェクト１５の上記の３つの情報のうち、コントロールについては、ソースコード４０において“入力フィールド”がパラメータとして指定されているため、これが設定される。
【００４８】
パーツオブジェクト１５は、さらに、所定の関数やメソッド等により辞書処理部３２を介して辞書サーバ２０上の対象の辞書テーブル２２（“共通辞書”）にアクセスして、カラム名称（“customer_name”）に対応する辞書データ（本実施の形態では“顧客名”、４０文字、２０文字、…などの複数の値の集合）を取得する。
【００４９】
図２の例では、辞書テーブル２２の辞書データとして、上から順に、名称（ラベルコントロールに表示するテキスト）、入力フィールドの場合の長さ（半角時の文字数）、入力フィールドの場合の最大長さ（文字数）、入力データの妥当性チェックのタイプ、ＩＭＥの初期モード、説明コメント、テーブルに一覧表示する場合のテキスト（表示名）、およびテーブルに一覧表示する場合の表示幅（ピクセル値）などの情報を保持するものとしている。なお、これらの辞書データを取得する際の出力フォーマットとしては、例えば、これらの値をカンマ等で区切った一連の文字列としてもよいし、連想配列等のアクセスしやすいデータとしてもよい。
【００５０】
辞書テーブル２２については、処理効率を考慮した場合、初期処理もしくは最初のアクセス時にメモリ上に辞書データの内容を展開するのが望ましい。この場合、全ての辞書データを展開するとメモリ使用量を圧迫したり、展開処理に時間を要したり等、却って処理効率が低下する場合がある。従って、実装上は、必要な時に必要な範囲の辞書データをメモリ上に展開できるようにするのが望ましい。
【００５１】
そこで、本実施の形態では、適用範囲が異なる複数の辞書テーブル２２からなる階層構造を有し、これらを適宜選択して使用する構成をとる。例えば、アプリケーション開発支援システム１により開発されたアプリケーション全体で共通の辞書（“共通辞書”）や、指定されたＷｅｂサイト内でのみ共通の辞書（“サイト辞書”）、サブシステム内でのみ共通の辞書（“ライブラリ辞書”）、画面単位での辞書（“コントローラ辞書”）などの、適用範囲が異なる複数種類の辞書テーブル２２を有するものとする。
【００５２】
この場合、例えば、“コントローラ辞書”などの適用範囲の狭い辞書を参照して該当する辞書データが得られなかった場合に、“ライブラリ辞書”→“サイト辞書”→“共通辞書”と順に上位の（適用範囲が広い）辞書テーブル２２に遡って参照できるようにしてもよい。また、辞書データが得られなかったとしてデフォルト値を用いるようにしたりエラーとしたりしてもよい。
【００５３】
パーツオブジェクト１５は、取得した辞書データから必要なデータを抽出して、コントロールを表示したり制御したりする際のパラメータとして設定する。例えば、入出力コントロールとして入力フィールドを表示する場合の属性値として、辞書データから取得したフィールドの長さを設定するとともに、妥当性チェックのタイプやＩＭＥの初期モードなどの値、説明テキストの内容などを設定する。なお、入力データの妥当性チェックや、ＩＭＥのモード設定などの入出力コントロールの制御に係る処理は、例えば、パーツオブジェクト１５の継承元のクラスにメソッドとして定義しておくなど、パーツオブジェクト１５が有する、もしくはパーツオブジェクト１５が呼び出すことができる機能として実装しておくものとする。
【００５４】
これにより、図２の下段の画面例に示すように、実行時に“顧客名”を指定するための入力フィールドのコントロールを表示するようパーツオブジェクト１５がＨＴＭＬデータ４１を生成することができる。このとき、例えば、パーツオブジェクト１５の説明テキストの情報を当該入出力項目についてのヘルプ情報等として用いることができる。
【００５５】
なお、入力フィールドを表示する場合、入力フィールドのコントロールだけを表示したのでは何を入力すべきかが不明であるため、本実施の形態では、図２に示すように、当該パーツオブジェクト１５に対応する入出力項目の表示名を表示するテキストコントロール（“顧客名”）を入力フィールドに隣接させてラベルとして表示する（ラベルコントロール）。当該テキストは、パーツオブジェクト１５の保持データにおける表示名の情報、すなわちパーツオブジェクト１５が辞書テーブル２２から取得した辞書データの名称の値（“顧客名”）を設定する。
【００５６】
このようなＨＴＭＬデータ４１の生成に係る処理は、例えば、パーツオブジェクト１５の継承元のクラスにメソッドとして定義しておくなど、パーツオブジェクト１５が有する、もしくはパーツオブジェクト１５が呼び出すことができる機能として実装しておくものとする。なお、ここでは、上述したように、表示するラベルコントロールや入出力コントロール、および説明テキストの３つの要素について、一括して整合性を持った形で外観等に係る属性値を調整するものとする。
【００５７】
このように、本実施の形態では、入出力項目をパーツオブジェクト１５により表示するＨＴＭＬデータ４１を生成することができる。従って、コード生成サーバ１０がＣＲＵＤ型アプリケーションを自動的に構成するには、例えば、スキーマ取得部１１によって取得した業務ＤＢ３３のカラムの構成情報に基づいて、コード生成部１３が、業務ＤＢ３３の各カラムに対応する入出力項目としてパーツオブジェクト１５を所定のルールに従って画面上に配置し、ＣＲＵＤ型フレームワーク１４として予め定義されている標準的な機能や動作の実装と組み合わせるようソースコード４０を生成することで実現することができる。
【００５８】
例えば、業務ＤＢ３３へのエントリーの登録（Ｃ：Create）を行うアプリケーションとしては、業務ＤＢ３３の各カラムに対して登録するデータを指定する入力フィールドを画面上に表示するためのパーツオブジェクト１５を、業務ＤＢ３３のカラムの並び順に従って配置するようソースコード４０を生成する。このとき、必要に応じて画面表示するコントロールのＩＤとカラムの名称との対応関係をマッピング情報として保持しておく。さらに、標準的な機能として業務ＤＢ３３へのエントリーの登録を実行するための“登録”ボタンや“キャンセル”ボタンなどを配置する。さらに、辞書テーブル２２に、各パーツオブジェクト１５についてコントロールを表示する際に用いる属性値や制御情報などの情報を辞書データとして保持しておく。このとき、各項目について特に指定がされない場合はそれぞれデフォルト値により設定する。
【００５９】
また、例えば、業務ＤＢ３３に対する検索（Ｒ：Read）を行うアプリケーションとしては、上記と同様に、業務ＤＢ３３を検索するための条件を指定する入力フィールドを画面上に表示するためのパーツオブジェクト１５を配置するようソースコード４０を作成する。このとき、業務ＤＢ３３の対象テーブルの全カラムについて検索条件として指定可能とすると過剰になることから、例えば、暫定的に先頭の５つのカラムについてだけ入力フィールドを表示するなどの簡略化を行ない、後から変更可能としてもよい。また、必要に応じて画面表示するコントロールのＩＤとカラムの名称との対応関係をマッピング情報として保持しておく。さらに、標準的な機能として業務ＤＢ３３のエントリーの検索を行うための“検索”ボタンなどを配置する。
【００６０】
また、例えば、検索条件を入力する領域の下部に、検索結果を表示するためのテーブル（表）コントロールを自動的に配置する。ここでは、例えば、テーブルコントロールのオブジェクトの項目定義配列に、業務ＤＢ３３の各カラムに対応するパーツオブジェクト１５の呼び出しに相当する内容を設定する。これにより、テーブルコントロールの各列に業務ＤＢ２３３各カラムの内容が表示されるよう、ＣＲＵＤ型フレームワーク１４もしくはパーツオブジェクト１５を実装することが可能である。
【００６１】
上述したように、業務ＤＢ３３のスキーマ情報から、所定のルールに従って、画面構成と標準的な機能の実装を含むＣＲＵＤ型のＷｅｂアプリケーションのソースコード４０を自動生成することが可能である。しかしながら、アプリケーションの実際の利用にあたっては、標準的な画面構成に対して変更や調整を加えたいという場合がある。例えば、入出力項目の一部を追加・削除・変更したり、入力フィールドのサイズ等の属性値を変更・調整したりといった要望が生じ得る。これに対し、本実施の形態では、いったん生成されたソースコード４０に対して変更を加えずに、もしくは加えるとしても簡易な変更のみにより、パーツオブジェクト１５により画面上に表示されるコントロールの外観や属性等について動的に変更することを可能とする。
【００６２】
図３は、パーツオブジェクト１５により表示されるコントロールの外観等について変更する際の処理の例について概要を示した図である。ここでは、図２の例に示したソースコード４０の内容は変更せずに、辞書テーブル２２の辞書データの内容のみに変更を加えている。具体的には、名称（“顧客名”→“お客様氏名”）、入力フィールドの場合の長さ（４０文字→６０文字）、入力フィールドの場合の最大長さ（２０文字→３０文字）、ＩＭＥの初期モード（“全角かな”→“全角カタカナ”）の内容を変更している。
【００６３】
これにより、当該Ｗｅｂアプリケーションの実行時に、パーツオブジェクト３２が辞書テーブル２２における当該エントリーの内容を参照し、その内容に応じて図３の下段の画面例に示すように表示名としてのラベルコントロールのテキストデータだけでなく、入出力コントロールの属性等（図３の例では入力フィールドの長さ（幅）、ＩＭＥのモード等）についても動的に変更することができる。
【００６４】
また、図４は、パーツオブジェクト１５により表示されるコントロールの外観等について変更する際の処理の別の例について概要を示した図である。ここでは、図２の例に示したソースコード４０の内容に簡易な変更を加えている。具体的には、パーツオブジェクト１５の呼び出しの際に、表示する入出力コントロールのタイプのパラメータを“入力フィールド”から“ドロップダウンリスト”に変更している。また、辞書テーブル２２には、辞書データの末尾にドロップダウンリストに設定される値リストの内容（“田中：１，山本：２，…”）を追加定義している。
【００６５】
これにより、当該Ｗｅｂアプリケーションの実行時に、パーツオブジェクト１５が、指定された種類の入出力コントロールにより入出力項目の表示内容を変更するようＨＭＴＬデータ４１を生成することができる。図４の例では、同一のパーツオブジェクト１５について、入出力コントロールを入力フィールドからドロップダウンリストに変更しているが、例えば、入出力コントロールのタイプのパラメータを“テキスト”と設定した場合は、パーツオブジェクト１５は、値をテキストとして表示する。ラベルコントロールと入出力コントロールのいずれか一方のみ表示することも可能である。また、パラメータを“隠す”と設定した場合は、内部的にデータは保持するものの、画面表示上には当該入出力項目についてはコントロールを何も表示しないようにする。
【００６６】
以上に説明したように、本発明の一実施の形態であるアプリケーション開発支援システム１によれば、コード生成サーバ１０において、アプリケーションサーバ３０上のアクセス対象の業務ＤＢ３３のスキーマ情報を読み込むことで、業務ＤＢ３３のカラムの構成に係る情報を取得し、その内容に基づいて、公知の技術により、予め定められた画面デザインや動作内容に従って業務ＤＢ３３に対する標準的なＣＲＵＤ型のＷｅｂアプリケーションプログラムのソースコード４０を自動生成する。このとき、画面上の入出力項目に係る内容を表示するために標準的なコントロールを直接使用するのではなく、パーツオブジェクト１５を使用して間接的に標準的なコントロールを表示するものとしてソースコード４０を生成する。
【００６７】
さらに、各パーツオブジェクト１５において実際にコントロールを表示する際の属性値や制御情報などのパラメータについて、一部を除き、ソースコード４０上で指定するのではなく、パーツオブジェクト１５のＩＤ等と関連付けられた辞書データとして辞書サーバ２０上の辞書テーブル２２に保持するよう構成する。これらにより、辞書テーブル２２の辞書データの内容を変更することで、いったん生成されたソースコード４０に対して変更を加えずに、もしくは加えるとしても簡易な変更のみにより、アプリケーションサーバ１０上での実行時に、パーツオブジェクト１５により画面上に表示されるコントロールの外観や属性等について動的に変更や調整を行いながら、アプリケーションを完成させていくというような開発手法をとることが可能となる。
【００６８】
また、辞書テーブル２２に業務ＤＢ３３の各カラムに対応するエントリーが登録され整備されることで、開発作業の効率を向上させることが可能となる。図５は、辞書テーブル２２にエントリーが登録されていく際のソースコード４０の生成について概要を示した図である。図中のソースコード４０ａを生成した際には、項目Ａ、Ｂ、Ｃの３つについてそれぞれ対応する表示名称のテキストを辞書テーブル２２に新たに登録したことを示している。その後、別の画面についてソースコード４０ｂを生成した場合、これに含まれる項目Ａ、Ｄ、Ｅについて辞書テーブル２２にエントリーを登録することになるが、項目Ａについては既に登録されているため、登録作業が不要となる。
【００６９】
同様に、さらに別の画面についてソースコード４０ｃを生成した場合、これに含まれる項目Ｂ、Ｃ、Ｄについては全て辞書テーブル２２に既に登録されている状態となるため、登録作業が不要となる。このような重複登録の排除は、上述したように、例えば、開発者が人手で判断してもよいし、辞書サーバ２０の辞書登録部２１が、ソースコード４０上のマッピング情報と辞書テーブル２２のエントリーとを突合して登録が必要な入出力項目を判別するようにしてもよい。このように、辞書テーブル２２の内容が整備されていくに従い、画面についてのソースコード４０を生成する都度、同じ入出力項目について重複してコントロールを表示するための属性値等を設定する必要がなくなり、開発効率が向上する。
【００７０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、本実施の形態では、標準的なＣＲＵＤ型のＷｅｂアプリケーションを対象にしたソースコードの自動生成を行うものとしているがこれに限らない。ユーザがパーツオブジェクト１５と辞書テーブルへ２２のアクセスを組み合わせた形で、ユーザインタフェースやビジネスロジックなどの動作内容も含めて構築した独自のアプリケーション（Ｗｅｂアプリケーションに限らず、クライアント／サーバ型やスタンドアロン型などであってもよい）に対して、同様の概念によりソースコードを自動生成するようにしてもよい。
【産業上の利用可能性】
【００７１】
本発明は、データベースに対するＣＲＵＤ型のアプリケーションプログラム等についてのソースコードを自動生成するアプリケーション開発支援システムおよびアプリケーション開発支援プログラムに利用可能である。
【符号の説明】
【００７２】
１…アプリケーション開発支援システム、
１０…コード生成サーバ、１１…スキーマ取得部、１２…マッピング生成部、１３…コード生成部、１４…ＣＲＵＤ型フレームワーク、１５…パーツオブジェクト、
２０…辞書サーバ、２１…辞書登録部、２２…辞書テーブル、
３０…アプリケーションサーバ、３１…Ｗｅｂサーバプログラム、３２…辞書処理部、
４０、４０a〜ｃ…ソースコード、４１、４１ａ〜ｃ…ＨＴＭＬデータ。
【図１】
0005727413.tif 000002
【図２】
0005727413.tif 000003
【図３】
0005727413.tif 000004
【図４】
0005727413.tif 000005
【図５】
0005727413.tif 000006