以下、図面を参照して、本発明の各実施形態について説明する。
[第1の実施形態]
まず、図1及び図2を参照して、本発明の第1の実施形態について説明する。図1は、本実施形態に係るプログラム生成装置のハードウェア構成を示すブロック図である。図1に示すように、コンピュータ10は、例えばハードディスクドライブ(HDD:Hard Disk Drive)のような外部記憶装置20と接続されている。この外部記憶装置20は、コンピュータ10によって実行されるプログラム21を格納する。コンピュータ10及び外部記憶装置20は、プログラム生成装置30を構成する。
図2は、図1に示すプログラム生成装置30の主として機能構成を示すブロック図である。プログラム生成装置30は、例えば各種データを保持するテーブルを例えばスキーマ名毎に格納するデータベース40と接続されている。
図2に示すように、プログラム生成装置30は、全体制御部31、テーブル情報取得部32、データ項目仕様生成部33、プログラム生成部34及び入力チェックルール生成部35を含む。本実施形態において、これらの各部31乃至35は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム(プログラム生成用プログラム)21を実行することにより実現されるものとする。このプログラム21は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム21が例えばネットワークを介してコンピュータ10にダウンロードされても構わない。
また、プログラム生成装置30は、テーブル構造定義情報格納部22及び入力チェックルールテンプレート格納部23を有する。本実施形態において、テーブル構造定義情報格納部22及び入力チェックルールテンプレート格納部23は、例えば外部記憶装置20に格納される。
全体制御部31は、例えばプログラム生成装置30のユーザ(以下、管理者と表記)の操作に応じて、データベース接続情報を入力する。このデータベース接続情報は、例えばURI(Uniform Resource Identifier)を含む。
全体制御部31は、テーブル情報取得部32に作用し、管理者の操作(指示)に応じてデータベース40からテーブル情報を取得するように指示する。また、全体制御部31は、プログラム生成部34に作用し、管理者の操作に応じてデータベース40に対して一連のCRUD処理(生成・読み取り・更新・削除)を行うためのプログラム(以下、本体プログラムと表記)を生成するように指示する。
テーブル情報取得部32は、全体制御部31からの指示に応じて、データベース40に格納されているテーブルのテーブル名を取得する。この取得されたテーブル名は、例えば管理者に対して表示される。
また、テーブル情報取得部32は、管理者によって指定(選択)されたテーブルの構造を示すテーブル情報を、データベース40に格納されている当該テーブルから取得する。このテーブル情報には、例えばテーブル名、テーブルに保持されるデータの種類(型)及び当該データの制約等が含まれる。この型には、例えばVARCHAR2型(文字データ)、NUMBER型(数値データ)またはTIMESTAMP型(日付データ)等が含まれる。また、データの制約には、例えばデータの文字数または桁数等が含まれる。
データ項目仕様生成部33は、テーブル情報取得部32によって取得されたテーブル情報によって示されるテーブルの構造に基づいて、当該テーブルに保持されるデータの範囲を含むテーブル構造定義情報を生成する。このテーブル構造定義情報は、テーブル情報取得部32によって取得されたテーブル情報に、当該テーブル情報によって示されるテーブルの構造において当該テーブルに保持されるデータの範囲が追加されたものである。このデータの範囲は、テーブル情報取得部32によって取得されたテーブル情報に含まれるテーブルに保持されるデータの制約等に基づいて定められる。
データ項目仕様生成部33は、生成されたテーブル構造定義情報をテーブル構造定義情報格納部22に格納する。
プログラム生成部34は、全体制御部31の指示に応じて、上記した本体プログラムを生成する処理を実行する。プログラム生成部34は、テーブル構造定義情報格納部22に格納されたテーブル構造定義情報に基づいて本体プログラムを生成する。この本体プログラムは、例えばWebアプリケーションのプログラムである。
このプログラム生成部34によって生成されたプログラム(本体プログラム)は、例えば当該プログラムを利用するユーザ(以下、利用者と表記)の端末等において用いられる(実行される)。
入力チェックルールテンプレート格納部23には、プログラム生成部34によって生成される本体プログラムを利用する利用者のデータ入力を補助するためのプログラム(以下、入力補助プログラムと表記)の生成に用いられるテンプレートが予め格納される。このテンプレートは、例えばXML(eXtensible Markup Language)形式で、データベース40に格納されているテーブルに保持されるデータの種類(つまり、型)毎に対応付けて入力チェックルールテンプレート格納部23に格納されている。
入力チェックルール生成部35は、テーブル構造定義情報格納部22に格納されたテーブル構造定義情報に含まれるデータの範囲を、入力チェックルールテンプレート格納部23に格納されているテンプレートに当てはめることによって入力補助プログラムを生成する。入力チェックルール生成部35は、テーブル構造定義情報格納部22に格納されたテーブル構造定義情報に含まれるデータの範囲外のデータ入力がされた場合に、当該データ入力をエラーとする処理と行うための入力チェックルール(入力補助ルール)のプログラム(以下、入力チェックルールプログラムと表記)を入力補助プログラムとして生成する。
プログラム生成装置30は、上記したプログラム生成部34によって生成された本体プログラム及び入力チェックルール生成部35によって生成された入力チェックルールプログラム(入力補助プログラム)のセットを利用者に提供する。入力チェックルールプログラムは、例えば利用者によって用いられる端末等において本体プログラムに組み込まれる。これにより、利用者は、入力チェック機能が含まれるプログラムを利用することができる。
図3は、図2に示すテーブル情報取得部32によって取得されるテーブル情報のデータ構造の一例を示す。
図3に示すように、テーブル情報には、テーブル名、カラム名、型、カラム属性及び当該カラム属性の値(カラム属性値)が対応付けて含まれている。カラム属性及びカラム属性値は、テーブルに保持されるデータの制約(例えば桁数等)を示す。
図3に示す例では、テーブル情報には、テーブル名「emp」に対応付けてカラム名「empNo」、「salary」及び「hiredate」が含まれている。また、テーブル情報には、カラム名「empNo」に対応付けて型「VARCHAR2(文字データ型)」が含まれている。更に、テーブル情報には、カラム名「salary」に対応付けて型「NUMBER(数値データ型)」、カラム名「hiredate」に対応付けて型「TIMESTAMP(日付データ型)」が含まれている。
テーブル情報には、型「VARCHAR2」に対応付けてカラム属性「桁(文字数)」及びカラム属性値「x=200」が含まれている。これによれば、カラム名が「empNo」であり、型が「VARCHAR2」であるカラムのデータは、桁が「200(以下)」の文字データであることが示されている。
テーブル情報には、型「NUMBER」に対応付けてカラム属性「桁」及びカラム属性値「y=5」が含まれている。同様に、テーブル情報には、型「NUMBER」に対応付けてカラム属性「位取」及びカラム属性値「z=0」が含まれている。これによれば、カラム名が「salary」であり、型が「NUMBER」であるカラムのデータは、桁が「5(以下)」で、位取が「0」の数値データであることが示されている。
図4は、図2に示すテーブル構造定義情報格納部22に格納されるテーブル構造定義情報のデータ構造の一例を示す。図4に示すテーブル構造定義情報は、上記した図3に示すテーブル情報によって示されるテーブルの構造に基づいてデータ項目仕様生成部33によって生成されたテーブル構造定義情報であるものとする。
図4に示すように、テーブル構造定義情報には、上記した図3に示すテーブル情報と比較して、型「VARCHAR2」に対応付けてカラム属性「最小文字長」及び「最大文字長」が追加されている。テーブル構造定義情報には、カラム属性「最小文字長」に対応付けてカラム属性値「0」が追加されている。また、テーブル構造定義情報には、カラム属性「最大文字長」に対応付けてカラム属性値「200」が追加されている。この「最小文字長」に対応付けられている「0」から「最大文字長」に対応付けられている「200」までが、カラム名が「empNo」であり、型が「VARCHAR2(文字データ型)」であるカラムにおけるデータの範囲(文字数)である。
このカラム属性「最小文字長」及びカラム属性値「0」、カラム属性「最大文字長」及びカラム属性値「200」は、型「VARCHAR2」に対応付けて図3に示すテーブル情報に含まれるカラム属性「桁」及びカラム属性値「x=200」に基づいて定められる。
また、テーブル構造定義情報には、上記した図3に示すテーブル情報と比較して、型「」に対応付けてカラム属性「最小値」及び「最大値」が追加されている。テーブル構造定義情報には、カラム属性「最小値」に対応付けてカラム属性値「−99999」が追加されている。また、テーブル構造定義情報には、カラム属性「最大値」に対応付けてカラム属性値「99999」が追加されている。この「最小値」に対応付けられている「−99999」から「最大値」に対応付けられている「99999」が、カラム名が「salary」であり、型が「NUMBER(数値データ型)」であるカラムにおけるデータの範囲(数値の範囲)である。
このカラム属性「最小値」及びカラム属性値「−99999」、カラム属性「最大値」及びカラム属性値「99999」は、型「NUMBER」に対応付けて図3に示すテーブル情報に含まれるカラム属性「桁」及びカラム属性値「y=5」とカラム属性「位取」及びカラム属性値「z=0」とに基づいて定められる。
このように、図3に示すテーブル情報によって示されるテーブルの構造(ここでは、カラム属性「桁」及びカラム属性値「x=200」、カラム属性「桁」及びカラム属性値「y=5」、カラム属性「位取」及びカラム属性値「z=0」)に基づいて定められた、カラム属性「最小文字長」及び当該カラム属性に対応付けられたカラム属性値「0」、カラム属性「最大文字長」及び当該カラム属性に対応付けられたカラム属性値「200」、カラム属性「最小値」及び当該カラム属性に対応付けられたカラム属性値「−99999」、カラム属性「最大値」及び当該カラム属性に対応付けられたカラム属性値「99999」が当該テーブル情報に追加されることによって、図4に示すテーブル構造定義情報が生成される。
次に、本実施形態に係るプログラム生成装置30の処理手順について説明する。プログラム生成装置30の処理は、テーブル構造定義情報を生成する処理と本体プログラム及び入力補助プログラムを生成する処理(以下、単にプログラムを生成する処理と表記)とに分けられる。以下、これらの各処理について説明する。
まず、図5のフローチャートを参照して、本実施形態に係るプログラム生成装置30におけるテーブル構造定義情報を生成する処理の処理手順について説明する。
テーブル構造定義情報を生成する処理が実行される際には、データベース40に対してアクセスするための最小限の初期情報を指定させるための画面(入力画面)がプログラム生成装置30の管理者に対して表示される。この画面は、プログラム生成装置30に備えられている表示部(図示せず)を介して表示される。以下、管理者に対して表示される画面については同様である。
管理者は、この画面を介して例えばURIを含むデータベース接続情報を指定することができる。つまり、管理者は、例えばURIを指定することによって、データベース40を指定することができる。データベース接続情報が指定されると、管理者は、画面上に表示された例えば「テーブル構造定義情報の生成」または「テーブル情報を取得」メニューを選択(押下)することにより、テーブル構造定義情報の生成を指示する。
プログラム生成装置30に含まれる全体制御部31は、上記したような管理者の操作に応じて、データベース接続情報を入力する(ステップS1)。全体制御部31は、管理者からのテーブル構造定義情報の生成の指示に応じて、データ項目仕様生成部33を起動する。このとき、全体制御部31は、入力されたデータベース接続情報をデータ項目仕様生成部33に渡す。
データ項目仕様生成部33は、全体制御部31から渡されたデータベース40に対するデータベース接続情報を検証する(ステップS2)。データ項目仕様生成部33は、データベース接続情報(URI)が正しいか否かを検証する。データ項目仕様生成部33は、検証の結果、データベース接続情報が正しい場合には、テーブル情報取得部32を起動する。このとき、データ項目仕様生成部33は、データベース接続情報をテーブル情報取得部32に渡す。
なお、検証の結果、データベース接続情報が正しくない場合には、その旨が管理者に対して返される(表示される)。
次に、データ情報取得部32は、データ項目仕様生成部33から渡されたデータベース接続情報をもとに、データベース40に接続する。
データ情報取得部32は、予め設定(初期設定)されているスキーマ名(デフォルトのスキーマ名)を取得する(ステップS3)。データ情報取得部32は、データベース40からデフォルトのスキーマ名を取得する。
データ情報取得部32は、取得されたスキーマ名に対応するテーブルのテーブル名をデータベース40から取得する(ステップS4)。
データ情報取得部32によって取得されたスキーマ名及びテーブル名は、管理者に対して表示される(ステップS5)。
ここで、図6は、データ情報取得部32によって取得されたスキーマ名及びテーブル名が表示される画面(以下、テーブル選択画面と表記)の一例を示す。
図6に示すテーブル選択画面100には、スキーマ名表示欄101、テーブル名表示欄102、選択テーブル名表示欄103、インポートボタン104及びキャンセルボタン105が設けられている。
スキーマ名表示欄101には、データ情報取得部32によって取得されたスキーマ名(ここでは、デフォルトのスキーマ名)が表示される。図6に示す例では、スキーマ名表示欄101には、デフォルトのスキーマ名として「SCOTT」が表示されている。なお、管理者は、例えばプログラム生成装置30を操作することによって、スキーマ名表示欄101に表示されているスキーマ名を変更することができる。
テーブル名表示欄102には、データ情報取得部32によって取得されたテーブル名(スキーマ名表示欄101に表示されているスキーマ名に対応するテーブル名)が表示される。図6に示す例では、テーブル名表示欄102には、テーブル名として「ACCOUNT」、「APPCLASS」、「APPINSTANCE」及び「APPLOG」等の複数のテーブル名が表示されている。
管理者は、プログラム生成装置30を操作することによって、テーブル名表示欄102に表示されている複数のテーブル名の中からテーブル情報を取得するテーブル(名)を選択することができる。つまり、管理者は、テーブル構造定義情報の生成の対象となるテーブルを指定することができる。
この場合、管理者は、テーブル名表示欄102に表示されているテーブル名を選択テーブル名表示欄103に移動させ、インポートボタン104を押下(指定)することでテーブルを選択することができる。
なお、例えばテーブル名表示欄102に表示されているテーブル名を選択テーブル名表示欄103に移動させた後、当該テーブルの選択をキャンセルしたい場合には、キャンセルボタン105を押下することで、当該テーブルの選択をキャンセルすることができる。
再び、図5のフローチャートに戻ると、テーブル情報取得部32によって取得されたスキーマ名及びテーブル名が表示された後、上記したような管理者の操作によってデフォルトのスキーマ名(スキーマ名表示欄101に表示されているスキーマ名)が変更されたか否かが判定される(ステップS6)。
スキーマ名が変更されたと判定された場合(ステップS6のYES)、ステップS4に戻って処理が繰り返される。つまり、スキーマ名が変更された場合には、テーブル情報取得部32は、変更後のスキーマ名に対応するテーブルのテーブル名をデータベース40から取得する。この後、変更後のスキーマ名及びテーブル情報取得部32によって取得されたテーブル名(変更後のスキーマ名に対応するテーブル名)が図6に示すようなテーブル選択画面100において表示される。この場合、このテーブル選択画面100において、上記したように管理者によってテーブル名が選択される。
一方、スキーマ名が変更されていないと判定された場合(ステップS6のNO)、テーブル情報取得部32は、管理者によって選択(指定)されたテーブルの構造を示すテーブル情報を、データベース40に格納されている当該テーブルから取得する(ステップS7)。テーブル情報取得部32は、取得されたテーブル情報をデータ項目仕様生成部33に渡す。テーブル情報がデータ項目仕様生成部33に渡されると、テーブル情報取得部32の処理は終了される。
次に、データ項目仕様生成部33は、テーブル情報取得部32から渡されたテーブル情報に基づいて、テーブル情報によって示されるテーブルの構造において当該テーブルに保持されるデータ(当該テーブルにおけるカラムのデータ)の範囲を追加することによりテーブル構造定義情報を生成する(ステップS8)。具体的には、データ項目仕様生成部33は、上記した図3に示すテーブル情報に基づいて、上記した図4に示すテーブル構造定義情報を生成する。
データ項目仕様生成部33は、生成されたテーブル構造定義情報をテーブル構造定義情報格納部22に書き込む(ステップS9)。このテーブル構造定義情報は、例えばスプレッドシートに保持される。テーブル構造定義情報がテーブル構造定義情報格納部22に書き込まれると、データ項目仕様生成部33の処理は終了される。
データ項目仕様生成部33の処理が終了されると、テーブル構造定義情報を生成する処理が終了した旨の画面(終了画面)がユーザに対して表示される(ステップS10)。
次に、図7のフローチャートを参照して、本実施形態に係るプログラム生成装置30におけるプログラムを生成する処理の処理手順について説明する。本実施形態においては、入力補助プログラムとして、例えば利用者のデータ入力をチェックする入力チェックルール(プログラム)が生成される。
プログラムを生成する処理が実行される際には、当該処理を指示するための画面が管理者に対して表示される。管理者は、プログラム生成装置30を操作することによって、この画面を介してプログラムを生成する処理をプログラム生成装置30に対して指示する。具体的には、管理者は、画面上に表示された例えば「(プログラムの)生成開始」メニューを選択(押下)することにより、当該プログラムの生成を指示する。
プログラム生成装置30に含まれる全体制御部31は、上記したような管理者の操作に応じてプログラムの生成が指示された場合、プログラム生成部34を起動する。
プログラム生成部34が起動されると、当該プログラム生成部34は、全体制御部31を介してテーブル構造定義情報格納部22に格納されているテーブル構造定義情報を読み込む(ステップS11)。
プログラム生成部34は、読み込まれたテーブル構造定義情報に基づいて、データベース40(に格納されているテーブル)に対して一連のCRUD処理(生成・読み取り・更新・削除)を行うためのプログラム(つまり、本体プログラム)を生成する(ステップS12)。
次に、プログラム生成部34は、入力チェックルール生成部35を起動する。このとき、プログラム生成部34は、読み込まれたテーブル構造定義情報を入力チェックルール生成部35に渡す。
入力チェックルール生成部35は、プログラム生成部34から渡されたテーブル構造定義情報に基づいて、入力チェックルールテンプレート格納部23から適切なテンプレートを読み込む(ステップS13)。入力チェックルール生成部35は、プログラム生成部34から渡されたテーブル構造定義情報に含まれる型(文字データ、数値データまたは日付データ等のデータの種類)に対応付けて入力チェックルールテンプレート格納部23に格納されているテンプレートを読み込む。
入力チェックルール生成部35は、プログラム生成部34から渡されたテーブル構造定義情報及び読み込まれたテンプレートに基づいて、入力チェックルール(プログラム)を生成する(ステップS14)。入力チェックルール生成部35は、プログラム生成部34から渡されたテーブル構造定義情報においてカラム名及び型に対応付けられているデータの範囲を、読み取られた当該型に対応するテンプレートに当てはめることによって入力チェックルールプログラムを生成する。
上記した図4に示すテーブル構造定義情報に含まれる例えばカラム名「empNo」の入力チェックルールプログラムにおいては、最小文字長は、当該テーブル構造定義情報における「empNo」の「最小文字長」に対応付けられている「0」である。また、最大文字長は、図4に示すテーブル構造定義情報における「empNo」の「最大文字長」に対応付けられている「200」となる。つまり、この入力チェックルールプログラムによれば、最小文字長「0」から最大文字長「200」の範囲以外の文字長のデータが入力された場合には、当該入力がエラーであることをチェックすることができる。
なお、上記した入力チェックルール生成部35によって生成される入力チェックルールプログラムは、入力チェックルールファイルに基づいて、入力チェックを行う。この入力チェックルールファイルは、ここでは例えばXMLファイルとしている。
ここで、図8は、入力チェックルール生成部35によって生成された入力チェックルールプログラムで使用される設定ファイルの一例(定義例)について説明する。図8は、上記した図4に示すテーブル構造定義情報に基づいて生成された入力チェックルールプログラムで使用される設定ファイルを示す。
図8に示す例では、2行目の<form id = …>、27行目の</form>で囲まれた部分が1つの入力チェックルールの定義を示す。
図8に示す例の4行目の<item key = …>、6行目の</item>で囲まれた部分がテーブルに存在するカラム(カラム名「empNo」)の設定項目となる。以下、<item key = …>〜</item>で囲まれた部分が各項目(カラム名「salary」及び「hiredate」)の入力チェックルールの定義となる。
例えば5行目の<ank-length max = “x” min=”0” erro-message=”ank-length-char”/>の”ank-length”は、半角文字換算の文字長による入力チェックの例であり、この場合の属性、max及びminは、半角文字換算による文字長の最大値(最大文字長)及び最小値(最小文字長)を示す。
図8に示す例では、5行目に示す通り、max=x(実際はデータベース40から取得された桁、例えば200が入力される)、min=0となっている。つまり、例えばカラム名「empNo」の部分の入力チェックルールは、入力チェックルールテンプレート格納部23において当該カラム名の型「VARCHAR2」に対応付けられているテンプレートに、当該カラム名「empNo」の最小文字列「0」及び最大文字列「x(=200)」を当てはめることによって生成される。他のカラム名(例えば「salary」)等についても同様である。
再び図7に戻ると、上記したように入力チェックルールプログラムが生成されると、入力チェックルール生成部35は、当該入力チェックルールプログラムをプログラム生成部34に返す。入力チェックルールプログラムがプログラム生成部34に返されると、入力チェックルール生成部35の処理は終了される。
入力チェックルール生成部35の処理が終了されると、プログラムを生成する処理が終了した旨の画面(終了画面)がユーザに対して表示される(ステップS15)。
上記したように、プログラム生成装置30は、ステップS12において生成された本体プログラム及びステップS14において生成された入力チェックルールプログラムのセットを例えば利用者に提供する。入力チェックルールプログラムは、利用者によって用いられる端末等において本体プログラムに組み込まれる。これにより、例えば本体プログラムの入力項目に対する利用者のデータ入力が入力チェックルールの要件(上記した設定ファイルに定義されたデータの範囲)を満たさない場合には、例えば入力チェックエラー画面が当該利用者に対して表示される。
ここで、図9は、入力チェックエラー画面の一例を示す。図9に示す入力チェックエラー画面200には、利用者のデータ入力が入力チェックルールの要件を満たしていない旨が表示される。図9に示す例では、「SALARY(カラム名)は整数部5桁以内の数値(データの範囲)です。先頭に+または−をつけることができます。」が表示されている。利用者は、この入力チェックエラー画面200を参照することによって適切なデータ入力を行うことが可能となる。
上記したように本実施形態においては、プログラム生成装置30の管理者によって指定(選択)されたテーブルのテーブル情報を取得し、当該テーブル情報から生成されたテーブル構造定義情報がテーブル構造定義情報格納部22に格納される。また、本実施形態においては、データベース40に対して一連のCRUD処理を行うためのプログラム(本体プログラム)がテーブル構造定義情報格納部22に格納されたテーブル構造定義情報に基づいて生成される際に、当該テーブル構造定義情報及び入力チェックルールテンプレート格納部23に格納されているテンプレートに基づいて、当該本体プログラムにおける入力項目に対するデータ入力をチェックするための入力チェックルールプログラム(入力補助プログラム)が生成される。
これにより、本実施形態においては、本体プログラムがアクセスするデータベース40に格納されるテーブルの構造により生じる入力データの制約に基づいて利用者のデータ入力に対する入力チェックルールプログラムを自動的に生成することが可能となる。つまり、本実施形態においては、本体プログラムを自動生成する際に、当該生成される本体プログラムの利用者の入力を補助するための入力補助プログラム(入力チェックルールプログラム)を生成することができるため、アプリケーションの生産効率を向上させることができる。
[第2の実施形態]
次に、図10を参照して、本発明の第2の実施形態について説明する。図10は、本実施形態に係るプログラム生成装置の主として機能構成を示すブロック図である。なお、前述した図2と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図2と異なる部分について主に述べる。
また、本実施形態に係るプログラム生成装置のハードウェア構成は、前述した第1の実施形態と同様であるため、適宜、図1を用いて説明する。
図10に示すプログラム生成装置300は、テーブル情報取得部301、データ解析部302、データ項目仕様生成部303及び画面選択肢生成部304を含む。本実施形態において、これらの各部301乃至304は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム21を実行することにより実現されるものとする。
なお、データベース40に格納されているテーブルには、例えば当該テーブルに対して入力されたデータが保持(格納)されている。
テーブル情報取得部301は、前述した第1の実施形態におけるテーブル情報取得部32の機能に加えて、管理者によって指定されたテーブルに保持(格納)されているデータ(テーブル格納データ)を、データベース40に格納されている当該テーブルから取得する。
データ解析部302は、テーブル情報取得部301によって取得されたデータを解析する。
データ項目仕様生成部303は、テーブル情報取得部301によって取得されたテーブル情報によって示されるテーブルの構造に加えて、更に、データ解析部302による解析結果に基づいて、テーブル構造定義情報を生成する。このデータ解析部302による解析結果には、例えばテーブル情報取得部301によって取得されたデータ(テーブルに保持されているデータ)の分布または間隔等(の情報)が含まれる。つまり、データ項目仕様生成部303によって生成されるテーブル構造定義情報には、テーブルに保持されているデータの分布及び間隔等(解析結果)が含まれる。このデータ項目仕様生成部303によって生成されるテーブル構造定義情報の詳細については後述する。
画面選択肢生成部304は、テーブル構造定義情報格納部22に格納されたテーブル構造定義情報に基づいて、プログラム生成部34によって生成される本体プログラムを利用する利用者のデータ入力を補助するためのプログラム(入力補助プログラム)を生成する。画面選択肢生成部304は、本体プログラムにおける利用者のデータ入力の際に、当該利用者にデータを選択入力させる画面(画面選択肢)を表示させるためのプログラム(以下、画面選択肢表示プログラムと表記)を入力補助プログラムとして生成する。
つまり、本実施形態に係るプログラム生成装置300においては、入力補助プログラムとして、前述した第1の実施形態における入力チェックルールプログラム(第1の入力補助プログラム)及び上記した画面選択肢表示プログラム(第2の入力補助プログラム)の2つのプログラムが生成される。
図11は、図10に示すテーブル構造定義情報格納部22に格納されるテーブル構造定義情報のデータ構造の一例を示す。図11に示すテーブル構造定義情報は、上記したようにテーブルに保持(格納)されているデータ(テーブル格納データ)の解析結果(データの分布または間隔)に基づいて生成されている点が、前述した図4に示すテーブル構造定義情報とは異なる。ここでは、図4に示すテーブル構造定義情報と異なる点について主に述べる。
図11に示すテーブル構造定義情報には、カラム名「empNo」、型「VARCHAR2」及びカラム属性「最小文字長」に対応付けてカラム属性値「3」が対応付けて含まれている。つまり、前述した図4に示すテーブル構造定義情報においては「0」であった最小文字長が「3」になっている。上記したデータの解析結果において、カラム名が「empNo」であり、型が「VARCHAR2」であるカラムのデータの分布における最小文字長が「3」である場合には、図11に示すように最小文字長として「3」がテーブル構造定義情報に含まれる。
図11に示すテーブル構造定義情報には、カラム名「empNo」、型「VARCHAR2」及びカラム属性「最大文字長」に対応付けてカラム属性値「180」が対応付けて含まれている。つまり、前述した図4に示すテーブル構造定義情報においては「200」であった最小文字長が「180」になっている。上記したデータの解析結果において、カラム名が「empNo」であり、型が「VARCHAR2」であるカラムのデータの分布における最大文字長が「180」である場合には、図11に示すように最大文字長として「180」がテーブル構造定義情報に含まれる。
図11に示すテーブル構造定義情報には、カラム名「salary」、型「NUMBER」及びカラム属性「最小値」に対応付けてカラム属性値「0」が対応付けて含まれている。つまり、前述した図4に示すテーブル構造定義情報においては「−99999」であった最小値が「0」になっている。上記したデータの解析結果において、カラム名が「salary」であり、型が「NUMBER」であるカラムのデータの分布における最小値が「0」である場合には、図11に示すように最小値として「0」がテーブル構造定義情報に含まれる。
図11に示すテーブル構造定義情報には、カラム名「salary」、型「NUMBER」及びカラム属性「最大値」に対応付けてカラム属性値「6000」が対応付けて含まれている。つまり、前述した図4に示すテーブル構造定義情報においては「99999」であった最小文字長が「6000」になっている。上記したデータの解析結果において、カラム名が「salary」であり、型が「NUMBER」であるカラムのデータの分布における最大値が「6000」である場合には、図11に示すように最大値として「6000」がテーブル構造定義情報に含まれる。
また、図11に示すテーブル構造定義情報には、カラム名「hiredate」、型「TIMESTAMP」及びカラム属性「分間隔」に対応付けてカラム属性値「10」が対応付けて含まれている。上記したデータの解析結果において、カラム名が「hiredate」であり、型が「TIMESTAMP」であるカラムのデータ(日付データ)の分間隔が「10」である場合には、図11に示すように分間隔として「10」がテーブル構造定義情報に含まれる。
次に、本実施形態に係るプログラム生成装置300の処理手順について説明する。前述した第1の実施形態と同様に、プログラム生成装置300の処理は、テーブル構造定義情報を生成する処理とプログラムを生成する処理とに分けられる。以下、これらの各処理について説明する。
図12のフローチャートを参照して、本実施形態に係るプログラム生成装置300におけるテーブル構造定義情報を生成する処理の処理手順について説明する。
テーブル構造定義情報を生成する処理が実行される際には、前述した第1の実施形態と同様に、データベース40に対してアクセスするための最小限の初期情報を指定させるための画面がプログラム生成装置300の管理者に対して表示される。
管理者は、この画面を介して例えばURIを含むデータベース接続情報を指定することができる。つまり、管理者は、例えばURIを指定することによって、データベース40を指定することができる。データベース接続情報が指定されると、管理者は、画面上に表示された例えば「テーブル構造定義情報の生成」または「テーブル情報を取得」メニューを選択(押下)することにより、テーブル構造定義情報の生成を指示する。
上記したように管理者によってテーブル構造定義情報の生成が指示されると、前述した図5に示すステップS1〜ステップS6の処理に相当するステップS21〜ステップS26の処理が実行される。
ステップS26においてスキーマ名が変更されたと判定された場合、ステップS24に戻って処理が繰り返される。
一方、ステップS26においてスキーマ名が変更されていないと判定された場合、テーブル情報取得部301は、管理者によって選択(指定)されたテーブルの構造を示すテーブル情報及び当該テーブルに保持(格納)されているデータ(テーブル格納データ)を、データベース40に格納されている当該テーブルから取得する。テーブル情報取得部301は、取得されたテーブル情報及びデータをデータ項目仕様生成部303に渡す。テーブル情報及びデータがデータ項目仕様生成部303に渡されると、テーブル情報取得部301の処理は終了される。
次に、データ項目仕様生成部303は、データ解析部302を起動する。このとき、データ項目仕様生成部303は、テーブル情報取得部301から渡されたデータをデータ解析部302に渡す。
データ解析部302は、データ項目仕様生成部303から渡されたデータを解析する(ステップS28)。データ解析部302は、データ項目仕様生成部303から渡されたデータの分布または間隔等を含む解析結果をデータ項目仕様生成部303に渡す(出力する)。解析結果がデータ項目仕様生成部303に渡されると、データ解析部302の処理は終了される。
データ項目仕様生成部303は、テーブル情報取得部301から渡されたテーブル情報及びデータ解析部302から渡された解析結果に基づいて、テーブル構造定義情報を生成する(ステップS30)。データ項目仕様生成部303は、上記した図11に示すようにテーブル情報によって示されるテーブルの構造において当該テーブルに保持されるデータ(当該テーブルにおけるカラムのデータ)の範囲(最小文字列、最大文字列等)に、解析結果に含まれるデータの分布が反映されたテーブル構造定義情報を生成する。また、データ項目仕様生成部303は、解析結果に含まれるデータの分間隔を含むテーブル構造定義情報を生成する。
上記したステップS30の処理が実行されると、前述した図5に示すステップS9及びステップS10の処理に相当するステップS30及びステップS31の処理が実行される。
次に、図13のフローチャートを参照して、本実施形態に係るプログラム生成装置300におけるプログラムを生成する処理の処理手順について説明する。本実施形態においては、利用者のデータ入力をチェックする入力チェックルールプログラム(第1の入力補助プログラム)及び利用者のデータ入力の際に画面選択肢を表示するための画面選択肢表示プログラム(第2の入力補助プログラム)が入力補助プログラムとして生成される。
プログラムを生成する処理が実行される際には、前述した第1の実施形態と同様に、当該処理を指示するための画面が管理者に対して表示される。管理者は、プログラム生成装置300を操作することによって、この画面を介してプログラムを生成する処理をプログラム生成装置300に対して指示する。具体的には、管理者は、画面上に表示された例えば「(プログラムの)生成開始」メニューを選択(押下)することにより、当該プログラムの生成を指示する。
上記したようにプログラムの生成が指示された場合、前述した図7に示すステップS11〜ステップS14の処理に相当するステップS41〜ステップS44の処理が実行される。つまり、ステップS42においてプログラム生成部34によって本体プログラムが生成される。
また、ステップS44において入力チェックルール生成部35によって入力チェックルールプログラム(第1の入力補助プログラム)が生成される。このとき、入力チェックルール生成部35は、テーブル構造定義情報が上記した図11に示すデータ構造である場合、例えばカラム名が「empNo」であるカラムのデータ範囲が最小文字長「3」から最大文字長「180」までとなるような入力チェックルールプログラムを生成する。つまり、入力チェックルール生成部35は、上記した解析結果に含まれるデータの分布が反映された入力チェックルールプログラムを生成する。なお、この入力チェックルールプログラムにおいては、前述した第1の実施形態と同様に、データの範囲を最小文字列「0」から最大文字列「200」としても構わない。カラム名「empNo」以外(例えば、カラム名「salary」)についても同様である。
なお、プログラム生成部34は、ステップS44の処理が実行されると、画面選択肢生成部304を起動する。このとき、プログラム生成部34は、読み込まれたテーブル構造定義情報を画面選択肢生成部304に渡す。
画面選択肢生成部304は、プログラム生成部34から渡されたテーブル構造定義情報に含まれる解析結果に基づいて、画面選択肢表示プログラムを生成する(ステップS45)。画面選択肢生成部304は、テーブル構造定義情報に含まれるカラム属性及び当該カラム属性に対応付けられているカラム属性値に基づいて画面選択肢表示プログラムを生成する。具体的には、画面選択肢生成部304は、テーブル構造定義情報に含まれる分間隔(図11に示すデータ構造定義情報においては、カラム属性「分間隔」に対応付けられているカラム属性値「10」)に基づいて画面選択肢表示プログラムを生成する。
画面選択肢生成部304は、生成された画面選択肢表示プログラムをプログラム生成部34に返す。画面選択肢表示プログラムがプログラム生成部34に返されると、画面選択肢生成部304の処理は終了される。
画面選択肢生成部304の処理が終了されると、プログラムを生成する処理が終了した旨の画面(終了画面)がユーザに対して表示される(ステップS46)。
プログラム生成装置300は、ステップS42において生成された本体プログラム、ステップS44において生成された入力チェックルールプログラム及びステップS45において生成された画面選択肢表示プログラムのセットを例えば利用者に提供する。画面選択肢表示プログラムは、入力チェックルールプログラムと同様に、利用者によって用いられる端末等において本体プログラムに組み込まれる。これにより、例えば本体プログラムの入力項目に対する利用者のデータ入力の際に、当該データを選択入力させるための画面(画面選択肢)が当該利用者に対して表示される。
ここで、図14は、画面選択肢生成部304によって生成された画面選択肢表示プログラムが実行された場合に表示される画面選択肢の一例を示す。図14に示す画面選択肢400は、上記した図11に示すテーブル構造定義情報に基づいて生成された画面選択肢表示プログラムが実行されることによって表示される画面であるとする。
上記したように図11に示すテーブル構造定義情報に含まれるカラム名「hiredate」、型「TIMESTAMP」及びカラム属性「分間隔」に対応付けられているカラム属性値は、「10」である。この場合、利用者が「TIMESTAMP型」である日付(時間)データを入力項目として入力する際には、図14に示すように10分間隔のプルダウンメニュー(プルダウンリスト)が画面選択肢400として表示される。これにより、本体プログラムを利用する利用者が日付データを入力する際には、当該本体プログラムに組み込まれた画面選択肢表示プログラムにより表示された画面選択肢400において適切な時間を選択することにより容易に日付データを入力することが可能となる。
上記したように本実施形態においては、前述した第1の実施形態における入力チェックルールプログラムに加えて、データベース40に格納されているテーブルに保持されているデータ(テーブル格納データ)の解析結果が含まれたテーブル構造定義情報に基づいて、画面選択肢表示プログラムが入力補助プログラムとして生成される。
これにより、本実施形態においては、前述した第1の実施形態と比較して、データベース40に格納されているテーブルの構造だけでは取得できないデータの分布または間隔を実際にテーブルに保持されているデータを解析することによって取得し、当該解析結果に基づいて入力補助プログラム(画面選択肢表示プログラム)を自動的に生成することができる。このため、本実施形態においては、アプリケーションの生産効率を向上させることが可能となる。
なお、本願発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
10…コンピュータ、20…外部記憶装置、22…テーブル構造定義情報格納部、23…入力チェックルールテンプレート格納部、30,300…プログラム生成装置、31…全体制御部、32,301…テーブル情報取得部、33,303…データ項目仕様生成部、34…プログラム生成部、35…入力チェックルール生成部、40…データベース、302…データ解析部、304…画面選択子生成部。