(57)【特許請求の範囲】
【請求項１】
情報入力画面を介して入力された、データベースのテーブルの操作に係る操作情報と、データベースのテーブルに対する操作に係るＤＢアクセスプログラムの関連情報と、に基づいて、アクセス定義ファイルを出力するアクセス定義ファイル出力手段と、
前記アクセス定義ファイルに基づいて、発行予定のＳＱＬ文を組み立てるソースコード生成手段と、
を有し、
前記ソースコード生成手段は、前記アクセス定義ファイルに基づいて、前記テーブルの各カラムのデータの型を前記データベースに問い合わせ、問い合わせの結果得られた前記型に基づいて、型マッピング情報を参照し、前記プログラムのソースコードで使用する型を決定することを特徴とする情報処理装置。
【請求項２】
前記アクセス定義ファイル出力手段は、前記操作情報と、前記ＤＢアクセスプログラムの関連情報と、を読み込み、読み込んだ、前記操作情報と、前記ＤＢアクセスプログラムの関連情報と、をタグで収納した記載に変換したアクセス定義ファイルを出力し、
前記ソースコード生成手段は、前記アクセス定義ファイルを読み込み、前記タグが示す属性情報に基づいて、前記発行予定のＳＱＬ文を組み立てることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ソースコード生成手段は、前記型マッピング情報から取得したテストデータを用いて、前記発行予定のＳＱＬ文を、前記データベースに対して発行し、前記発行予定のＳＱＬ文に係る動作検証を行うことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記ソースコード生成手段は、前記動作検証の結果、正常に動作すると判断した場合、前記発行予定のＳＱＬ文と、前記決定した型と、前記プログラムのソースコードのテンプレートと、に基づいて、前記プログラムのソースコードを生成することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
情報処理装置における情報処理方法であって、
情報入力画面を介して入力された、データベースのテーブルの操作に係る操作情報と、データベースのテーブルに対する操作に係るＤＢアクセスプログラムの関連情報と、に基づいて、アクセス定義ファイルを出力するアクセス定義ファイル出力ステップと、
前記アクセス定義ファイルに基づいて、発行予定のＳＱＬ文を組み立てるソースコード生成ステップと、
を含み、
前記ソースコード生成ステップでは、前記アクセス定義ファイルに基づいて、前記テーブルの各カラムのデータの型を前記データベースに問い合わせ、問い合わせの結果得られた前記型に基づいて、型マッピング情報を参照し、前記プログラムのソースコードで使用する型を決定することを特徴とする情報処理方法。
【請求項６】
コンピュータを、
情報入力画面を介して入力された、データベースのテーブルの操作に係る操作情報と、データベースのテーブルに対するアクセスに係るプログラムの関連情報と、に基づいて、アクセス定義ファイルを出力するアクセス定義ファイル出力手段と、
前記アクセス定義ファイルに基づいて、発行予定のＳＱＬ文を組み立てるソースコード生成手段と、
して機能させるためのプログラムであって、
前記ソースコード生成手段は、前記アクセス定義ファイルに基づいて、前記テーブルの各カラムのデータの型を前記データベースに問い合わせ、問い合わせの結果得られた前記型に基づいて、型マッピング情報を参照し、前記プログラムのソースコードで使用する型を決定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
プログラミング言語の中には、データベース（以下、ＤＢという）への接続や、ＤＢで管理されているテーブルを操作するためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）が用意されているものがある。前記ＤＢへの接続や操作を行うアプリケーションを作成する際、このＡＰＩが用いられており、このようなＡＰＩ等を用いてＤＢへの接続やテーブル操作を行うプログラムをＤＢアクセスプログラムと称する。
【０００３】
また、開発者の負担軽減を目的とする、規則的にＤＢアクセスプログラムのソースコードの一部を自動生成する技術（特許文献１参照）や、プログラムで扱うデータと、ＤＢのデータとの間のマッピングを支援する技術が存在する。
【０００４】
【特許文献１】特開２００４−３０２８４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、近年のシステム開発は開発の規模が大きくなっていることに加え、技術面の仕様が高度化、複雑化しているため、大人数でチームを組み、チーム内の各メンバーが得意の技術分野毎に開発を分担する分業開発のスタイルが定着している。それ故、開発言語によって開発担当者が異なることが多く、分業できないと作業が非常にやり難かった（ＳＱＬが得意な開発者と、それ以外のプログラム言語が得意な開発者とは一般的に異なり、システム開発の現場では夫々担当が別であること多い。）。
【０００６】
また、既に構築されているＤＢを利用したシステム開発も多く、既存のＤＢの仕様に併せたＤＢアクセスプログラムを生成しなければならないことが多い。
【０００７】
また、システム開発では、固有の条件下におけるテーブル操作や、複数テーブルに跨った操作等、開発しているアプリケーションの仕様固有の複雑な操作を行うＤＢアクセスプログラムを生成せねばならない事が多い。しかしながら、例えば前記特許文献１は、１つのテーブルのレコードを単に全件参照するような単純な仕様のＤＢアクセスプログラムの生成しか対応できない。
また、システム開発者が前記単純な仕様のＤＢアクセスプログラムのソースコードを改変して複雑な操作を行うＤＢアクセスプログラムに修正することは不可能ではないが、開発に携わる不特定多数の開発者が、ＤＢアクセスプログラムのソースコードに手を加えることは、ソースコードの品質を落とすことに繋がる場合が多かった。
【０００８】
また、従来技術では、未検証のＳＱＬにより、実際に動かないＳＱＬのＤＢアクセスプログラムが存在しても、実行してみるまでエラーが出ず、バグの発見が遅れていた。
同様に、ＤＢアクセスプログラムの実行により得られたテーブルのレコードを格納するレコード格納プログラムの型マッピングが静的に決まっていない場合、実行時にマッピングを行う必要があり、型マッピングの失敗が発生する可能性があった。
また、システム開発過程や運用過程において、ＤＢ設計に変更が発生することは多く、その変更がソースコードに反映されていなくても、それを気付かせる技術がなかった。
【０００９】
本発明はこのような問題点に鑑みなされたもので、ＤＢにアクセスするプログラムを含むシステム開発において、分業開発を可能にすると共に、プログラムの質を均一にすることを目的とする。
【課題を解決するための手段】
【００１０】
そこで、本発明の情報処理装置は、情報入力画面を介して入力された、データベースのテーブルの操作に係る操作情報と、データベースのテーブルに対する操作に係るＤＢアクセスプログラムの関連情報と、に基づいて、アクセス定義ファイルを出力するアクセス定義ファイル出力手段と、前記アクセス定義ファイルに基づいて、発行予定のＳＱＬ文を組み立てるソースコード生成手段と、を有し、前記ソースコード生成手段は、前記アクセス定義ファイルに基づいて、前記テーブルの各カラムのデータの型を前記データベースに問い合わせ、問い合わせの結果得られた前記型に基づいて、型マッピング情報を参照し、前記プログラムのソースコードで使用する型を決定することを特徴とする。
【００１１】
また、本発明は、情報処理方法及びプログラムとしてもよい。
【発明の効果】
【００１２】
本発明によれば、ＤＢを操作するプログラムを含むシステム開発において、分業開発を可能にすると共に、プログラムの質を均一にすることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態について図面に基づいて説明する。
【００１４】
＜実施形態１＞
図１は、情報処理装置（コンピュータ）のハードウェア構成の一例を示す図である。図１に示されるように、情報処理装置１は、ハードウェア構成として、入力装置１１と、表示装置１２と、記録媒体ドライブ装置１３と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１５と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１６と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１７と、インターフェース装置１８と、ＨＤ（Ｈａｒｄ  Ｄｉｓｋ）１９と、を含む。
【００１５】
入力装置１１は、情報処理装置１の操作者が操作するキーボード及びマウス等で構成され、情報処理装置１に各種情報等を入力するのに用いられる。表示装置１２は、情報処理装置１の操作者が利用するディスプレイ等で構成され、各種情報（又は画面）等を表示するのに用いられる。
【００１６】
インターフェース装置１８は、情報処理装置１をネットワークに接続するネットワーク接続装置である。後述する情報処理装置１の機能又は後述するフローチャート等に係るプログラムは、例えば、ＣＤ−ＲＯＭ等の記録媒体１４によって情報処理装置１に提供されるか、ネットワーク等を通じてダウンロードされる。記録媒体１４は、記録媒体ドライブ装置１３にセットされ、例えばプログラム等が記録媒体１４から記録媒体ドライブ装置１３を介してＨＤ１９にインストールされる。
【００１７】
ＲＯＭ１５は、情報処理装置１の電源投入時に最初に読み込まれるプログラム（例えばブートプログラム等）等を記録する。ＲＡＭ１６は、情報処理装置１のメインメモリである。ＣＰＵ１７は、必要に応じて、ＨＤ１９よりプログラムを読み出して、ＲＡＭ１６に格納し、プログラムを実行することで、後述する機能の全て又は一部を提供したり、後述するフローチャート等を実行したりする。
【００１８】
なお、ＨＤ１９は、プログラム以外に、後述する図２に示すＤＢ、型マッピング情報、コードテンプレート等を記憶する。
【００１９】
図２は、情報処理装置の機能構成の一例を示す図である。図２に示されるように、情報処理装置１は、機能構成として、ＤＢアクセサ定義出力部２１と、ソースコード生成部２２と、ＤＢ２３と、を含む。ここで、本実施形態において、ＤＢ２３は、ＤＢＭＳ（ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）のことをいうものとする。
【００２０】
ＤＢアクセサ定義出力部２１は、ＤＢ操作情報３１と、ＤＢアクセスプログラムジェネレート情報３２と、に基づいて、ＤＢアクセサ定義ファイル３３を生成する。なお、このＤＢアクセサ定義ファイル３３を生成する処理の詳細は、後述する図３〜図５を用いて説明する。
【００２１】
ソースコード生成部２２は、ＤＢアクセサ定義ファイル３３に基づいて、発行予定のＳＱＬ文（以下、発行予定ＳＱＬ文という）を組み立てる。なお、この発行予定ＳＱＬ文を組み立てる処理の詳細は、後述する図６及び図７を用いて説明する。
【００２２】
また、ソースコード生成部２２は、ＤＢアクセサ定義ファイル３３に基づいて、ＤＢ２３にテーブルの各カラムのデータの型を問い合わせ、問い合わせの結果得られたデータの型に基づいて、型マッピング情報３４を参照し、テーブルの操作に係るプログラム（より具体的には、レコード格納プログラム３７）のソースコードで使用する型を決定する。なお、このテーブルの操作に係るプログラムのソースコードで使用する型を決定する処理の詳細は、後述する図８及び図９を用いて説明する。
【００２３】
また、ソースコード生成部２２は、型マッピング情報３４から取得したテストデータを用いて、発行予定ＳＱＬ文を、ＤＢ２３に対して発行し、前記ＳＱＬ文の動作検証を行う。なお、このＳＱＬ文の動作検証を行う処理の詳細は、後述する図１０を用いて説明する。
【００２４】
ソースコード生成部２２は、前記動作検証の結果、前記ＳＱＬ文が正常に動作すると判断した場合、前記発行予定ＳＱＬ文と、前記決定した型と、テーブルの操作に係るプログラムのソースコードのテンプレート（コードテンプレート３５）と、に基づいて、テーブルの操作に係るプログラム（より具体的には、ＤＢアクセスプログラム３６、レコード格納プログラム３７）のソースコードを生成する。なお、ソースコードを生成する処理の詳細は、後述する図１１〜図１５を用いて説明する。
【００２５】
次に、ＤＢアクセサ定義ファイル３３を生成する処理の詳細を図３〜図５を用いて説明する。図３は、ＤＢアクセサ定義ファイルを生成する処理の一例を示す図である。図４は、情報入力画面の一例を示す図（その１）である。図５は、ＤＢアクセス定義ファイルの一例を示す図である。
ＤＢアクセサ定義出力部２１は、図４に示す情報入力画面を介して入力された、ＤＢ操作情報３１と、ＤＢアクセスプログラムジェネレート情報３２と、に基づいて、図５に示すようなＤＢアクセサ定義ファイル３３を生成する。ここで、ＤＢ操作情報３１とは、ＤＢ２３のテーブル名や、ＳＱＬ文に関する情報である。また、ＤＢアクセスプログラムジェネレート情報３２とは、データベースのテーブルに対する操作に係るＤＢアクセスプログラムに関する情報であって、より具体的には、このプログラム（本実施形態の例では、ＤＢアクセスプログラム３６、レコード格納プログラム３７）の名称、コメント、メソッド名、である。なお、図４に示す情報入力画面は、ＤＢアクセサ定義出力部２１が、表示装置１２に表示させ、入力された情報の取得やその表示制御等を行う。
【００２６】
ユーザ（開発者）が、図４に示す情報入力画面を介して「テーブル名（図４の例では"Ｅｍｐ"）」、「ＳＱＬ文に関する情報（図４の例では"ＷＨＥＲＥ  ＳＡＬ＝＆ｓａｌ  ＄ｏｒｄｅｒ"）」、「アクセサ名（図４の例では"ＥｍｐＴａｂｌｅＡｃｃｅｓｓｏｒ"）」、「コメント（図４の例では"従業員名を給与で検索する"）」、「メソッド名（図４の例では"ｅｘｅｃｕｔｅＱｕｅｒｙ"）」、を入力する。即ち、ＤＢ操作情報３１及びＤＢアクセスプログラムジェネレート情報３２をＤＢアクセサ定義出力部２１へ渡す。ＤＢアクセサ定義出力部２１は、受信したＤＢ操作情報３１及びＤＢアクセスプログラムジェネレート情報３２をタグで収納したＸＭＬ形式で表現し、図５に示すようなＤＢアクセサ定義ファイル３３を生成する。例えば、図４に示す情報入力画面を介して入力されたテーブル名（図４の例では"Ｅｍｐ"）は、図５に示すＤＢアクセサ定義ファイル３３においてテーブル名（属性情報）を識別するタグ（図５の例では"＜ｔａｂｌｅ−ｎａｍｅ＞Ｅｍｐ＜／ｔａｂｌｅ−ｎａｍｅ＞"）を用いて表現される。なお、図４における各入力項目と図５におけるタグとの対応関係が定義されたファイルは予め用意されているものとする。ＤＢアクセサ定義出力部２１は、前記ファイルを参照し、図４に示す入力画面を介して受信したＤＢ操作情報３１及びＤＢアクセスプログラムジェネレート情報３２を、タグで囲んで出力することで、図５に示すＤＢアクセサ定義ファイル３３を生成する。
【００２７】
ＤＢアクセサ定義出力部２１が上述したような処理によってＤＢアクセサ定義ファイル３３を生成することで、図４に示す情報入力画面においてユーザが「場所ＩＤ」を指定して置き換えを指示し、長いＳＱＬ文中の一部だけ変更した複数のＤＢアクセスプログラム（メソッド）を定義するような場合でも、煩雑さを排除し、保守性を向上させることができる。例えば図４のように、「メソッド名」が"ｅｘｅｃｕｔｅＱｕｅｒｙ"の「ＳＱＬ文に関する情報」に、場所ＩＤ"＄ｏｒｄｅｒ"を定義し、「メソッド名」が"ｅｘｅｃｕｔｅＱｕｅｒｙＯｒｄｅｒ"、における「埋め込み先」に"ｅｘｅｃｕｔｅＱｕｅｒｙ"及び"場所ＩＤ：ｏｒｄｅｒ"を、「ＳＱＬに関する情報」に"ＯＲＤＥＲ  ＢＹ  ＥＮＡＭＥ"を、定義した場合、ＤＢアクセサ定義出力部２１は、メソッド"ｅｘｅｃｕｔｅＱｕｅｒｙ"で定義するＳＱＬ文に"ＯＲＤＥＲ  ＢＹ  ＥＮＡＭＥ"を追加したＳＱＬ文を含むＤＢアクセスプログラムのメソッド"ｅｘｅｃｕｔｅＱｕｅｒｙＯｒｄｅｒ"を生成する。つまり、ＤＢアクセサ定義出力部２１は、場所ＩＤを利用することで、ＳＱＬ文を継承するＤＢアクセスプログラムのメソッドを生成する。
【００２８】
より具体的には、ＤＢアクセサ定義出力部２１は、定義された前記情報を読み込むと、継承元となる"ｅｘｅｃｕｔｅＱｕｅｒｙ"メソッドの「ＳＱＬ文に関する情報」を収納するタグ（図５の例では"＜ｑｕｅｒｙ−ｓｔｒｉｎｇ＞＜／ｑｕｅｒｙ−ｓｔｒｉｎｇ＞"）に場所ＩＤを示す"＄ｏｒｄｅｒ"を記載し、継承先となる"ｅｘｅｃｕｔｅＱｕｅｒｙＯｒｄｅｒ"メソッドの場所ＩＤを収納するタグ（図５の例では"＜ｑｕｅｒｙ−ｓｔｒｉｎｇ  ｐｌａｃｅ−ｉｄ＝"ｏｒｄｅｒ"＞＜／ｑｕｅｒｙ−ｓｔｒｉｎｇ＞"）に場所ＩＤ（"＄ｏｒｄｅｒ"）へ埋め込む情報（図５の例では"ＯＲＤＥＲ  ＢＹ  ＥＮＡＭＥ"）を定義し、図５に示すＤＢアクセサ定義ファイル３３を生成する。なお、図５のＤＢアクセサ定義ファイル３３は、ＳＱＬ文における継承関係をタグに付された属性情報や段落の階層でもって表現した入れ子構造をとって表現しているが、タグの属性情報でもってＳＱＬ文の継承関係を識別できるのであれば、図５に示した構造に限定されない。
【００２９】
数万行にも及ぶソースコードからなる大規模なシステムのプログラムを大人数で開発する場合、自由にソースコードを書いて開発していく方法ではプログラムの質が保てず、バグも発生しやすかった。しかしながら、ＤＢアクセサ定義出力部２１が、図４に示す情報入力画面を介して入力された、ＤＢ操作情報３１と、ＤＢアクセスプログラムジェネレート情報３２と、に基づいて、図５に示すようなＤＢアクセサ定義ファイル３３を生成することにより、不必要に人がソースコードを書く（又は編集する）機会を与えないので、質の向上に繋がる。また、ユーザ（開発者）は、例えばＪａｖａ（登録商標）等のプログラムの知識を必要とせずとも、図４に示される情報入力画面に、ＤＢアクセスプログラムジェネレート情報３２と、ＳＱＬ文の一部を含むＤＢ操作情報３１、を入力するだけでよい（つまり、ＳＱＬの知識を有していればよい）ので、例えば、Ｊａｖａ技術者と、ＳＱＬ技術者と、の分業開発が容易となる。また、ユーザは、情報入力画面を利用して、一旦入力したＳＱＬ文に関する情報等を編集することもできるつまり、ユーザは、情報入力画面を利用して、自由にＳＱＬ文を書くこともできる。また、場所ＩＤを利用することで、ＳＱＬ文を継承するＤＢアクセスプログラムを生成することが可能となるため、重複したＳＱＬ文を繰り返し定義する必要が無くなり、煩雑さが排除され、保守性が向上する。
【００３０】
次に、発行予定ＳＱＬ文を組み立てる処理の詳細を図５、図６及び図７を用いて説明する。図６は、発行予定ＳＱＬ文を組み立てる処理の一例を示す図である。図７は、組み立てられた発行予定のＳＱＬの一例を示す図である。
ソースコード生成部２２は、ＤＢアクセサ定義ファイル３３（より具体的にはＤＢアクセサ定義ファイル３３に含まれるＤＢ操作情報と、ＤＢアクセスプログラムジェネレート情報と、）に基づいて、ＤＢアクセスプログラム３６、レコード格納プログラム３７内で発行予定（つまり、ＤＢアクセスプログラム３６のソースコード、レコード格納プログラム３７のソースコードに含まれる予定）の図７に示されるような発行予定ＳＱＬ文３８をメソッド単位で組み立てる。
【００３１】
図５に示すＤＢアクセサ定義ファイル３３から図７に示す発行予定ＳＱＬ文を組み立てる処理の詳細を説明する。ソースコード生成部２２は、受信した図５に示すＤＢアクセサ定義ファイル３３を読み込み、ＤＢアクセサ定義ファイル３３において上位の階層にある発行予定ＳＱＬ文を含むメソッドから生成する。より具体的には、まず、ソースコード生成部２２は、図５に示すＤＢアクセサ定義ファイルを、上位の階層のクエリ要素から読み込み、"＜ｔａｂｌｅ−ｎａｍｅ＞Ｅｍｐ＜／ｔａｂｌｅ−ｎａｍｅ＞"、"＜ｑｕｅｒｙ  ｎａｍｅ＝"ｅｘｅｃｕｔｅＱｕｅｒｙ"  ｔｙｐｅ＝"ｓｅｌｅｃｔ"＞"を把握し、Ｅｍｐテーブルに対して参照の操作（ＳＥＬＥＣＴ）を行うメソッド"ｅｘｅｃｕｔｅＱｕｅｒｙ"の生成を開始する。ソースコード生成部２２は、ＤＢ２３のメタ情報（構成情報）を参照し、Ｅｍｐテーブルのカラムに関する情報を得る。なお、データベースのメタ情報を参照するインターフェースは、ＡＰＩとして用意された既知の技術であり、このＡＰＩを用いてメタ情報を参照し、該当するテーブルのカラムに関する情報を得る。従って、ソースコード生成部２２は、メソッド名"ｅｘｅｃｕｔｅＱｕｅｒｙ"、ＳＱＬ文"ＳＥＬＥＣＴ  ＥＭＰＮＯ，ＥＮＡＭＥ，ＳＡＬ  ＦＲＯＭ  ＥＭＰ"とＳＱＬ文を組み立てる。同様に、ソースコード生成部２２は、"＜ｑｕｅｒｙ  ｎａｍｅ＝"ｅｘｅｃｕｔｅＱｕｅｒｙ"＞"を継承したより下位の階層にある"＜ｑｕｅｒｙ−ｓｔｒｉｎｇ＞＜／ｑｕｅｒｙ−ｓｔｒｉｎｇ＞"及び"＜ｐａｒａｍ−ａｔｔｒ−ｌｉｓｔ＞＜／ｐａｒａｍ−ａｔｔｒ−ｌｉｓｔ＞"を把握し、タグに収納された要素を組立て途中にある前記ＳＱＬ文に対して追加する。従って、ソースコード生成部２２は、図７に示す発行予定ＳＱＬ文（メソッド名："ｅｘｅｃｕｔｅＱｕｅｒｙ（Ｃｏｎｎｅｃｔｉｏｎ  ｃｏｎ，Ｉｎｔｅｇｅｒ  ｓａｌ）"、ＳＱＬ文："ＳＥＬＥＣＴ  ＥＭＰＮＯ，ＥＮＡＭＥ，ＳＡＬ  ＦＲＯＭ  ＥＭＰ  ＷＨＥＲＥ  ＳＡＬ＝？"）を生成する。
【００３２】
また上述の処理同様、ソースコード生成部２２は、図５において定義されたメソッド間の継承関係に基づき、"ｅｘｅｃｕｔｅＱｕｅｒｙ"メソッドに含まれるＳＱＬ文を継承するメソッドの生成を開始する。より具体的には、ソースコード生成部２２は、図５において"＜ｑｕｅｒｙ  ｎａｍｅ＝"ｅｘｅｃｕｔｅＱｕｅｒｙ"＞"より下位の階層にあり、クエリの継承を意味するタグ"＜ｏｐｔｉｏｎａｌ−ｑｕｅｒｙ  ｎａｍｅ＝"ｅｘｅｃｕｔｅＱｕｅｒｙＯｒｄｅｒ"＞＜／ｏｐｔｉｏｎａｌ−ｑｕｅｒｙ＞"に収納された要素から、場所ＩＤ"＄ｏｒｄｅｒ"を属性として持つ要素を探す。従って、ソースコード生成部２２は、図５において"ｐｌａｃｅ−ｉｄ＝"ｏｒｄｅｒ""である"＜ｑｕｅｒｙ−ｓｔｒｉｎｇ＞"を持つクエリとして"＜ｏｐｔｉｏｎａｌ−ｑｕｅｒｙ ｎａｍｅ＝"ｅｘｅｃｕｔｅＱｕｅｒｙＯｒｄｅｒ"＞＜／ｏｐｔｉｏｎａｌ−ｑｕｅｒｙ＞"を見つけ、＄ｏｒｄｅｒに"ＯＲＤＥＲ  ＢＹ  ＥＮＡＭＥ"が埋め込まれた発行予定ＳＱＬ文を組み立てる。また、ソースコード生成部２２は、場所ＩＤに埋め込まれる文字列の中に更に場所ＩＤが定義されている場合、上述の情報処理同様に更に子要素を検索し、継承関係にあるＳＱＬ文を組み立てる。
【００３３】
従って、ソースコード生成部２２が、ＤＢアクセサ定義ファイル３３に基づいて、発行予定ＳＱＬ文３８を組み立てることによって、ユーザ（開発者）は、図４に示したように情報入力画面において、ＳＱＬ文全てを手書きで入力せずとも、例えばＳＱＬ文の一部を入力するだけで、発行予定のＳＱＬ文を組み立てることができる。
【００３４】
次に、テーブルの操作に係るプログラムのソースコードで使用する型を決定する処理の詳細を図８及び図９を用いて説明する。図８は、テーブルの操作に係るプログラムのソースコードで使用する型を決定する処理の一例を示す図（その１）である。図９は、型マッピング情報の一例を示す図である。
シーケンスＳＱ１において、ソースコード生成部２２は、ＤＢアクセサ定義ファイル３３に基づいて、ＤＢ２３へ、前記発行予定のＳＱＬ文をＤＢ２３へ発行し、その発行結果であるテーブルの各カラムのデータの型を問い合わせる。例えば、ソースコード生成部２２は、ＤＢアクセサ定義ファイル３３に基づいて、図７に記載された発行予定ＳＱＬ文をＤＢ２３へ発行し、ＥＭＰテーブルのＥＭＰＮＯのデータの型についての問い合わせをＤＢ２３に対して行う。
【００３５】
続いて、シーケンスＳＱ２において、ソースコード生成部２２は、ＤＢ２３より、問い合わせの結果（返答）を受け取る。より具体的に説明すると、ソースコード生成部２２は、データベースのメタ情報（構成情報）を参照し、前記問い合わせたカラムのデータの型に関する情報を得る。なお、データベースのメタ情報を参照するインターフェースは、ＡＰＩで用意されており、既知の技術である。前記ＤＢ２３のメタ情報は、このＡＰＩを用いてメタ情報を参照し、当該カラムのデータの型に関する情報を得ている。例えば、ソースコード生成部２２は、上記問合せの結果に対し、ＤＢ２３のメタ情報を参照して、ＥＭＰテーブルのＥＭＰＮＯのデータの型がＮＵＭＥＲＩＣ（４，０）等という情報を受け取る。
【００３６】
続いて、シーケンスＳＱ３において、ソースコード生成部２２は、問い合わせの結果得られたカラムのデータの型に関する情報（例えば「ＥＭＰ．ＥＭＰＮＯの型はＮＵＭＥＲＩＣ（４，０）」）に基づいて、図９に示される型マッピング情報３４を参照し、テーブルの操作に係るプログラム（より具体的には、レコード格納プログラム３７）のソースコードで使用する型を決定する。例えば、ソースコード生成部２２は、上記例のようにカラムのデータの型がＮＵＭＥＲＩＣである場合、図９より、ＮＵＭＥＲＩＣに対応するレコード格納プログラム３７のソースコードで使用する型を「Ｉｎｔｅｇｅｒ」であると決定する。なお、図９の例では、Ｊａｖａと、ＳＱＬと、の間の型のマッピング情報が記述されている。
【００３７】
ＤＢには一般的に膨大なテーブルとカラムが存在するため、ＤＢを扱うシステムにおいてカラム単位で型をマッピングすることは非常に困難である。本実施形態では、ソースコード生成部２２が、発行予定ＳＱＬ文をＤＢ２３へ発行した結果、即ちテーブルのカラムのデータの型を予め問合せており、その問い合わせで得たカラムのデータの型に関する情報と型マッピング情報３４を用いて異なる言語間の型のマッピングを行っているので、カラム単位でデータの型をマッピングする必要がない。また、ソースコード生成部２２は、ＤＢ２３に一旦問い合わせを行い、その結果に基づき型マッピング情報３４を参照し、異なる言語間の型のマッピングを行っているので、仮にＤＢ２３の設計等が変更された場合でも、その変更に対応することができる。つまり、ＤＢ２３の設計等の変更に伴う、レコード格納プログラム３７のソースコードの変更（又は修正）漏れを防ぐことができる。
【００３８】
次に、ＳＱＬ文の動作検証を行う処理の詳細を、図１０を用いて説明する。図１０は、ＳＱＬ文の動作検証を行う処理の一例を示す図である。
シーケンスＳＱ１１において、ソースコード生成部２２は、型マッピング情報３４よりテストデータ（例えば、0）を取得する。
続いて、シーケンスＳＱ１２において、ソースコード生成部２２は、取得したテストデータを用いて、発行予定ＳＱＬ文３８をＤＢ２３に対して発行する。
【００３９】
続いて、シーケンスＳＱ１３において、ソースコード生成部２２は、ＤＢ２３より、発行したＳＱＬ文に対する結果を受け取る。例えば、ＳＱＬ文の結果が正常に返ってくる、又はエラーが発生する等がある。）
ソースコード生成部２２が、発行予定ＳＱＬ文３８の動作検証をＤＢアクセスプログラム３６、レコード格納プログラム３７の作成前に行っておくことによって、これらのプログラムの質を高めることができる。
【００４０】
次に、ＤＢアクセスプログラム３６、レコード格納プログラム３７のソースコードを生成する処理の詳細を、図１１〜図１５を用いて説明する。図１１は、ＤＢアクセスプログラム、レコード格納プログラムのソースコードを生成する処理の一例を示す図である。図１２及び図１３は、コードテンプレートの一例を示す図である。図１４は、ＤＢアクセスプログラムの一例を示す図である。図１５は、レコード格納プログラムの一例を示す図である。
ソースコード生成部２２は、発行予定ＳＱＬ文３８の動作検証の結果、発行予定ＳＱＬ文３８が正常に動作すると判断した場合、発行予定ＳＱＬ文３８と、前記決定した型と、図１２及び図１３に示されるコードテンプレート３５1と、コードテンプレート３５2と、に基づいて、図１４に示されるようなＤＢアクセスプログラム３６、図１５に示されるようなレコード格納プログラム３７のソースコードを生成する。ここで、コードテンプレート３５は、テーブルの操作に係るプログラムのソースコードのテンプレートである。
【００４１】
従って、上述したように本実施形態によって生成されたＤＢアクセスプログラム３６を実行すると、その実行結果によって得られたレコードはレコード格納プログラム３７に格納される。つまり、システム開発者が、ＤＢアクセサ定義出力部２１の機能の一部である情報入力画面へ任意のＳＱＬ文を入力すると、ＤＢの操作を行うＤＢアクセスプログラム３６が生成され、ＤＢアクセサプログラム３６の実行結果はレコード格納プログラム３７によって格納される。よって、ＤＢを操作するアプリケーションを作成する場合、これらＤＢアクセスプログラム３６及びレコード格納プログラム３７が用意する機能（例えばメソッド、フィールド）を用いればよい。
【００４２】
以上、上述したように、本実施形態によれば、ＤＢを操作するプログラムを含むシステム開発において、分業開発を可能にすると共に、プログラムの質を均一にすること（又はプログラムの質を向上すること）ができる。
【００４３】
＜実施形態２＞
上述した実施形態では、ＤＢ２３のテーブルに紐付けて、ＤＢにアクセスするプログラムを生成する例を示した。しかしながら、本実施形態では、例えばレコード格納プログラム（レコード格納クラス）に格納できる対象が必ずＤＢ２３に存在するテーブルのカラムと対応付かなくてもよい例を示す。つまり、本実施形態によれば、関数や演算の結果の様なものもレコード格納クラスの一属性として扱うことができるようになる。
なお、以下では、上述した実施形態とは異なる点を主に説明する。
【００４４】
図１６は、情報入力画面の一例を示す図（その２）である。本実施形態のＤＢアクセサ定義出力部２１は、４１に示されるように、例えば関数や演算の結果のような、ＤＢ２３のカラムにない項目の情報であっても、情報入力画面を介して、ＳＱＬ文に関連する情報として受け取り、ＤＢアクセサ定義ファイル３３を作成する。ソースコード生成部２２は、ＤＢアクセサ定義ファイル３３に基づき、発行予定ＳＱＬ文３８を生成する。
【００４５】
図１７は、テーブルの操作に係るプログラムのソースコードで使用する型を決定する処理の一例を示す図（その２）である。
シーケンスＳＱ２１において、ソースコード生成部２２は、発行予定ＳＱＬ文３８に含まれるＳＱＬ文を、ＤＢ２３に対して発行する。より具体的に説明すると、ソースコード生成部２２は、発行予定ＳＱＬ文３８に含まれるＳＱＬ文
「
ＳＥＬＥＣＴ  ＥＮＡＭＥ，
ＥＭＰＮＯ＋１００  ＡＳ  ＥＭＰＮＯ＿ＮＥＷ
ＦＲＯＭ  ＥＭＰ
」
等をＤＢ２３に対して発行する。
【００４６】
続いて、シーケンスＳＱ２２において、ソースコード生成部２２は、ＤＢ２３より、発行したＳＱＬ文に対する結果（返答）を受け取る。より具体的に説明すると、ソースコード生成部２２は、ＤＢ２３より、例えば、「ＥＮＡＭＥはＶＡＲＣＨＡＲ（１０，０）、ＥＭＰＮＯ＿ＮＥＷはＮＵＭＥＲＩＣ（４，０）」等の結果を受け取る。
【００４７】
続いて、シーケンスＳＱ２３において、ソースコード生成部２２は、受け取った結果（例えば、「ＥＮＡＭＥはＶＡＲＣＨＡＲ（１０，０）、ＥＭＰＮＯ＿ＮＥＷはＮＵＭＥＲＩＣ（４，０）」）に基づいて、型マッピング情報３４を参照し、テーブルの操作に係るプログラム（より具体的には、レコード格納プログラム３７）のソースコードで使用する型を決定する。より具体的に説明すると、ソースコード生成部２２は、ＮＵＭＥＲＩＣ（４，０）に対応するＪａｖａ型はＩｎｔｅｇｅｒ、ＶＡＲＣＨＡＲ（１０，０）に対応するＪａｖａ型はＳｔｒｉｎｇ等と決定する。
【００４８】
以上、上述したように本実施形態によれば、自由に記述されたＳＱＬ文（又はＳＱＬ文の一部）から、レコード格納プログラム等を作成するので、テーブルやカラムとして宣言されていない項目（例えば関数の結果や、演算の結果等）について、レコード格納プログラム等を作成することができる。
【００４９】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００５０】
【図１】情報処理装置のハードウェア構成の一例を示す図である。
【図２】情報処理装置の機能構成の一例を示す図である。
【図３】ＤＢアクセサ定義ファイルを生成する処理の一例を示す図である。
【図４】情報入力画面の一例を示す図（その１）である。
【図５】ＤＢアクセス定義ファイルの一例を示す図である。
【図６】発行予定ＳＱＬ文を組み立てる処理の一例を示す図である。
【図７】組み立てられた発行予定のＳＱＬの一例を示す図である。
【図８】テーブルのアクセスに係るプログラムのソースコードで使用する型を決定する処理の一例を示す図（その１）である。
【図９】型マッピング情報の一例を示す図である。
【図１０】ＳＱＬ文の動作検証を行う処理の一例を示す図である。
【図１１】ＤＢアクセスプログラム、レコード格納プログラムのソースコードを生成する処理の一例を示す図である。
【図１２】コードテンプレートの一例を示す図（その１）である。
【図１３】コードテンプレートの一例を示す図（その２）である。
【図１４】ＤＢアクセスプログラムの一例を示す図である。
【図１５】レコード格納プログラムの一例を示す図である。
【図１６】情報入力画面の一例を示す図（その２）である。
【図１７】テーブルのアクセスに係るプログラムのソースコードで使用する型を決定する処理の一例を示す図（その２）である。
【符号の説明】
【００５１】
１    情報処理装置
１１  入力装置
１２  表示装置
１３  記録媒体ドライブ装置
１４  記録媒体
１５  ＲＯＭ
１６  ＲＡＭ
１７  ＣＰＵ
１８  インターフェース装置
１９  ＨＤ
【図１】
0005190241.tif 000002
【図２】
0005190241.tif 000003
【図３】
0005190241.tif 000004
【図４】
0005190241.tif 000005
【図５】
0005190241.tif 000006
【図６】
0005190241.tif 000007
【図７】
0005190241.tif 000008
【図８】
0005190241.tif 000009
【図９】
0005190241.tif 000010
【図１０】
0005190241.tif 000011
【図１１】
0005190241.tif 000012
【図１２】
0005190241.tif 000013
【図１３】
0005190241.tif 000014
【図１４】
0005190241.tif 000015
【図１５】
0005190241.tif 000016
【図１６】
0005190241.tif 000017
【図１７】
0005190241.tif 000018