JP5727413B2 - アプリケーション開発支援システムおよびアプリケーション開発支援プログラム - Google Patents

アプリケーション開発支援システムおよびアプリケーション開発支援プログラム Download PDF

Info

Publication number
JP5727413B2
JP5727413B2 JP2012106928A JP2012106928A JP5727413B2 JP 5727413 B2 JP5727413 B2 JP 5727413B2 JP 2012106928 A JP2012106928 A JP 2012106928A JP 2012106928 A JP2012106928 A JP 2012106928A JP 5727413 B2 JP5727413 B2 JP 5727413B2
Authority
JP
Japan
Prior art keywords
input
dictionary
output
information
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012106928A
Other languages
English (en)
Other versions
JP2013235388A (ja
Inventor
聡一 大原
聡一 大原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nomura Research Institute Ltd
Original Assignee
Nomura Research Institute Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nomura Research Institute Ltd filed Critical Nomura Research Institute Ltd
Priority to JP2012106928A priority Critical patent/JP5727413B2/ja
Publication of JP2013235388A publication Critical patent/JP2013235388A/ja
Application granted granted Critical
Publication of JP5727413B2 publication Critical patent/JP5727413B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

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

Claims (7)

  1. アプリケーションサーバ上で稼働するWebアプリケーションプログラムのソースコードを生成するコード生成サーバを有するアプリケーション開発支援システムであって、
    さらに、前記Webアプリケーションプログラムの実行時に画面上に表示する1つ以上の入出力項目の識別情報をキーとして、前記入出力項目についてのラベルコントロールのテキストを示す表示名の情報と前記入出力項目を入力もしくは出力するために表示する入出力コントロールに係る情報とを少なくとも有するパーツオブジェクトについての1つ以上のパラメータの初期値からなる情報を辞書データとして保持する辞書テーブルを有する辞書サーバを有し、
    前記コード生成サーバは、前記各入出力項目について、これらをそれぞれ画面上に表示するための前記パーツオブジェクトを呼び出すことによって前記Webアプリケーションプログラムを構成し、構成した前記Webアプリケーションプログラムのソースコードを生成するコード生成部を有し、
    前記パーツオブジェクトは、前記アプリケーションサーバ上での前記Webアプリケーションプログラムの実行時に画面上に対応する入出力項目を表示するために呼び出された際、前記入出力項目の識別情報をキーとして、前記辞書サーバ上の前記辞書テーブルから前記パーツオブジェクトについての前記パラメータの一部または全部の情報を取得し、取得した前記パラメータに基づいて前記ラベルコントロールおよび/または前記入出力コントロールを表示するものであることを特徴とするアプリケーション開発支援システム。
  2. 請求項1に記載のアプリケーション開発支援システムにおいて、
    前記コード生成サーバは、さらに、前記アプリケーションサーバ上の前記Webアプリケーションプログラムがアクセスする業務データベースのスキーマ情報を読み込んで前記業務データベースの各カラムの識別情報を含む構成に係る情報を取得するスキーマ取得部と、
    前記パーツオブジェクトについての識別情報と、前記入出力項目の識別情報とのマッピングに係るマッピング情報を生成するマッピング生成部とを有し、
    前記マッピング生成部は、前記スキーマ取得部が取得した前記業務データベースの前記各カラムの識別情報を、前記辞書テーブルにおける前記入出力項目の識別情報として、前記マッピング情報を作成し、
    前記コード生成部は、前記マッピング情報を前記Webアプリケーションプログラムのソースコードに出力することを特徴とするアプリケーション開発支援システム。
  3. 請求項2に記載のアプリケーション開発支援システムにおいて、
    前記コード生成サーバの前記コード生成部は、CRUD型アプリケーションのフレームワークに基づいて、前記業務データベースについてのCRUD型アプリケーションを生成することを特徴とするアプリケーション開発支援システム。
  4. 請求項1〜3のいずれか1項に記載のアプリケーション開発支援システムにおいて、
    前記パーツオブジェクトは、前記アプリケーションサーバでの前記Webアプリケーションプログラムの実行時に、前記ラベルコントロールと、指定された種類の前記入出力コントロールとを組み合わせて表示し、もしくは前記ラベルコントロールおよび/または前記入出力コントロールを表示しないよう表示制御し、
    前記コード生成サーバの前記コード生成部は、前記Webアプリケーションプログラムのソースコードを生成する際に、前記パーツオブジェクトについて前記表示制御の内容を特定する所定の初期値を指定して呼び出すよう生成することを特徴とするアプリケーション開発支援システム。
  5. 請求項1〜4のいずれか1項に記載のアプリケーション開発支援システムにおいて、
    前記パーツオブジェクトは、表示する前記入出力コントロールに応じた制御処理を実装しており、
    前記辞書サーバの前記辞書テーブルは、前記辞書データにおいて、前記パーツオブジェクトについての前記パラメータとして、前記制御処理の内容を指定するための情報を登録可能であることを特徴とするアプリケーション開発支援システム。
  6. 請求項2に記載のアプリケーション開発支援システムにおいて、
    前記辞書サーバは、前記辞書テーブルにキーと辞書データからなるエントリーを登録する辞書登録部を有し、
    前記辞書登録部は、前記コード生成サーバの前記コード生成部により生成されたソースコード上の前記マッピング情報と、前記辞書テーブルに登録されているエントリーとに基づいて、前記辞書テーブルに登録が必要な前記入出力項目の識別情報を判別することを特徴とするアプリケーション開発支援システム。
  7. アプリケーションサーバ上で稼働するWebアプリケーションプログラムのソースコードを生成するコード生成サーバと、前記Webアプリケーションプログラムの実行時に画面上に表示する1つ以上の入出力項目の識別情報をキーとして、前記入出力項目についてのラベルコントロールのテキストを示す表示名の情報と前記入出力項目を入力もしくは出力するために表示する入出力コントロールに係る情報とを少なくとも有するパーツオブジェクトについての1つ以上のパラメータの初期値からなる情報を辞書データとして保持する辞書テーブルを有する辞書サーバとを有するアプリケーション開発支援システムにおける前記コード生成サーバとしてコンピュータを動作させるアプリケーション開発支援プログラムであって、
    前記各入出力項目について、これらをそれぞれ画面上に表示するための前記パーツオブジェクトを呼び出すことによって前記Webアプリケーションプログラムを構成し、構成した前記Webアプリケーションプログラムのソースコードを生成するコード生成処理を実行し、
    前記パーツオブジェクトは、前記アプリケーションサーバ上での前記Webアプリケーションプログラムの実行時に画面上に対応する入出力項目を表示するために呼び出された際、前記入出力項目の識別情報をキーとして、前記辞書サーバ上の前記辞書テーブルから前記パーツオブジェクトについての前記パラメータの一部または全部の情報を取得し、取得した前記パラメータに基づいて前記ラベルコントロールおよび/または前記入出力コントロールを表示するものであることを特徴とするアプリケーション開発支援プログラム。
JP2012106928A 2012-05-08 2012-05-08 アプリケーション開発支援システムおよびアプリケーション開発支援プログラム Active JP5727413B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012106928A JP5727413B2 (ja) 2012-05-08 2012-05-08 アプリケーション開発支援システムおよびアプリケーション開発支援プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012106928A JP5727413B2 (ja) 2012-05-08 2012-05-08 アプリケーション開発支援システムおよびアプリケーション開発支援プログラム

Publications (2)

Publication Number Publication Date
JP2013235388A JP2013235388A (ja) 2013-11-21
JP5727413B2 true JP5727413B2 (ja) 2015-06-03

Family

ID=49761473

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012106928A Active JP5727413B2 (ja) 2012-05-08 2012-05-08 アプリケーション開発支援システムおよびアプリケーション開発支援プログラム

Country Status (1)

Country Link
JP (1) JP5727413B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102352265B1 (ko) * 2021-12-08 2022-01-17 하승석 웹 애플리케이션 개발 플랫폼 제공 시스템 및 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015029193A1 (ja) * 2013-08-29 2015-03-05 株式会社野村総合研究所 Webサーバシステム、アプリケーション開発支援システム、Webサーバシステムにおける多言語対応方法、Webサーバシステムにおけるマルチデバイス対応方法、およびアプリケーション開発支援方法
JP6361770B2 (ja) * 2016-06-30 2018-07-25 キヤノンマーケティングジャパン株式会社 情報処理装置とその処理方法及びプログラム
JP6712059B2 (ja) * 2017-04-17 2020-06-17 キヤノンマーケティングジャパン株式会社 情報処理装置、情報処理装置の制御方法、およびコンピュータプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4136271B2 (ja) * 2000-05-16 2008-08-20 住友電気工業株式会社 アプリケーションサーバシステム
JP2004013802A (ja) * 2002-06-11 2004-01-15 Hitachi Software Eng Co Ltd 検索プログラム生成方法
JP4386243B2 (ja) * 2003-04-11 2009-12-16 キヤノンソフトウェア株式会社 プログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体
JP4849299B2 (ja) * 2005-05-24 2012-01-11 日鉄日立システムエンジニアリング株式会社 携帯端末用アプリケーション作成支援システム
JP2007280189A (ja) * 2006-04-10 2007-10-25 Toshiba Corp プログラム生成装置、プログラム生成方法、及びプログラム生成プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102352265B1 (ko) * 2021-12-08 2022-01-17 하승석 웹 애플리케이션 개발 플랫폼 제공 시스템 및 방법

Also Published As

Publication number Publication date
JP2013235388A (ja) 2013-11-21

Similar Documents

Publication Publication Date Title
WO2015029193A1 (ja) Webサーバシステム、アプリケーション開発支援システム、Webサーバシステムにおける多言語対応方法、Webサーバシステムにおけるマルチデバイス対応方法、およびアプリケーション開発支援方法
WO2014045826A1 (ja) Webサーバシステム、辞書システム、辞書呼び出し方法、画面コントロール表示方法、およびデモアプリケーション生成方法
US20060015839A1 (en) Development of software systems
KR101275871B1 (ko) SaaS 환경에서의 홈페이지 제작 시스템 및 방법, 그 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된, 컴퓨터로 판독 가능한 기록 매체
US11128721B2 (en) Action flow fragment management
US10277665B1 (en) Mechanism for webpage composition
JP5727413B2 (ja) アプリケーション開発支援システムおよびアプリケーション開発支援プログラム
US10732938B2 (en) System design apparatus and method
JP5766651B2 (ja) 多言語対応WebサーバシステムおよびWebサーバシステムにおける多言語対応方法
US11010021B2 (en) Context menu fragment management
JP6113983B2 (ja) 画面コントロール表示システムおよび画面コントロール表示プログラム
JP5917350B2 (ja) 辞書システムおよび辞書呼び出し方法
JP6231260B2 (ja) 画面制御システム、画面制御プログラム、画面作成支援プログラム及び画面制御方法
JP2014059699A (ja) デモアプリケーション生成システムおよびデモアプリケーション生成プログラム
JP5658196B2 (ja) マルチデバイス対応WebサーバシステムおよびWebサーバシステムにおけるマルチデバイス対応方法
US11113359B1 (en) Method and system for navigation control
JP5962116B2 (ja) 画面制御システム、画面制御プログラム、画面作成支援プログラム及び画面制御方法
US20210397419A1 (en) Application screen display program installing method
Schneiker et al. Declarative Web Programming with Prolog and XUL
KR20130040167A (ko) SaaS 환경에서의 홈페이지 제작 시스템, 그 시스템의 기능을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된, 컴퓨터로 판독 가능한 기록 매체
Motti et al. Automatic Evaluation of Accessibility in RIA
JP2011248631A (ja) 情報処理装置、設定ファイル生成方法、および設定ファイル生成プログラム
Mabbutt et al. Ajax and Web Services
JP2019114210A (ja) 情報処理装置、その処理方法及びプログラム
JP2018120486A (ja) データベースシステム及びデータベース操作用プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150223

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150310

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150402

R150 Certificate of patent or registration of utility model

Ref document number: 5727413

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250