(57)【要約】【課題】プログラムを自動生成する際に、当該生成されるプログラムの利用者の入力を補助するための入力補助プログラムを生成することを可能とする。【解決手段】テーブル情報取得部３２は、テーブルに保持されるデータの種類を含むテーブル情報を、前記データベースに格納されている当該テーブルから取得する。データ項目仕様生成部３３は、テーブル情報取得部３２によって取得されたテーブル情報に基づいて、当該テーブル情報に含まれるデータの種類及びテーブルに保持されるデータの範囲を含むテーブル構造定義情報を生成し、テーブル構造定義情報格納部２２に格納する。入力チェックルール生成部３５は、テーブル構造定義情報に含まれるデータの範囲を、当該テーブル構造定義情報に含まれるデータの種類に対応付けられているテンプレートに当てはめることによって入力補助プログラムを生成する。【選択図】      図２
2010108055.tif 000002
【特許請求の範囲】
【請求項１】
データベースに格納されているデータを保持するテーブルに対して処理を行うためのプログラムを利用する利用者のデータ入力を補助するための入力補助プログラムの生成に用いられるテンプレートを当該テーブルに保持されるデータの種類に対応付けて予め格納するテンプレート格納手段とテーブル構造定義情報格納手段とを有する外部記憶装置と、当該外部記憶装置を利用するコンピュータとから構成されるプログラム生成装置において、前記コンピュータによって実行されるプログラム生成用プログラムであって、
前記コンピュータに、
前記データベースに格納されているテーブルの構造を示すテーブル情報であって、当該テーブルに保持されるデータの種類を含むテーブル情報を、前記データベースに格納されている当該テーブルから取得するステップと、
前記取得されたテーブル情報によって示されるテーブルの構造に基づいて、当該テーブル情報に含まれるデータの種類及び当該テーブルに保持されるデータの範囲を含むテーブル構造定義情報を生成するステップと、
前記生成されたテーブル構造定義情報を前記テーブル構造定義情報格納手段に格納するステップと、
前記テーブル構造定義情報格納手段に格納されたテーブル構造定義情報に含まれるデータの範囲を、当該テーブル構造定義情報に含まれるデータの種類に対応付けて前記テンプレート格納手段に格納されているテンプレートに当てはめることによって前記入力補助プログラムを生成するステップと
を実行させるためのプログラム生成用プログラム。
【請求項２】
前記コンピュータに、前記テーブル構造定義情報格納手段に格納されたテーブル構造定義情報に基づいて、前記データベースに格納されているテーブルに対して処理を行うプログラムを生成するステップを更に実行させることを特徴とする請求項１記載のプログラム生成用プログラム。
【請求項３】
前記生成された入力補助プログラムは、前記テンプレートに当てはめられた前記テーブル構造定義情報に含まれるデータの範囲外のデータ入力がされた場合に、当該データ入力をエラーとする処理を行うための入力チェックルールのプログラムであることを特徴とする請求項１記載のプログラム生成用プログラム。
【請求項４】
データベースに格納されているデータを保持するテーブルに対して処理を行うためのプログラムを利用する利用者のデータ入力を補助するための入力補助プログラムの生成に用いられるテンプレートを当該テーブルに保持されるデータの種類に対応付けて予め格納するテンプレート格納手段とテーブル構造定義情報格納手段とを有する外部記憶装置と、当該外部記憶装置を利用するコンピュータとから構成されるプログラム生成装置において、前記コンピュータによって実行されるプログラム生成用プログラムであって、
前記コンピュータに、
前記データベースに格納されているテーブルの構造を示すテーブル情報であって、当該テーブルに保持されるデータの種類を含むテーブル情報及び当該テーブルに保持されているデータを、前記データベースに格納されている当該テーブルから取得するステップと、
前記取得されたデータを解析するステップと、
前記取得されたテーブル情報によって示されるテーブルの構造及び前記解析結果に基づいて、当該テーブル情報に含まれるデータの種類及び当該テーブルに保持されるデータの範囲及び前記解析結果を含むテーブル構造定義情報を生成するステップと、
前記テーブル構造定義情報格納手段に格納されたテーブル構造定義情報に含まれるデータの範囲を、当該テーブル構造定義情報に含まれるデータの種類に対応付けて前記テンプレート格納手段に格納されているテンプレートに当てはめることによって第１の入力補助プログラムを生成するステップと、
前記利用者のデータ入力の際に当該利用者にデータを選択入力させる画面を表示させるための第２の入力補助プログラムを、前記テーブル構造定義情報格納手段に格納されたテーブル構造定義情報に含まれる解析結果に基づいて生成するステップと
を実行させるためのプログラム生成用プログラム。
【請求項５】
データを保持するテーブルを格納するデータベースと接続されているプログラム生成装置において、
前記データベースに格納されているテーブルに対して処理を行うためのプログラムを利用する利用者のデータ入力を補助するための入力補助プログラムの生成に用いられるテンプレートを当該テーブルに保持されるデータの種類に対応付けて予め格納するテンプレート格納手段と、
前記データベースに格納されているテーブルの構造を示すテーブル情報であって、当該テーブルに保持されるデータの種類を含むテーブル情報を、前記データベースに格納されている当該テーブルから取得するテーブル情報取得手段と、
前記取得されたテーブル情報によって示されるテーブルの構造に基づいて、当該テーブル情報に含まれるデータの種類及び当該テーブルに保持されるデータの範囲を含むテーブル構造定義情報を生成するデータ項目仕様生成手段と、
前記生成されたテーブル構造定義情報を格納するテーブル構造定義情報格納手段と、
前記テーブル構造定義情報格納手段に格納されたテーブル構造定義情報に含まれるデータの範囲を、当該テーブル構造定義情報に含まれるデータの種類に対応付けて前記テンプレート格納手段に格納されているテンプレートに当てはめることによって前記入力補助プログラムを生成する入力チェックルール生成手段と
を具備することを特徴とするプログラム生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに対して処理を行うためのプログラムを自動的に生成するプログラム生成用プログラム及びこのプログラムが動作するプログラム生成装置に関する。
【背景技術】
【０００２】
近年、例えばデータベースに対するデータの生成、読み取り、更新または削除等の処理を行うためのプログラム（アプリケーション）を自動生成する装置（以下、プログラム生成装置と表記）が開発されている。
【０００３】
上記したようにプログラムを自動生成する技術として、例えばデータベースに接続し、既存のテーブル情報を利用してプログラムを生成することができる技術が知られている。
【０００４】
例えばデータベース操作を行うアプリケーション開発において、データベースアクセス部分のプログラムを作成の自動化に関する技術（以下、第１の先行技術と表記）が開示されている（例えば、特許文献１を参照）。この第１の先行技術によれば、データベース操作の種類である新規（生成）・更新・削除・読み取りの各機能毎に条件を付与し、総合的にデータを処理することが可能となる。この第１の先行技術においては、データベースファイルを読み込み、データベースにアクセスするプログラムが自動生成される。
【０００５】
また、例えば指定情報に基づいてプログラムのソースコードを生成する技術（以下、第２の先行技術と表記）が開示されている（例えば、特許文献２を参照）。この第２の先行技術によれば、アプリケーションプログラムの開発者に対しては、プルダウンリストを桁毎に分割する、分割しないを自動判別し、長い選択リストを作らずに短い選択リストから数値を選択入力できる機能が提供されている。そして、プルダウンリストから目的の数値を容易に選択入力可能なプログラムを、プルダウンリスト長や画面状況を考慮せず、簡便な定義情報のみで生成することができる仕組みも提供されている。また、アプリケーションプログラムの使用者に対しては、プルダウンリストを桁毎に分割する、分割しないが自動判別され、短い選択リストから目的の数値を容易に選択する仕組みを提供することが可能となる機能が提供されている。つまり、この第２の先行技術によれば、プログラムを自動生成する際に、生成されたプログラムの利用者（使用者）がプルダウンリストから目的として数値を容易に選択できるような入力画面（を表示するためのプログラム）を生成することができる。
【特許文献１】特開平１１−５３３９１号公報
【特許文献２】特開２００８−５２３８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記したプログラム生成装置では、例えば動作するプログラムを生成するためには詳細な物理仕様の入力が必要である。また、物理仕様の入力がない場合は一部のプログラムしか自動生成することができない。
【０００７】
また、例えば生成されたプログラムの利用者が入力画面からデータを入力する際に、当該入力されるデータがテーブルの定義に起因する制約条件を満たすか否かのチェックや、既存のデータに基づいて入力補助等を行うためには、そのためのプログラムを別に作成して処理を追加する必要がある。
【０００８】
更に、データベースのテーブル構造の定義により、各項目への入力可能なデータの範囲または値には制約が生じるが、プログラム（アプリケーション）の運用上の制約はデータベースのテーブル構造定義による制約だけでは不十分である。このため、入力補助を行うプログラムを別途作成して処理を追加する必要がある。
【０００９】
上記したように第１の先行技術においては、データベース操作の種類である新規・更新・削除・読み取りの各機能毎に条件を付与し総合的にデータを処理することが可能となる。しかしながら、第１の先行技術においては、各機能（新規・更新・削除・読み取り）のいずれの処理を生成するかは予め指定する必要がある。また、第１の先行技術においては、生成されたプログラムの利用者による入力データの条件も関数毎に指定する必要がある。このように関数毎に指定する必要があると、「入力データの条件を変える」などの保守の際に、変更する関数にそれぞれ変更を加える必要があるため、保守性が悪くなるという弊害も出てくる。
【００１０】
また、上記したように第２の先行技術においては、生成されたプログラムの利用者がプルダウンリストから目的として数値を容易に選択できる入力画面を生成することができる。つまり、第２の先行技術においては、上記した入力補助を行うことが可能である。しかしながら、第２の先行技術では、プルダウンリストの項目の数値間隔のような利用者の入力補助（支援）処理生成のための条件は予め指定しておく必要がある。
【００１１】
そこで、本発明の目的は、プログラムを自動生成する際に、当該生成されるプログラムの利用者の入力を補助するための入力補助プログラムを生成することが可能なプログラム生成用プログラム及びプログラム生成装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の１つの態様によれば、データベースに格納されているデータを保持するテーブルに対して処理を行うためのプログラムを利用する利用者のデータ入力を補助するための入力補助プログラムの生成に用いられるテンプレートを当該テーブルに保持されるデータの種類に対応付けて予め格納するテンプレート格納手段とテーブル構造定義情報格納手段とを有する外部記憶装置と、当該外部記憶装置を利用するコンピュータとから構成されるプログラム生成装置において、前記コンピュータによって実行されるプログラム生成用プログラムであって、前記コンピュータに、前記データベースに格納されているテーブルの構造を示すテーブル情報であって、当該テーブルに保持されるデータの種類を含むテーブル情報を前記データベースに格納されている当該テーブルから取得するステップと、前記取得されたテーブル情報によって示されるテーブルの構造に基づいて、当該テーブル情報に含まれるデータの種類及び当該テーブルに保持されるデータの範囲を含むテーブル構造定義情報を生成するステップと、前記生成されたテーブル構造定義情報を前記テーブル構造定義情報格納手段に格納するステップと、前記テーブル構造定義情報格納手段に格納されたテーブル構造定義情報に含まれるデータの範囲を、当該テーブル構造定義情報に含まれるデータの種類に対応付けて前記テンプレート格納手段に格納されているテンプレートに当てはめることによって前記入力補助プログラムを生成するステップとを実行させるためのプログラム生成用プログラムが提供される。
【発明の効果】
【００１３】
本発明によれば、プログラムを自動生成する際に、当該生成されるプログラムの利用者の入力を補助するための入力補助プログラムを生成することを可能とする。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して、本発明の各実施形態について説明する。
【００１５】
［第１の実施形態］
まず、図１及び図２を参照して、本発明の第１の実施形態について説明する。図１は、本実施形態に係るプログラム生成装置のハードウェア構成を示すブロック図である。図１に示すように、コンピュータ１０は、例えばハードディスクドライブ（ＨＤＤ：Hard Disk Drive）のような外部記憶装置２０と接続されている。この外部記憶装置２０は、コンピュータ１０によって実行されるプログラム２１を格納する。コンピュータ１０及び外部記憶装置２０は、プログラム生成装置３０を構成する。
【００１６】
図２は、図１に示すプログラム生成装置３０の主として機能構成を示すブロック図である。プログラム生成装置３０は、例えば各種データを保持するテーブルを例えばスキーマ名毎に格納するデータベース４０と接続されている。
【００１７】
図２に示すように、プログラム生成装置３０は、全体制御部３１、テーブル情報取得部３２、データ項目仕様生成部３３、プログラム生成部３４及び入力チェックルール生成部３５を含む。本実施形態において、これらの各部３１乃至３５は、図１に示すコンピュータ１０が外部記憶装置２０に格納されているプログラム（プログラム生成用プログラム）２１を実行することにより実現されるものとする。このプログラム２１は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム２１が例えばネットワークを介してコンピュータ１０にダウンロードされても構わない。
【００１８】
また、プログラム生成装置３０は、テーブル構造定義情報格納部２２及び入力チェックルールテンプレート格納部２３を有する。本実施形態において、テーブル構造定義情報格納部２２及び入力チェックルールテンプレート格納部２３は、例えば外部記憶装置２０に格納される。
【００１９】
全体制御部３１は、例えばプログラム生成装置３０のユーザ（以下、管理者と表記）の操作に応じて、データベース接続情報を入力する。このデータベース接続情報は、例えばＵＲＩ（Uniform Resource Identifier）を含む。
【００２０】
全体制御部３１は、テーブル情報取得部３２に作用し、管理者の操作（指示）に応じてデータベース４０からテーブル情報を取得するように指示する。また、全体制御部３１は、プログラム生成部３４に作用し、管理者の操作に応じてデータベース４０に対して一連のＣＲＵＤ処理（生成・読み取り・更新・削除）を行うためのプログラム（以下、本体プログラムと表記）を生成するように指示する。
【００２１】
テーブル情報取得部３２は、全体制御部３１からの指示に応じて、データベース４０に格納されているテーブルのテーブル名を取得する。この取得されたテーブル名は、例えば管理者に対して表示される。
【００２２】
また、テーブル情報取得部３２は、管理者によって指定（選択）されたテーブルの構造を示すテーブル情報を、データベース４０に格納されている当該テーブルから取得する。このテーブル情報には、例えばテーブル名、テーブルに保持されるデータの種類（型）及び当該データの制約等が含まれる。この型には、例えばVARCHAR2型（文字データ）、NUMBER型（数値データ）またはTIMESTAMP型（日付データ）等が含まれる。また、データの制約には、例えばデータの文字数または桁数等が含まれる。
【００２３】
データ項目仕様生成部３３は、テーブル情報取得部３２によって取得されたテーブル情報によって示されるテーブルの構造に基づいて、当該テーブルに保持されるデータの範囲を含むテーブル構造定義情報を生成する。このテーブル構造定義情報は、テーブル情報取得部３２によって取得されたテーブル情報に、当該テーブル情報によって示されるテーブルの構造において当該テーブルに保持されるデータの範囲が追加されたものである。このデータの範囲は、テーブル情報取得部３２によって取得されたテーブル情報に含まれるテーブルに保持されるデータの制約等に基づいて定められる。
【００２４】
データ項目仕様生成部３３は、生成されたテーブル構造定義情報をテーブル構造定義情報格納部２２に格納する。
【００２５】
プログラム生成部３４は、全体制御部３１の指示に応じて、上記した本体プログラムを生成する処理を実行する。プログラム生成部３４は、テーブル構造定義情報格納部２２に格納されたテーブル構造定義情報に基づいて本体プログラムを生成する。この本体プログラムは、例えばＷｅｂアプリケーションのプログラムである。
【００２６】
このプログラム生成部３４によって生成されたプログラム（本体プログラム）は、例えば当該プログラムを利用するユーザ（以下、利用者と表記）の端末等において用いられる（実行される）。
【００２７】
入力チェックルールテンプレート格納部２３には、プログラム生成部３４によって生成される本体プログラムを利用する利用者のデータ入力を補助するためのプログラム（以下、入力補助プログラムと表記）の生成に用いられるテンプレートが予め格納される。このテンプレートは、例えばＸＭＬ（eXtensible Markup Language）形式で、データベース４０に格納されているテーブルに保持されるデータの種類（つまり、型）毎に対応付けて入力チェックルールテンプレート格納部２３に格納されている。
【００２８】
入力チェックルール生成部３５は、テーブル構造定義情報格納部２２に格納されたテーブル構造定義情報に含まれるデータの範囲を、入力チェックルールテンプレート格納部２３に格納されているテンプレートに当てはめることによって入力補助プログラムを生成する。入力チェックルール生成部３５は、テーブル構造定義情報格納部２２に格納されたテーブル構造定義情報に含まれるデータの範囲外のデータ入力がされた場合に、当該データ入力をエラーとする処理と行うための入力チェックルール（入力補助ルール）のプログラム（以下、入力チェックルールプログラムと表記）を入力補助プログラムとして生成する。
【００２９】
プログラム生成装置３０は、上記したプログラム生成部３４によって生成された本体プログラム及び入力チェックルール生成部３５によって生成された入力チェックルールプログラム（入力補助プログラム）のセットを利用者に提供する。入力チェックルールプログラムは、例えば利用者によって用いられる端末等において本体プログラムに組み込まれる。これにより、利用者は、入力チェック機能が含まれるプログラムを利用することができる。
【００３０】
図３は、図２に示すテーブル情報取得部３２によって取得されるテーブル情報のデータ構造の一例を示す。
【００３１】
図３に示すように、テーブル情報には、テーブル名、カラム名、型、カラム属性及び当該カラム属性の値（カラム属性値）が対応付けて含まれている。カラム属性及びカラム属性値は、テーブルに保持されるデータの制約（例えば桁数等）を示す。
【００３２】
図３に示す例では、テーブル情報には、テーブル名「emp」に対応付けてカラム名「empNo」、「salary」及び「hiredate」が含まれている。また、テーブル情報には、カラム名「empNo」に対応付けて型「VARCHAR2（文字データ型）」が含まれている。更に、テーブル情報には、カラム名「salary」に対応付けて型「NUMBER（数値データ型）」、カラム名「hiredate」に対応付けて型「TIMESTAMP（日付データ型）」が含まれている。
【００３３】
テーブル情報には、型「VARCHAR2」に対応付けてカラム属性「桁（文字数）」及びカラム属性値「ｘ＝２００」が含まれている。これによれば、カラム名が「empNo」であり、型が「VARCHAR2」であるカラムのデータは、桁が「２００（以下）」の文字データであることが示されている。
【００３４】
テーブル情報には、型「NUMBER」に対応付けてカラム属性「桁」及びカラム属性値「ｙ＝５」が含まれている。同様に、テーブル情報には、型「NUMBER」に対応付けてカラム属性「位取」及びカラム属性値「ｚ＝０」が含まれている。これによれば、カラム名が「salary」であり、型が「NUMBER」であるカラムのデータは、桁が「５（以下）」で、位取が「０」の数値データであることが示されている。
【００３５】
図４は、図２に示すテーブル構造定義情報格納部２２に格納されるテーブル構造定義情報のデータ構造の一例を示す。図４に示すテーブル構造定義情報は、上記した図３に示すテーブル情報によって示されるテーブルの構造に基づいてデータ項目仕様生成部３３によって生成されたテーブル構造定義情報であるものとする。
【００３６】
図４に示すように、テーブル構造定義情報には、上記した図３に示すテーブル情報と比較して、型「VARCHAR2」に対応付けてカラム属性「最小文字長」及び「最大文字長」が追加されている。テーブル構造定義情報には、カラム属性「最小文字長」に対応付けてカラム属性値「０」が追加されている。また、テーブル構造定義情報には、カラム属性「最大文字長」に対応付けてカラム属性値「２００」が追加されている。この「最小文字長」に対応付けられている「０」から「最大文字長」に対応付けられている「２００」までが、カラム名が「empNo」であり、型が「VARCHAR2（文字データ型）」であるカラムにおけるデータの範囲（文字数）である。
【００３７】
このカラム属性「最小文字長」及びカラム属性値「０」、カラム属性「最大文字長」及びカラム属性値「２００」は、型「VARCHAR2」に対応付けて図３に示すテーブル情報に含まれるカラム属性「桁」及びカラム属性値「ｘ＝２００」に基づいて定められる。
【００３８】
また、テーブル構造定義情報には、上記した図３に示すテーブル情報と比較して、型「」に対応付けてカラム属性「最小値」及び「最大値」が追加されている。テーブル構造定義情報には、カラム属性「最小値」に対応付けてカラム属性値「−９９９９９」が追加されている。また、テーブル構造定義情報には、カラム属性「最大値」に対応付けてカラム属性値「９９９９９」が追加されている。この「最小値」に対応付けられている「−９９９９９」から「最大値」に対応付けられている「９９９９９」が、カラム名が「salary」であり、型が「NUMBER（数値データ型）」であるカラムにおけるデータの範囲（数値の範囲）である。
【００３９】
このカラム属性「最小値」及びカラム属性値「−９９９９９」、カラム属性「最大値」及びカラム属性値「９９９９９」は、型「NUMBER」に対応付けて図３に示すテーブル情報に含まれるカラム属性「桁」及びカラム属性値「ｙ＝５」とカラム属性「位取」及びカラム属性値「ｚ＝０」とに基づいて定められる。
【００４０】
このように、図３に示すテーブル情報によって示されるテーブルの構造（ここでは、カラム属性「桁」及びカラム属性値「ｘ＝２００」、カラム属性「桁」及びカラム属性値「ｙ＝５」、カラム属性「位取」及びカラム属性値「ｚ＝０」）に基づいて定められた、カラム属性「最小文字長」及び当該カラム属性に対応付けられたカラム属性値「０」、カラム属性「最大文字長」及び当該カラム属性に対応付けられたカラム属性値「２００」、カラム属性「最小値」及び当該カラム属性に対応付けられたカラム属性値「−９９９９９」、カラム属性「最大値」及び当該カラム属性に対応付けられたカラム属性値「９９９９９」が当該テーブル情報に追加されることによって、図４に示すテーブル構造定義情報が生成される。
【００４１】
次に、本実施形態に係るプログラム生成装置３０の処理手順について説明する。プログラム生成装置３０の処理は、テーブル構造定義情報を生成する処理と本体プログラム及び入力補助プログラムを生成する処理（以下、単にプログラムを生成する処理と表記）とに分けられる。以下、これらの各処理について説明する。
【００４２】
まず、図５のフローチャートを参照して、本実施形態に係るプログラム生成装置３０におけるテーブル構造定義情報を生成する処理の処理手順について説明する。
【００４３】
テーブル構造定義情報を生成する処理が実行される際には、データベース４０に対してアクセスするための最小限の初期情報を指定させるための画面（入力画面）がプログラム生成装置３０の管理者に対して表示される。この画面は、プログラム生成装置３０に備えられている表示部（図示せず）を介して表示される。以下、管理者に対して表示される画面については同様である。
【００４４】
管理者は、この画面を介して例えばＵＲＩを含むデータベース接続情報を指定することができる。つまり、管理者は、例えばＵＲＩを指定することによって、データベース４０を指定することができる。データベース接続情報が指定されると、管理者は、画面上に表示された例えば「テーブル構造定義情報の生成」または「テーブル情報を取得」メニューを選択（押下）することにより、テーブル構造定義情報の生成を指示する。
【００４５】
プログラム生成装置３０に含まれる全体制御部３１は、上記したような管理者の操作に応じて、データベース接続情報を入力する（ステップＳ１）。全体制御部３１は、管理者からのテーブル構造定義情報の生成の指示に応じて、データ項目仕様生成部３３を起動する。このとき、全体制御部３１は、入力されたデータベース接続情報をデータ項目仕様生成部３３に渡す。
【００４６】
データ項目仕様生成部３３は、全体制御部３１から渡されたデータベース４０に対するデータベース接続情報を検証する（ステップＳ２）。データ項目仕様生成部３３は、データベース接続情報（ＵＲＩ）が正しいか否かを検証する。データ項目仕様生成部３３は、検証の結果、データベース接続情報が正しい場合には、テーブル情報取得部３２を起動する。このとき、データ項目仕様生成部３３は、データベース接続情報をテーブル情報取得部３２に渡す。
【００４７】
なお、検証の結果、データベース接続情報が正しくない場合には、その旨が管理者に対して返される（表示される）。
【００４８】
次に、データ情報取得部３２は、データ項目仕様生成部３３から渡されたデータベース接続情報をもとに、データベース４０に接続する。
【００４９】
データ情報取得部３２は、予め設定（初期設定）されているスキーマ名（デフォルトのスキーマ名）を取得する（ステップＳ３）。データ情報取得部３２は、データベース４０からデフォルトのスキーマ名を取得する。
【００５０】
データ情報取得部３２は、取得されたスキーマ名に対応するテーブルのテーブル名をデータベース４０から取得する（ステップＳ４）。
【００５１】
データ情報取得部３２によって取得されたスキーマ名及びテーブル名は、管理者に対して表示される（ステップＳ５）。
【００５２】
ここで、図６は、データ情報取得部３２によって取得されたスキーマ名及びテーブル名が表示される画面（以下、テーブル選択画面と表記）の一例を示す。
【００５３】
図６に示すテーブル選択画面１００には、スキーマ名表示欄１０１、テーブル名表示欄１０２、選択テーブル名表示欄１０３、インポートボタン１０４及びキャンセルボタン１０５が設けられている。
【００５４】
スキーマ名表示欄１０１には、データ情報取得部３２によって取得されたスキーマ名（ここでは、デフォルトのスキーマ名）が表示される。図６に示す例では、スキーマ名表示欄１０１には、デフォルトのスキーマ名として「SCOTT」が表示されている。なお、管理者は、例えばプログラム生成装置３０を操作することによって、スキーマ名表示欄１０１に表示されているスキーマ名を変更することができる。
【００５５】
テーブル名表示欄１０２には、データ情報取得部３２によって取得されたテーブル名（スキーマ名表示欄１０１に表示されているスキーマ名に対応するテーブル名）が表示される。図６に示す例では、テーブル名表示欄１０２には、テーブル名として「ACCOUNT」、「APPCLASS」、「APPINSTANCE」及び「APPLOG」等の複数のテーブル名が表示されている。
【００５６】
管理者は、プログラム生成装置３０を操作することによって、テーブル名表示欄１０２に表示されている複数のテーブル名の中からテーブル情報を取得するテーブル（名）を選択することができる。つまり、管理者は、テーブル構造定義情報の生成の対象となるテーブルを指定することができる。
【００５７】
この場合、管理者は、テーブル名表示欄１０２に表示されているテーブル名を選択テーブル名表示欄１０３に移動させ、インポートボタン１０４を押下（指定）することでテーブルを選択することができる。
【００５８】
なお、例えばテーブル名表示欄１０２に表示されているテーブル名を選択テーブル名表示欄１０３に移動させた後、当該テーブルの選択をキャンセルしたい場合には、キャンセルボタン１０５を押下することで、当該テーブルの選択をキャンセルすることができる。
【００５９】
再び、図５のフローチャートに戻ると、テーブル情報取得部３２によって取得されたスキーマ名及びテーブル名が表示された後、上記したような管理者の操作によってデフォルトのスキーマ名（スキーマ名表示欄１０１に表示されているスキーマ名）が変更されたか否かが判定される（ステップＳ６）。
【００６０】
スキーマ名が変更されたと判定された場合（ステップＳ６のＹＥＳ）、ステップＳ４に戻って処理が繰り返される。つまり、スキーマ名が変更された場合には、テーブル情報取得部３２は、変更後のスキーマ名に対応するテーブルのテーブル名をデータベース４０から取得する。この後、変更後のスキーマ名及びテーブル情報取得部３２によって取得されたテーブル名（変更後のスキーマ名に対応するテーブル名）が図６に示すようなテーブル選択画面１００において表示される。この場合、このテーブル選択画面１００において、上記したように管理者によってテーブル名が選択される。
【００６１】
一方、スキーマ名が変更されていないと判定された場合（ステップＳ６のＮＯ）、テーブル情報取得部３２は、管理者によって選択（指定）されたテーブルの構造を示すテーブル情報を、データベース４０に格納されている当該テーブルから取得する（ステップＳ７）。テーブル情報取得部３２は、取得されたテーブル情報をデータ項目仕様生成部３３に渡す。テーブル情報がデータ項目仕様生成部３３に渡されると、テーブル情報取得部３２の処理は終了される。
【００６２】
次に、データ項目仕様生成部３３は、テーブル情報取得部３２から渡されたテーブル情報に基づいて、テーブル情報によって示されるテーブルの構造において当該テーブルに保持されるデータ（当該テーブルにおけるカラムのデータ）の範囲を追加することによりテーブル構造定義情報を生成する（ステップＳ８）。具体的には、データ項目仕様生成部３３は、上記した図３に示すテーブル情報に基づいて、上記した図４に示すテーブル構造定義情報を生成する。
【００６３】
データ項目仕様生成部３３は、生成されたテーブル構造定義情報をテーブル構造定義情報格納部２２に書き込む（ステップＳ９）。このテーブル構造定義情報は、例えばスプレッドシートに保持される。テーブル構造定義情報がテーブル構造定義情報格納部２２に書き込まれると、データ項目仕様生成部３３の処理は終了される。
【００６４】
データ項目仕様生成部３３の処理が終了されると、テーブル構造定義情報を生成する処理が終了した旨の画面（終了画面）がユーザに対して表示される（ステップＳ１０）。
【００６５】
次に、図７のフローチャートを参照して、本実施形態に係るプログラム生成装置３０におけるプログラムを生成する処理の処理手順について説明する。本実施形態においては、入力補助プログラムとして、例えば利用者のデータ入力をチェックする入力チェックルール（プログラム）が生成される。
【００６６】
プログラムを生成する処理が実行される際には、当該処理を指示するための画面が管理者に対して表示される。管理者は、プログラム生成装置３０を操作することによって、この画面を介してプログラムを生成する処理をプログラム生成装置３０に対して指示する。具体的には、管理者は、画面上に表示された例えば「（プログラムの）生成開始」メニューを選択（押下）することにより、当該プログラムの生成を指示する。
【００６７】
プログラム生成装置３０に含まれる全体制御部３１は、上記したような管理者の操作に応じてプログラムの生成が指示された場合、プログラム生成部３４を起動する。
【００６８】
プログラム生成部３４が起動されると、当該プログラム生成部３４は、全体制御部３１を介してテーブル構造定義情報格納部２２に格納されているテーブル構造定義情報を読み込む（ステップＳ１１）。
【００６９】
プログラム生成部３４は、読み込まれたテーブル構造定義情報に基づいて、データベース４０（に格納されているテーブル）に対して一連のＣＲＵＤ処理（生成・読み取り・更新・削除）を行うためのプログラム（つまり、本体プログラム）を生成する（ステップＳ１２）。
【００７０】
次に、プログラム生成部３４は、入力チェックルール生成部３５を起動する。このとき、プログラム生成部３４は、読み込まれたテーブル構造定義情報を入力チェックルール生成部３５に渡す。
【００７１】
入力チェックルール生成部３５は、プログラム生成部３４から渡されたテーブル構造定義情報に基づいて、入力チェックルールテンプレート格納部２３から適切なテンプレートを読み込む（ステップＳ１３）。入力チェックルール生成部３５は、プログラム生成部３４から渡されたテーブル構造定義情報に含まれる型（文字データ、数値データまたは日付データ等のデータの種類）に対応付けて入力チェックルールテンプレート格納部２３に格納されているテンプレートを読み込む。
【００７２】
入力チェックルール生成部３５は、プログラム生成部３４から渡されたテーブル構造定義情報及び読み込まれたテンプレートに基づいて、入力チェックルール（プログラム）を生成する（ステップＳ１４）。入力チェックルール生成部３５は、プログラム生成部３４から渡されたテーブル構造定義情報においてカラム名及び型に対応付けられているデータの範囲を、読み取られた当該型に対応するテンプレートに当てはめることによって入力チェックルールプログラムを生成する。
【００７３】
上記した図４に示すテーブル構造定義情報に含まれる例えばカラム名「empNo」の入力チェックルールプログラムにおいては、最小文字長は、当該テーブル構造定義情報における「empNo」の「最小文字長」に対応付けられている「０」である。また、最大文字長は、図４に示すテーブル構造定義情報における「empNo」の「最大文字長」に対応付けられている「２００」となる。つまり、この入力チェックルールプログラムによれば、最小文字長「０」から最大文字長「２００」の範囲以外の文字長のデータが入力された場合には、当該入力がエラーであることをチェックすることができる。
【００７４】
なお、上記した入力チェックルール生成部３５によって生成される入力チェックルールプログラムは、入力チェックルールファイルに基づいて、入力チェックを行う。この入力チェックルールファイルは、ここでは例えばＸＭＬファイルとしている。
【００７５】
ここで、図８は、入力チェックルール生成部３５によって生成された入力チェックルールプログラムで使用される設定ファイルの一例（定義例）について説明する。図８は、上記した図４に示すテーブル構造定義情報に基づいて生成された入力チェックルールプログラムで使用される設定ファイルを示す。
【００７６】
図８に示す例では、２行目の<form id = …>、２７行目の</form>で囲まれた部分が１つの入力チェックルールの定義を示す。
【００７７】
図８に示す例の４行目の<item key = …>、６行目の</item>で囲まれた部分がテーブルに存在するカラム（カラム名「empNo」）の設定項目となる。以下、<item key = …>〜</item>で囲まれた部分が各項目（カラム名「salary」及び「hiredate」）の入力チェックルールの定義となる。
【００７８】
例えば５行目の<ank-length max = “x” min=”0” erro-message=”ank-length-char”/>の”ank-length”は、半角文字換算の文字長による入力チェックの例であり、この場合の属性、max及びminは、半角文字換算による文字長の最大値（最大文字長）及び最小値（最小文字長）を示す。
【００７９】
図８に示す例では、５行目に示す通り、max＝ｘ（実際はデータベース４０から取得された桁、例えば２００が入力される）、min＝０となっている。つまり、例えばカラム名「empNo」の部分の入力チェックルールは、入力チェックルールテンプレート格納部２３において当該カラム名の型「VARCHAR2」に対応付けられているテンプレートに、当該カラム名「empNo」の最小文字列「０」及び最大文字列「ｘ（＝２００）」を当てはめることによって生成される。他のカラム名（例えば「salary」）等についても同様である。
【００８０】
再び図７に戻ると、上記したように入力チェックルールプログラムが生成されると、入力チェックルール生成部３５は、当該入力チェックルールプログラムをプログラム生成部３４に返す。入力チェックルールプログラムがプログラム生成部３４に返されると、入力チェックルール生成部３５の処理は終了される。
【００８１】
入力チェックルール生成部３５の処理が終了されると、プログラムを生成する処理が終了した旨の画面（終了画面）がユーザに対して表示される（ステップＳ１５）。
【００８２】
上記したように、プログラム生成装置３０は、ステップＳ１２において生成された本体プログラム及びステップＳ１４において生成された入力チェックルールプログラムのセットを例えば利用者に提供する。入力チェックルールプログラムは、利用者によって用いられる端末等において本体プログラムに組み込まれる。これにより、例えば本体プログラムの入力項目に対する利用者のデータ入力が入力チェックルールの要件（上記した設定ファイルに定義されたデータの範囲）を満たさない場合には、例えば入力チェックエラー画面が当該利用者に対して表示される。
【００８３】
ここで、図９は、入力チェックエラー画面の一例を示す。図９に示す入力チェックエラー画面２００には、利用者のデータ入力が入力チェックルールの要件を満たしていない旨が表示される。図９に示す例では、「SALARY（カラム名）は整数部５桁以内の数値（データの範囲）です。先頭に＋または−をつけることができます。」が表示されている。利用者は、この入力チェックエラー画面２００を参照することによって適切なデータ入力を行うことが可能となる。
【００８４】
上記したように本実施形態においては、プログラム生成装置３０の管理者によって指定（選択）されたテーブルのテーブル情報を取得し、当該テーブル情報から生成されたテーブル構造定義情報がテーブル構造定義情報格納部２２に格納される。また、本実施形態においては、データベース４０に対して一連のＣＲＵＤ処理を行うためのプログラム（本体プログラム）がテーブル構造定義情報格納部２２に格納されたテーブル構造定義情報に基づいて生成される際に、当該テーブル構造定義情報及び入力チェックルールテンプレート格納部２３に格納されているテンプレートに基づいて、当該本体プログラムにおける入力項目に対するデータ入力をチェックするための入力チェックルールプログラム（入力補助プログラム）が生成される。
【００８５】
これにより、本実施形態においては、本体プログラムがアクセスするデータベース４０に格納されるテーブルの構造により生じる入力データの制約に基づいて利用者のデータ入力に対する入力チェックルールプログラムを自動的に生成することが可能となる。つまり、本実施形態においては、本体プログラムを自動生成する際に、当該生成される本体プログラムの利用者の入力を補助するための入力補助プログラム（入力チェックルールプログラム）を生成することができるため、アプリケーションの生産効率を向上させることができる。
【００８６】
［第２の実施形態］
次に、図１０を参照して、本発明の第２の実施形態について説明する。図１０は、本実施形態に係るプログラム生成装置の主として機能構成を示すブロック図である。なお、前述した図２と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図２と異なる部分について主に述べる。
【００８７】
また、本実施形態に係るプログラム生成装置のハードウェア構成は、前述した第１の実施形態と同様であるため、適宜、図１を用いて説明する。
【００８８】
図１０に示すプログラム生成装置３００は、テーブル情報取得部３０１、データ解析部３０２、データ項目仕様生成部３０３及び画面選択肢生成部３０４を含む。本実施形態において、これらの各部３０１乃至３０４は、図１に示すコンピュータ１０が外部記憶装置２０に格納されているプログラム２１を実行することにより実現されるものとする。
【００８９】
なお、データベース４０に格納されているテーブルには、例えば当該テーブルに対して入力されたデータが保持（格納）されている。
【００９０】
テーブル情報取得部３０１は、前述した第１の実施形態におけるテーブル情報取得部３２の機能に加えて、管理者によって指定されたテーブルに保持（格納）されているデータ（テーブル格納データ）を、データベース４０に格納されている当該テーブルから取得する。
【００９１】
データ解析部３０２は、テーブル情報取得部３０１によって取得されたデータを解析する。
【００９２】
データ項目仕様生成部３０３は、テーブル情報取得部３０１によって取得されたテーブル情報によって示されるテーブルの構造に加えて、更に、データ解析部３０２による解析結果に基づいて、テーブル構造定義情報を生成する。このデータ解析部３０２による解析結果には、例えばテーブル情報取得部３０１によって取得されたデータ（テーブルに保持されているデータ）の分布または間隔等（の情報）が含まれる。つまり、データ項目仕様生成部３０３によって生成されるテーブル構造定義情報には、テーブルに保持されているデータの分布及び間隔等（解析結果）が含まれる。このデータ項目仕様生成部３０３によって生成されるテーブル構造定義情報の詳細については後述する。
【００９３】
画面選択肢生成部３０４は、テーブル構造定義情報格納部２２に格納されたテーブル構造定義情報に基づいて、プログラム生成部３４によって生成される本体プログラムを利用する利用者のデータ入力を補助するためのプログラム（入力補助プログラム）を生成する。画面選択肢生成部３０４は、本体プログラムにおける利用者のデータ入力の際に、当該利用者にデータを選択入力させる画面（画面選択肢）を表示させるためのプログラム（以下、画面選択肢表示プログラムと表記）を入力補助プログラムとして生成する。
【００９４】
つまり、本実施形態に係るプログラム生成装置３００においては、入力補助プログラムとして、前述した第１の実施形態における入力チェックルールプログラム（第１の入力補助プログラム）及び上記した画面選択肢表示プログラム（第２の入力補助プログラム）の２つのプログラムが生成される。
【００９５】
図１１は、図１０に示すテーブル構造定義情報格納部２２に格納されるテーブル構造定義情報のデータ構造の一例を示す。図１１に示すテーブル構造定義情報は、上記したようにテーブルに保持（格納）されているデータ（テーブル格納データ）の解析結果（データの分布または間隔）に基づいて生成されている点が、前述した図４に示すテーブル構造定義情報とは異なる。ここでは、図４に示すテーブル構造定義情報と異なる点について主に述べる。
【００９６】
図１１に示すテーブル構造定義情報には、カラム名「empNo」、型「VARCHAR2」及びカラム属性「最小文字長」に対応付けてカラム属性値「３」が対応付けて含まれている。つまり、前述した図４に示すテーブル構造定義情報においては「０」であった最小文字長が「３」になっている。上記したデータの解析結果において、カラム名が「empNo」であり、型が「VARCHAR2」であるカラムのデータの分布における最小文字長が「３」である場合には、図１１に示すように最小文字長として「３」がテーブル構造定義情報に含まれる。
【００９７】
図１１に示すテーブル構造定義情報には、カラム名「empNo」、型「VARCHAR2」及びカラム属性「最大文字長」に対応付けてカラム属性値「１８０」が対応付けて含まれている。つまり、前述した図４に示すテーブル構造定義情報においては「２００」であった最小文字長が「１８０」になっている。上記したデータの解析結果において、カラム名が「empNo」であり、型が「VARCHAR2」であるカラムのデータの分布における最大文字長が「１８０」である場合には、図１１に示すように最大文字長として「１８０」がテーブル構造定義情報に含まれる。
【００９８】
図１１に示すテーブル構造定義情報には、カラム名「salary」、型「NUMBER」及びカラム属性「最小値」に対応付けてカラム属性値「０」が対応付けて含まれている。つまり、前述した図４に示すテーブル構造定義情報においては「−９９９９９」であった最小値が「０」になっている。上記したデータの解析結果において、カラム名が「salary」であり、型が「NUMBER」であるカラムのデータの分布における最小値が「０」である場合には、図１１に示すように最小値として「０」がテーブル構造定義情報に含まれる。
【００９９】
図１１に示すテーブル構造定義情報には、カラム名「salary」、型「NUMBER」及びカラム属性「最大値」に対応付けてカラム属性値「６０００」が対応付けて含まれている。つまり、前述した図４に示すテーブル構造定義情報においては「９９９９９」であった最小文字長が「６０００」になっている。上記したデータの解析結果において、カラム名が「salary」であり、型が「NUMBER」であるカラムのデータの分布における最大値が「６０００」である場合には、図１１に示すように最大値として「６０００」がテーブル構造定義情報に含まれる。
【０１００】
また、図１１に示すテーブル構造定義情報には、カラム名「hiredate」、型「TIMESTAMP」及びカラム属性「分間隔」に対応付けてカラム属性値「１０」が対応付けて含まれている。上記したデータの解析結果において、カラム名が「hiredate」であり、型が「TIMESTAMP」であるカラムのデータ（日付データ）の分間隔が「１０」である場合には、図１１に示すように分間隔として「１０」がテーブル構造定義情報に含まれる。
【０１０１】
次に、本実施形態に係るプログラム生成装置３００の処理手順について説明する。前述した第１の実施形態と同様に、プログラム生成装置３００の処理は、テーブル構造定義情報を生成する処理とプログラムを生成する処理とに分けられる。以下、これらの各処理について説明する。
【０１０２】
図１２のフローチャートを参照して、本実施形態に係るプログラム生成装置３００におけるテーブル構造定義情報を生成する処理の処理手順について説明する。
【０１０３】
テーブル構造定義情報を生成する処理が実行される際には、前述した第１の実施形態と同様に、データベース４０に対してアクセスするための最小限の初期情報を指定させるための画面がプログラム生成装置３００の管理者に対して表示される。
【０１０４】
管理者は、この画面を介して例えばＵＲＩを含むデータベース接続情報を指定することができる。つまり、管理者は、例えばＵＲＩを指定することによって、データベース４０を指定することができる。データベース接続情報が指定されると、管理者は、画面上に表示された例えば「テーブル構造定義情報の生成」または「テーブル情報を取得」メニューを選択（押下）することにより、テーブル構造定義情報の生成を指示する。
【０１０５】
上記したように管理者によってテーブル構造定義情報の生成が指示されると、前述した図５に示すステップＳ１〜ステップＳ６の処理に相当するステップＳ２１〜ステップＳ２６の処理が実行される。
【０１０６】
ステップＳ２６においてスキーマ名が変更されたと判定された場合、ステップＳ２４に戻って処理が繰り返される。
【０１０７】
一方、ステップＳ２６においてスキーマ名が変更されていないと判定された場合、テーブル情報取得部３０１は、管理者によって選択（指定）されたテーブルの構造を示すテーブル情報及び当該テーブルに保持（格納）されているデータ（テーブル格納データ）を、データベース４０に格納されている当該テーブルから取得する。テーブル情報取得部３０１は、取得されたテーブル情報及びデータをデータ項目仕様生成部３０３に渡す。テーブル情報及びデータがデータ項目仕様生成部３０３に渡されると、テーブル情報取得部３０１の処理は終了される。
【０１０８】
次に、データ項目仕様生成部３０３は、データ解析部３０２を起動する。このとき、データ項目仕様生成部３０３は、テーブル情報取得部３０１から渡されたデータをデータ解析部３０２に渡す。
【０１０９】
データ解析部３０２は、データ項目仕様生成部３０３から渡されたデータを解析する（ステップＳ２８）。データ解析部３０２は、データ項目仕様生成部３０３から渡されたデータの分布または間隔等を含む解析結果をデータ項目仕様生成部３０３に渡す（出力する）。解析結果がデータ項目仕様生成部３０３に渡されると、データ解析部３０２の処理は終了される。
【０１１０】
データ項目仕様生成部３０３は、テーブル情報取得部３０１から渡されたテーブル情報及びデータ解析部３０２から渡された解析結果に基づいて、テーブル構造定義情報を生成する（ステップＳ３０）。データ項目仕様生成部３０３は、上記した図１１に示すようにテーブル情報によって示されるテーブルの構造において当該テーブルに保持されるデータ（当該テーブルにおけるカラムのデータ）の範囲（最小文字列、最大文字列等）に、解析結果に含まれるデータの分布が反映されたテーブル構造定義情報を生成する。また、データ項目仕様生成部３０３は、解析結果に含まれるデータの分間隔を含むテーブル構造定義情報を生成する。
【０１１１】
上記したステップＳ３０の処理が実行されると、前述した図５に示すステップＳ９及びステップＳ１０の処理に相当するステップＳ３０及びステップＳ３１の処理が実行される。
【０１１２】
次に、図１３のフローチャートを参照して、本実施形態に係るプログラム生成装置３００におけるプログラムを生成する処理の処理手順について説明する。本実施形態においては、利用者のデータ入力をチェックする入力チェックルールプログラム（第１の入力補助プログラム）及び利用者のデータ入力の際に画面選択肢を表示するための画面選択肢表示プログラム（第２の入力補助プログラム）が入力補助プログラムとして生成される。
【０１１３】
プログラムを生成する処理が実行される際には、前述した第１の実施形態と同様に、当該処理を指示するための画面が管理者に対して表示される。管理者は、プログラム生成装置３００を操作することによって、この画面を介してプログラムを生成する処理をプログラム生成装置３００に対して指示する。具体的には、管理者は、画面上に表示された例えば「（プログラムの）生成開始」メニューを選択（押下）することにより、当該プログラムの生成を指示する。
【０１１４】
上記したようにプログラムの生成が指示された場合、前述した図７に示すステップＳ１１〜ステップＳ１４の処理に相当するステップＳ４１〜ステップＳ４４の処理が実行される。つまり、ステップＳ４２においてプログラム生成部３４によって本体プログラムが生成される。
【０１１５】
また、ステップＳ４４において入力チェックルール生成部３５によって入力チェックルールプログラム（第１の入力補助プログラム）が生成される。このとき、入力チェックルール生成部３５は、テーブル構造定義情報が上記した図１１に示すデータ構造である場合、例えばカラム名が「empNo」であるカラムのデータ範囲が最小文字長「３」から最大文字長「１８０」までとなるような入力チェックルールプログラムを生成する。つまり、入力チェックルール生成部３５は、上記した解析結果に含まれるデータの分布が反映された入力チェックルールプログラムを生成する。なお、この入力チェックルールプログラムにおいては、前述した第１の実施形態と同様に、データの範囲を最小文字列「０」から最大文字列「２００」としても構わない。カラム名「empNo」以外（例えば、カラム名「salary」）についても同様である。
【０１１６】
なお、プログラム生成部３４は、ステップＳ４４の処理が実行されると、画面選択肢生成部３０４を起動する。このとき、プログラム生成部３４は、読み込まれたテーブル構造定義情報を画面選択肢生成部３０４に渡す。
【０１１７】
画面選択肢生成部３０４は、プログラム生成部３４から渡されたテーブル構造定義情報に含まれる解析結果に基づいて、画面選択肢表示プログラムを生成する（ステップＳ４５）。画面選択肢生成部３０４は、テーブル構造定義情報に含まれるカラム属性及び当該カラム属性に対応付けられているカラム属性値に基づいて画面選択肢表示プログラムを生成する。具体的には、画面選択肢生成部３０４は、テーブル構造定義情報に含まれる分間隔（図１１に示すデータ構造定義情報においては、カラム属性「分間隔」に対応付けられているカラム属性値「１０」）に基づいて画面選択肢表示プログラムを生成する。
【０１１８】
画面選択肢生成部３０４は、生成された画面選択肢表示プログラムをプログラム生成部３４に返す。画面選択肢表示プログラムがプログラム生成部３４に返されると、画面選択肢生成部３０４の処理は終了される。
【０１１９】
画面選択肢生成部３０４の処理が終了されると、プログラムを生成する処理が終了した旨の画面（終了画面）がユーザに対して表示される（ステップＳ４６）。
【０１２０】
プログラム生成装置３００は、ステップＳ４２において生成された本体プログラム、ステップＳ４４において生成された入力チェックルールプログラム及びステップＳ４５において生成された画面選択肢表示プログラムのセットを例えば利用者に提供する。画面選択肢表示プログラムは、入力チェックルールプログラムと同様に、利用者によって用いられる端末等において本体プログラムに組み込まれる。これにより、例えば本体プログラムの入力項目に対する利用者のデータ入力の際に、当該データを選択入力させるための画面（画面選択肢）が当該利用者に対して表示される。
【０１２１】
ここで、図１４は、画面選択肢生成部３０４によって生成された画面選択肢表示プログラムが実行された場合に表示される画面選択肢の一例を示す。図１４に示す画面選択肢４００は、上記した図１１に示すテーブル構造定義情報に基づいて生成された画面選択肢表示プログラムが実行されることによって表示される画面であるとする。
【０１２２】
上記したように図１１に示すテーブル構造定義情報に含まれるカラム名「hiredate」、型「TIMESTAMP」及びカラム属性「分間隔」に対応付けられているカラム属性値は、「１０」である。この場合、利用者が「TIMESTAMP型」である日付（時間）データを入力項目として入力する際には、図１４に示すように１０分間隔のプルダウンメニュー（プルダウンリスト）が画面選択肢４００として表示される。これにより、本体プログラムを利用する利用者が日付データを入力する際には、当該本体プログラムに組み込まれた画面選択肢表示プログラムにより表示された画面選択肢４００において適切な時間を選択することにより容易に日付データを入力することが可能となる。
【０１２３】
上記したように本実施形態においては、前述した第１の実施形態における入力チェックルールプログラムに加えて、データベース４０に格納されているテーブルに保持されているデータ（テーブル格納データ）の解析結果が含まれたテーブル構造定義情報に基づいて、画面選択肢表示プログラムが入力補助プログラムとして生成される。
【０１２４】
これにより、本実施形態においては、前述した第１の実施形態と比較して、データベース４０に格納されているテーブルの構造だけでは取得できないデータの分布または間隔を実際にテーブルに保持されているデータを解析することによって取得し、当該解析結果に基づいて入力補助プログラム（画面選択肢表示プログラム）を自動的に生成することができる。このため、本実施形態においては、アプリケーションの生産効率を向上させることが可能となる。
【０１２５】
なお、本願発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。  
【図面の簡単な説明】
【０１２６】
【図１】本発明の第１の実施形態に係るプログラム生成装置のハードウェア構成を示すブロック図。
【図２】図１に示すプログラム生成装置３０の主として機能構成を示すブロック図。
【図３】図２に示すテーブル情報取得部３２によって取得されるテーブル情報のデータ構造の一例を示す図。
【図４】図２に示すテーブル構造定義情報格納部２２に格納されるテーブル構造定義情報のデータ構造の一例を示す図。
【図５】本実施形態に係るプログラム生成装置３０におけるテーブル構造定義情報を生成する処理の処理手順を示すフローチャート。
【図６】データ情報取得部３２によって取得されたスキーマ名及びテーブル名が表示される画面の一例を示す図。
【図７】本実施形態に係るプログラム生成装置３０におけるプログラムを生成する処理の処理手順を示すフローチャート。
【図８】入力チェックルール生成部３５によって生成された入力チェックルールプログラムで使用される設定ファイルの一例について説明するための図。
【図９】入力チェックエラー画面の一例を示す図。
【図１０】本発明の第２の実施形態に係るプログラム生成装置の主として機能構成を示すブロック図。
【図１１】図１０に示すテーブル構造定義情報格納部２２に格納されるテーブル構造定義情報のデータ構造の一例を示す図。
【図１２】本実施形態に係るプログラム生成装置３００におけるテーブル構造定義情報を生成する処理の処理手順を示すフローチャート。
【図１３】本実施形態に係るプログラム生成装置３００におけるプログラムを生成する処理の処理手順を示すフローチャート。
【図１４】画面選択肢生成部３０４によって生成された画面選択肢表示プログラムが実行された場合に表示される画面選択肢の位置例を示す図。
【符号の説明】
【０１２７】
１０…コンピュータ、２０…外部記憶装置、２２…テーブル構造定義情報格納部、２３…入力チェックルールテンプレート格納部、３０，３００…プログラム生成装置、３１…全体制御部、３２，３０１…テーブル情報取得部、３３，３０３…データ項目仕様生成部、３４…プログラム生成部、３５…入力チェックルール生成部、４０…データベース、３０２…データ解析部、３０４…画面選択子生成部。
【図１】
2010108055.tif 000003
【図２】
2010108055.tif 000004
【図３】
2010108055.tif 000005
【図４】
2010108055.tif 000006
【図５】
2010108055.tif 000007
【図６】
2010108055.tif 000008
【図７】
2010108055.tif 000009
【図８】
2010108055.tif 000010
【図９】
2010108055.tif 000011
【図１０】
2010108055.tif 000012
【図１１】
2010108055.tif 000013
【図１２】
2010108055.tif 000014
【図１３】
2010108055.tif 000015
【図１４】
2010108055.tif 000016