(57)【特許請求の範囲】
【請求項１】
情報処理装置のプログラム生成手段により生成されたプログラムに含まれる出力定義情報を用いて、画面の出力情報を送信する出力情報送信手段と、前記出力情報送信手段により送信された出力情報を用いて出力された画面からの入力情報を受信する入力情報受信手段と、前記情報処理装置のプログラム生成手段により生成されたプログラムに含まれる入力定義情報と、前記入力情報受信手段により受信した入力情報と、前記情報処理装置のプログラム生成手段により生成されたプログラムに含まれるクエリとを用いて、当該クエリを変更するクエリ変更手段と、前記クエリ変更手段により変更されたクエリを用いて複数のテーブルを有するデータベースを操作するデータベース操作手段とを備えるアプリケーションサーバで動作するプログラムを生成する前記情報処理装置であって、
前記複数のテーブルのデータを用いるために定義された複数のテーブルのデータ項目を含むデータモデル定義を管理するデータモデル定義管理手段と、
画面からの入力を受け付けるための前記入力定義情報と、前記データベースのデータを含む画面を出力するための前記出力定義情報とを管理する入出力定義管理手段と、
前記データモデル定義管理手段により管理されているデータモデル定義のデータ項目と、当該データモデル定義で用いる前記データベースの操作に用いるクエリを任意に入力可能に表示する表示手段と、
前記表示手段により入力された前記データベースの操作に用いるクエリを管理するクエリ管理手段と、
前記入出力定義管理手段により管理される入力定義情報と出力定義情報と、前記データモデル定義管理手段により管理されるデータモデル定義と、前記クエリ管理手段により管理されるクエリとを用いたプログラムを生成するプログラム生成手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記データモデル定義管理手段は、前記複数のテーブルのデータを用いるために定義された複数のテーブルのデータ項目を含むデータモデル定義と、前記複数のテーブルごとのデータモデル定義とを管理する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記クエリ管理手段に管理されるクエリは、前記入力情報に対応するパラメータを含み、
前記クエリ変更手段は、当該パラメータに対応する入力情報の値に従って、当該クエリを変更すること
を特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記クエリ変更手段は、当該クエリに含まれるパラメータを当該パラメータに対応する入力情報の値を用いて置換すること
を特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記クエリ変更手段は、当該パラメータの値が空または取得できなかった場合、当該クエリの当該パラメータを含む行を削除または無効化すること
を特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前記クエリ変更手段は、当該クエリにおけるパラメータの前または／かつ後に所定の文字列が存在する場合、当該所定の文字列に従って、当該クエリを変更すること
を特徴とする請求項３乃至５のいずれか１項記載の情報処理装置。
【請求項７】
前記クエリ管理手段に管理されるクエリに含まれるパラメータに対して、テストする値の設定を受け付けるテスト値設定受付手段と、
前記テスト値設定受付手段により受け付けたテスト値に従って、当該クエリを変更するテストクエリ変更手段と
を更に備えることを特徴とする請求項３乃至６のいずれか１項記載の情報処理装置。
【請求項８】
前記テスト値設定受付手段により設定を受け付けた値を識別して前記テストクエリ変更手段により変更されたクエリを表示する、前記クエリ管理手段に管理されるクエリと当該クエリに含まれるパラメータの近傍に前記テスト値設定受付手段により設定を受け付けた値とを表示する、および前記クエリ管理手段に管理されるクエリを前記テスト値設定受付手段によりＮＵＬＬ値の設定されたパラメータを含む当該クエリの行を取消線で取り消して表示する、表示方法のうち少なくとも１つの表示方法を用いて表示するクエリ表示手段を
更に備えることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記テストクエリ変更手段により変更されたクエリを用いて、テストとしてクエリを実行するために、コミットせずにデータベースを操作するテスト操作手段と、
前記テスト操作手段によりデータベースから出力されたクエリ実行結果を取得する実行結果取得手段と
前記実行結果取得手段により取得されたクエリ実行結果を表示する実行結果表示手段と
を更に備えることを特徴とする請求項７または８に記載の情報処理装置。
【請求項１０】
前記実行結果取得手段により取得されたクエリ実行結果と前記出力定義情報とを用いて、画面の出力情報を生成する出力情報生成手段と、
前記出力情報生成手段により生成された出力情報を用いて、画面を表示する画面表示手段と
を更に備えることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記クエリ変更手段により変更されたクエリを用いて行われるデータベースの操作は、検索、追加、更新、削除のいずれかであること
を特徴とする請求項１乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
情報処理装置のプログラム生成ステップにより生成されたプログラムに含まれる出力定義情報を用いて、画面の出力情報を送信する出力情報送信手段と、前記出力情報送信手段により送信された出力情報を用いて出力された画面からの入力情報を受信する入力情報受信手段と、前記情報処理装置のプログラム生成ステップにより生成されたプログラムに含まれる入力定義情報と、前記入力情報受信手段により受信した入力情報と、前記情報処理装置のプログラム生成ステップにより生成されたプログラムに含まれるクエリとを用いて、当該クエリを変更するクエリ変更手段と、前記クエリ変更手段により変更されたクエリを用いて複数のテーブルを有するデータベースを操作するデータベース操作手段とを備えるアプリケーションサーバで動作するプログラムを生成する前記情報処理装置における処理方法であって、
前記情報処理装置が、
前記複数のテーブルのデータを用いるために定義された複数のテーブルのデータ項目を含むデータモデル定義を管理するデータモデル定義管理ステップと、
画面からの入力を受け付けるための前記入力定義情報と、前記データベースのデータを含む画面を出力するための前記出力定義情報とを管理する入出力定義管理ステップと、
前記データモデル定義管理ステップにより管理されているデータモデル定義のデータ項目と、当該データモデル定義で用いる前記データベースの操作に用いるクエリを任意に入力可能に表示する表示ステップと、
前記表示ステップにより入力された前記データベースの操作に用いるクエリを管理するクエリ管理ステップと、
前記入出力定義管理ステップにより管理される入力定義情報と出力定義情報と、前記データモデル定義管理ステップにより管理されるデータモデル定義と、前記クエリ管理ステップにより管理されるクエリとを用いたプログラムを生成するプログラム生成ステップと
を実行することを特徴とする処理方法。
【請求項１３】
情報処理装置のプログラム生成手段により生成されたプログラムに含まれる出力定義情報を用いて、画面の出力情報を送信する出力情報送信手段と、前記出力情報送信手段により送信された出力情報を用いて出力された画面からの入力情報を受信する入力情報受信手段と、前記情報処理装置のプログラム生成手段により生成されたプログラムに含まれる入力定義情報と、前記入力情報受信手段により受信した入力情報と、前記情報処理装置のプログラム生成手段により生成されたプログラムに含まれるクエリとを用いて、当該クエリを変更するクエリ変更手段と、前記クエリ変更手段により変更されたクエリを用いて複数のテーブルを有するデータベースを操作するデータベース操作手段とを備えるアプリケーションサーバで動作するプログラムを生成する前記情報処理装置で実行可能なプログラムであって、
前記情報処理装置を、
前記複数のテーブルのデータを用いるために定義された複数のテーブルのデータ項目を含むデータモデル定義を管理するデータモデル定義管理手段と、
画面からの入力を受け付けるための前記入力定義情報と、前記データベースのデータを含む画面を出力するための前記出力定義情報とを管理する入出力定義管理手段と、
前記データモデル定義管理手段により管理されているデータモデル定義のデータ項目と、当該データモデル定義で用いる前記データベースの操作に用いるクエリを任意に入力可能に表示する表示手段と、
前記表示手段により入力された前記データベースの操作に用いるクエリを管理するクエリ管理手段と、
前記入出力定義管理手段により管理される入力定義情報と出力定義情報と、前記クエリ管理手段により管理されるクエリとを含むプログラムを生成するプログラム生成手段
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを生成するための情報処理装置、情報処理装置の処理方法、およびプログラムに関する。
【背景技術】
【０００２】
アプリケーションで扱うデータの永続化はリレーショナルデータベース（以降、データベースと呼ぶ）を使用するのが一般的である。データベースへの問い合わせ言語にはＳＱＬ文を用いる。ＳＱＬ文はＷｅｂアプリケーションのプログラムソースコードに埋め込まれることが多いが、ユーザからＷｅｂアプリケーションの画面から受け取った入力情報を用いて、ＳＱＬ文は動的に変更されるため、データベースに対して実行されるＳＱＬ文は毎回同じではない。
【０００３】
このような課題に対して、従来は次の２つの方法がとられていた。１つ目の方法は、開発者ソースコードの中でプログラムロジックを組み動的にＳＱＬ文を生成する方法である。２つ目の方法は、特許文献１のようなＯ／Ｒマッピングを用いて、ＳＱＬ文をソースコード内に埋め込まず、動的にＳＱＬ文を生成する方法である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−５９８４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、１つ目の方法の場合、開発者に対してＳＱＬに関する技術とプログラミング技術の両方を要求することになる問題があった。また、ソースコード内にＳＱＬ文を埋め込むため、保守性が低いという問題もあった。
【０００６】
また、２つ目の方法の場合、１つ目の方法に比べ、開発者がＳＱＬ文を理解していなくても開発しやすいが、複雑なデータ検索を要求される場面においては、Ｏ／Ｒマッピングにより発行されるＳＱＬでは思うようなパフォーマンスが出ないことも多く、別途チューニングしたＳＱＬ文を直接記述して代替する必要があった。その場合、方法１と同様に、ＳＱＬ文やＳＱＬ文を制御するプログラムがソースコード内で点在することになり、保守性が低いという問題を相変わらず抱えることとなった。
【０００７】
一方、現在、開発言語を習得せずとも、アプリケーションを開発することができるアプリケーションプログラム生成ツール（以下、生成ツールと記す）が存在する。生成ツールでは、画面に対応する入出力定義や、データベースの各テーブル対応するデータモデル定義等を管理し、入出力定義を介して得られた画面からの入力値を検索キーとしてデータモデル定義にセットすることで、検索などのテーブル操作を行うことが一般的である。
【０００８】
そこで、本発明の目的は、画面から受け取った入力情報を用いて、データベースの操作に用いるクエリを変更するプログラムを生成する仕組みを提供することである。
【課題を解決するための手段】
【０００９】
情報処理装置のプログラム生成手段により生成されたプログラムに含まれる出力定義情報を用いて、画面の出力情報を送信する出力情報送信手段と、前記出力情報送信手段により送信された出力情報を用いて出力された画面からの入力情報を受信する入力情報受信手段と、前記情報処理装置のプログラム生成手段により生成されたプログラムに含まれる入力定義情報と、前記入力情報受信手段により受信した入力情報と、前記情報処理装置のプログラム生成手段により生成されたプログラムに含まれるクエリとを用いて、当該クエリを変更するクエリ変更手段と、前記クエリ変更手段により変更されたクエリを用いてデータベースを操作するデータベース操作手段とを備えるアプリケーションサーバで動作するプログラムを生成する前記情報処理装置であって、画面からの入力を受け付けるための前記入力定義情報と、前記データベースのデータを含む画面を出力するための前記出力定義情報とを管理する入出力定義管理手段と、前記データベースの操作に用いるクエリを管理するクエリ管理手段と、前記入出力定義管理手段により管理される入力定義情報と出力定義情報と、前記クエリ管理手段により管理されるクエリとを含むプログラムを生成するプログラム生成手段とを備えることを特徴とする情報処理装置。
【発明の効果】
【００１０】
本発明によれば、画面から受け取った入力情報を用いて、データベースの操作に用いるクエリを変更するプログラムを生成する仕組みを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係わるプログラム開発装置、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント、アプリケーションサーバの構成の一例を示すシステム構成図である。
【図２】本発明に係わるプログラム開発装置、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント、アプリケーションサーバとして適用可能な各ハードウェア構成の一例を示すブロック図である。
【図３】本発明の実施の形態のソフトウェア構成を示すブロック図の一例である。
【図４】プログラム生成装置の構成図である。
【図５】リポジトリ定義の一例を示す図である。
【図６】データベースのテーブルの関係性を示す図である。
【図７】データと画面の関係性を示す図である。
【図８】データベース定義の一例を示す図である。
【図９】アプリケーション定義の基本設定の一例を示す図である。
【図１０】アプリケーション定義の所属入出力の一例を示す図である。
【図１１】データモデル定義の基本設定の一例を示す図である。
【図１２】データモデル定義の項目一覧の一例を示す図である。
【図１３】データモデル定義の基本設定の一例を示す図である。
【図１４】データモデル定義の項目一覧の一例を示す図である。
【図１５】データモデル定義の基本設定の一例を示す図である。
【図１６】データモデル定義の項目一覧の一例を示す図である。
【図１７】データモデル定義のＳＱＬ文定義の一例を示す図である。
【図１８】入出力定義の基本設定の一例を示す図である。
【図１９】入出力定義の項目一覧の一例を示す図である。
【図２０】入出力定義のパラメータ定義の一例を示す図である。
【図２１】入出力定義の基本設定の一例を示す図である。
【図２２】入出力定義の項目一覧の一例を示す図である。
【図２３】入出力定義のパラメータ定義の一例を示す図である。
【図２４】ＳＱＬ文制御の行削除ルールの一例を示す図である。
【図２５】ＳＱＬ文制御の値変換ルールの一例を示す図である。
【図２６】アプリケーション生成ダイアログの一例を示す図である。
【図２７】アプリケーションプログラム生成のフローチャートの一例を示す図である。
【図２８】アプリケーションの画面イメージの一例を示す図である。
【図２９】アプリケーションの画面イメージの一例を示す図である。
【図３０】アプリケーションの画面イメージの一例を示す図である。
【図３１】アプリケーション動作時の実行ＳＱＬ文の一例を示す図である。
【図３２】アプリケーション動作時にＳＱＬ文を変更するフローチャートの一例を示す図である。
【図３３】第２の実施形態に係るクエリテスト実行のフローチャートの一例を示す図である。
【図３４】第２の実施形態に係るデータモデル定義画面におけるクエリテスト生成ボタンの一例を示す図である。
【図３５】第２の実施形態に係る入出力定義画面における動的クエリの引数入力の一例を示す図である。
【図３６】第２の実施形態に係るデータモデル定義画面における生成したクエリの一例を示す図である。
【図３７】第２の実施形態に係るデータモデル定義画面におけるクエリテスト実行結果の一例を示す図である。
【図３８】第２の実施形態に係るデータモデル定義画面におけるクエリテスト実行結果画面プレビューの一例を示す図である。
【発明を実施するための形態】
【００１２】
〔第１の実施形態〕
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
【００１３】
図１は、本発明に係わるプログラム開発装置（開発者端末）、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント（クライアント装置）、アプリケーションサーバの構成の一例を示すシステム構成図である（情報処理システム）。
【００１４】
プログラム開発装置１０１（情報処理装置）は、開発者の操作に従って画面レイアウトおよびデータベース検索指示などを定義する。プログラム開発装置１０１単体では、ユーザの入力受付を行い、後述するプログラム開発サーバ１０２に実際のプログラム生成処理、アプリケーション生成処理をさせてもよいし、プログラム開発装置１０１単体でプログラム生成、アプリケーション生成まで処理してもよい。
【００１５】
プログラム開発サーバ１０２ａ〜１０２ｂ（情報処理装置）は、プログラム開発装置１０１により入力された開発者の指示に従って、プログラムを開発する。プログラム開発サーバ１０２ａはＬＡＮなどのネットワーク１０６内に配置されてもよいし、プログラム開発サーバ１０２ｂはインターネット上やクラウド上に配置されてもよい。
【００１６】
データベースサーバ１０３ａ〜１０３ｂ（情報処理装置）は、開発されたアプリケーションが使用するデータベースであり、また本発明では開発時にも動作確認などのために利用してもよい。例えば、開発者が利用するためにデータベースサーバ１０３は、プログラム開発装置１０１と同一の装置で構成されていてもよいし、ＬＡＮなどのネットワーク１０６内に配置されてもよい（データベースサーバ１０３ａ）。またインターネット上やクラウド上に配置されてもよい（データベースサーバ１０３ｂ）。また、プログラム開発装置１０１が、プログラム開発サーバ１０２と協調する場合には、プログラム開発サーバ１０２とデータベースサーバ１０３が同一の装置内に構成されていてもよい。
【００１７】
アプリケーションサーバ１０５ａ〜１０５ｂ（情報処理装置）は、プログラム開発装置１０１で開発されたアプリケーションを実行する。ＬＡＮなどのネットワーク１０６内に配置されてもよい（アプリケーションサーバ１０５ａ）し、またインターネット上やクラウド上に配置されてもよい（アプリケーションサーバ１０５ｂ）。また、ネットワーク１０６、インターネット、クラウド上のデータベースサーバ１０３と接続して動作する可能である。
【００１８】
アプリケーションクライアント１０４ａ〜１０４ｂ（情報処理装置）は、アプリケーションサーバ１０５と協調してプログラム開発装置１０１で開発したアプリケーションプログラムを動作させる、ユーザの入力端末である。ＬＡＮなどのネットワーク１０６内に配置されてもよい（アプリケーションクライアント１０４ａ）し、またインターネット上やクラウド上に配置されてもよい（アプリケーションクライアント１０４ｂ）。携帯端末などの情報処理装置であってもよい。
【００１９】
図２は、本発明に係わるプログラム開発装置、プログラム開発サーバ、データベースサーバ、アプリケーションクライアント、アプリケーションサーバとして適用可能な各ハードウェア構成の一例を示すブロック図である。
図２において、ＣＰＵ２０１は、システムバス２０４に接続される各デバイスを統括的に制御する。
【００２０】
また、ＲＯＭ２０３あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるオペレーティングシステム（ＯＳ）や、各サーバ、クライアント、装置など情報処理装置の後述する各種機能を実現するためのプログラムが記憶されている。
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア、一時待避領域等として機能する。
【００２１】
入力コントローラ２０５は、入力部２０９からの入力を制御する。この入力部２０９としては、情報処理装置では、キーボード、マウス等のポインティングデバイスが挙げられる。
出力コントローラ２０６は、出力部２１０の表示を制御する。この出力部２１０としては、例えば、ＣＲＴや液晶ディスプレイ等が挙げられる。
【００２２】
外部メモリコントローラ２０７は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザーファイル、編集ファイル、プリンタドライバ等を記憶する外部メモリ２１１へのアクセスを制御する。加えて、各サーバ、クライアント、装置等の各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ２１１としては、ハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）、ＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）、スマートメディア等が挙げられる。
通信Ｉ／Ｆコントローラ２０８は、ネットワークを介して外部機器との通信制御処理を実行する。
本発明を実現するためのプログラム２１２は外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０２にロードされることによりＣＰＵ２０１によって実行されるものである。
【００２３】
図３は、本発明の実施の形態のソフトウェア構成を示すブロック図の一例である。
アプリケーションサーバ１０５は、出力情報送信部３１１、入力情報受信部３１２、クエリ変更部３１３、データベース操作部３１４を備える。
出力情報送信部３１１は、プログラム生成部３０３により生成されたプログラムに含まれる出力定義情報を用いて、画面の出力情報を送信する機能部である。
入力情報受信部３１２は、出力情報送信部３１１により送信された出力情報を用いて出力された画面からの入力情報を受信する機能部である。
【００２４】
クエリ変更部３１３は、プログラム生成部３０３により生成されたプログラムに含まれる入力定義情報と、入力情報受信手段により受信した入力情報と、プログラム生成部３０３により生成されたプログラムに含まれるクエリとを用いて、当該クエリを変更する機能部である。
データベース操作部３１４は、クエリ変更手段により変更されたクエリを用いてデータベースを操作する機能部である。
【００２５】
プログラム開発装置１０１は、入出力定義管理部３０１、クエリ管理部３０２、プログラム生成部３０３、データモデル定義管理部３０４、テスト値設定受付部３０５、クエリ表示部３０６、テスト操作部３０７、実行結果取得部３０８、実行結果表示部３０９、出力情報生成部３１０、画面表示部３２１、テストクエリ変更部３２２を備える。
【００２６】
入出力定義管理部３０１は、画面からの入力を受け付けるための入力定義情報と、データベースのデータを含む画面を出力するための出力定義情報とを管理する機能部である。
クエリ管理部３０２は、データベースの操作に用いるクエリを管理する機能部である。
【００２７】
プログラム生成部３０３は、入出力定義管理部３０１により管理される入力定義情報と出力定義情報と、クエリ管理部３０２により管理されるクエリとを含むプログラムを生成する機能部である。
クエリ変更部３１３は、クエリ管理部３０２に管理されるクエリに含まれるパラメータに対応する入力情報の値に従って、当該クエリを変更する機能部である。
クエリ変更部３１３は、クエリに含まれるパラメータを当該パラメータに対応する入力情報の値を用いて置換する機能部である。
クエリ変更部３１３は、パラメータの値が空または取得できなかった場合、当該クエリの当該パラメータを含む行を削除または無効化する機能部である。
【００２８】
クエリ変更部３１３は、クエリにおけるパラメータの前または／かつ後に所定の文字列が存在する場合、当該所定の文字列に従って、当該クエリを変更する機能部である。
【００２９】
データモデル定義管理部３０４は、クエリ管理部３０２に管理されるクエリを用いて取得されたデータをデータモデルとして利用するためのデータモデル定義を管理する機能部である。
テスト値設定受付部３０５は、クエリ管理部３０２に管理されるクエリに含まれるパラメータに対して、テストする値の設定を受け付ける機能部である。
テストクエリ変更部３２２は、テスト値設定受付部３０５により受け付けたテスト値に従って、当該クエリを変更する機能部である。
【００３０】
クエリ表示部３０６は、テスト値設定受付部３０５により設定を受け付けた値を識別してテストクエリ変更部３２２により変更されたクエリを表示する、クエリ管理部３０２に管理されるクエリと当該クエリに含まれるパラメータの近傍にテスト値設定受付部３０５により設定を受け付けた値とを表示する、およびクエリ管理部３０２に管理されるクエリをテスト値設定受付部３０５によりＮＵＬＬ値の設定されたパラメータを含む当該クエリの行を取消線で取り消して表示する、表示方法のうち少なくとも１つの表示方法を用いて表示する機能部である。
【００３１】
テスト操作部３０７は、テストクエリ変更部３２２により変更されたクエリを用いて、テストとしてクエリを実行するために、コミットせずにデータベースを操作する機能部である。
実行結果取得部３０８は、テスト操作部３０７によりデータベースから出力されたクエリ実行結果を取得する機能部である。
実行結果表示部３０９は、実行結果取得部３０８により取得されたクエリ実行結果を表示する機能部である。
【００３２】
出力情報生成部３１０は、実行結果取得部３０８により取得されたクエリ実行結果と部３０は、機能部である。出力定義情報とを用いて、画面の出力情報を生成する機能部である。
画面表示部３２１は、出力情報生成手段により生成された出力情報を用いて、画面を表示する機能部である。
【００３３】
図４は、プログラムを生成するプログラム開発装置１０１の構成図である。このプログラム開発装置１０１は、ユーザが定義した定義ファイルをもとにＷｅｂアプリケーションを的に生成することを目的とした装置である。
【００３４】
プログラム開発装置１０１は、リポジトリ定義部４００およびプログラム生成部４１０により構成される。リポジトリ定義部４００は、データベース定義４０１、アプリケーション定義４０２、データモデル定義４０３、ＳＱＬ文定義４０４、入出力定義４０５、パラメータ・名前関連付け定義４０６により構成される。データベース定義４０１、アプリケーション定義４０２、データモデル定義４０３、入出力定義４０５は、開発者によって作成される定義ファイルであり、作成された定義ファイルは図５に示すツリー構造で表示される。
【００３５】
ＳＱＬ文定義４０４は、データモデル定義４０３の一部にあたる。同様にパラメータ・名前関連付け定義４０６は、入出力定義４０５の一部にあたる。アプリケーション定義４０２は、入出力定義４０５と関連する。入出力定義４０５は、データモデル定義４０３と関連する。データモデル定義４０３は、データベース定義４０１と関連する。
【００３６】
すなわち、ＳＱＬ文定義４０４は、データベースの操作に用いるクエリを管理する手段の一例を示す機能部である。また、入出力定義４０５は、画面からの入力を受け付けるための入力定義情報と、データベースのデータを含む画面を出力するための出力定義情報とを管理する手段の一例を示す機能部である。
【００３７】
なお、この実施形態においては、入力定義と出力定義をまとめて入出力定義４０５としたが、これに限定するものではなく、入力定義と出力定義とを別々に定義し、それぞれを画面と対応づけるとしてもよい。
【００３８】
また、この実施形態においては、入出力定義４０５はデータモデル定義４０３と関連し、ＳＱＬ文定義４０４はデータモデル定義４０３の一部にあたるとしたが、これに限定するものではなく、入出力定義４０５とＳＱＬ文定義４０４とが直接関連するとしてもよい。その場合、画面毎・機能毎に異なるＳＱＬを作成することになってしまい、同じテーブルを操作するＳＱＬ文が複数できてしまうため、図４の構成が望ましい。
【００３９】
また、この実施形態において、プログラム開発装置１０１は、プログラムを生成し、そのプログラムを用いてアプリケーションを生成する情報処理装置としたが、これに限定するものではなく、プログラム開発装置１０１で生成したプログラムやアプリケーションが、プログラム開発装置１０１で動作するとしてもよい。つまり、プログラム開発装置１０１において開発しながら稼働テストを行うように、プログラムやアプリケーションを生成する装置と、そのプログラムやアプリケーションが動作する装置とが同じ端末であってもよい。
【００４０】
また、この実施形態において、プログラム開発装置１０１は、プログラムを生成し、そのプログラムを用いてアプリケーションを生成する情報処理装置としたが、これに限定するものではなく、プログラム開発装置１０１で生成したプログラムを用いて、異なる端末（例えば、プログラム開発サーバ１０２やアプリケーションサーバ１０５）がアプリケーションを生成するとしてもよい。つまり、プログラムを生成する装置と、そのプログラムを用いてアプリケーションを生成する装置とが異なる端末であってもよい。
【００４１】
また、この実施形態において、プログラム開発装置１０１は、Ｗｅｂアプリケーションのプログラムを生成する装置としたが、Ｗｅｂアプリケーションに限定するものではなく、画面から受け取った入力情報を用いて、データベースの操作に用いるクエリを変更するアプリケーションであれば、クライアント・サーバ型のアプリケーション、スマートフォンやタブレット型ＰＣ等で動作するアプリケーション、または、その他の形式のアプリケーションであってもよい。
【００４２】
プログラム生成部４１０は、プログラム生成エンジン４１１、ＳＱＬ文変換ルール４１２、コンパイルエンジン４１３により構成される。プログラム生成エンジン４１１は、内部に組み込まれたＳＱＬ文変換ルール４１２の仕様に従ったプログラムを生成する。すなわち、プログラム生成エンジン４１１は、入出力定義４０５により管理される入力定義情報と出力定義情報と、ＳＱＬ文定義４０４により管理されるクエリとを含むプログラムを生成する手段の一例を示す機能部である。
【００４３】
プログラム生成部４１０は、プログラム４２０を出力する。プログラム４２０は、プログラムソースコード４２１で構成される。プログラムソースコード４２１には、ユーザによって画面から入力されたパラメータに応じて動的に変更されるＳＱＬ文（動的変更ＳＱＬ文４２２）が含まれている。
【００４４】
すなわち、ＳＱＬ文変換ルール４１２と動的変更ＳＱＬ文４２２は、ＳＱＬ文定義４０４により管理されるクエリに含まれるパラメータに対応する入力情報の値に従って、クエリを変更する手段の一例を示す機能部である。
【００４５】
プログラムソースコード４２１は、プログラム生成部４１０のコンパイルエンジン４１３によって、コンパイルされ、アプリケーション４３０となる。アプリケーション４３０は、データベース４４０に接続し、データベース４４０のデータを操作（例えば、検索・追加・更新・削除）する。
【００４６】
図５は、リポジトリ定義の一例を示す図である。ユーザが作成した定義ファイルは、５００に示すようなツリー構造で表示される。
データベース定義４０１は、５０１に示すようにプロジェクト直下に保存される。アプリケーション定義４０２は、アプリケーションフォルダ５０２に保存される。データモデル定義４０３は、データモデルフォルダ５０３に保存される。入出力定義４０５は、入出力フォルダ５０５に保存される。
【００４７】
図６は、説明のために用意したデータベースのテーブルの例である。従業員テーブル６０１は、従業員の情報を管理するテーブルである。組織テーブル６０２は、従業員が所属する組織の情報を管理するテーブルである。２つのテーブルの関係性として、従業員はひとつの組織に所属し、１つの組織には複数の従業員が所属することを示している。従業員・組織結合テーブル６０３は、これら２つのテーブルを結合したテーブルである。
【００４８】
図７は、説明のために用意したデータと画面の関係性を説明する図である。上記で説明した従業員・組織結合テーブル７０３は、従業員一覧画面７０１および従業員詳細画面７０２から参照される。従業員一覧画面７０１は、従業員を検索して一覧表示する画面であり、検索パラメータと条件が一致するレコードを従業員・組織結合テーブル７０３から取得して表示する。従業員詳細画面７０２は、従業員ＩＤをパラメータとして、単一の従業員の情報を従業員・組織結合テーブル７０３から取得して表示する。
【００４９】
図８は、データベース定義画面の一例を示す図である。データベース定義画面８００は、データベース定義を一覧で表示するビュー８０１と各定義を詳細表示するビュー８０２で画面構成される。アプリケーションが接続するデータベースの情報は、この定義ファイルから読み取り、アプリケーション４３０のプログラムに反映される。
【００５０】
図９は、アプリケーション定義の基本設定画面の一例を示す図である。アプリケーション定義基本設定画面９００は、アプリケーションコード９０１、アプリケーション名９０２、初期入出力コード９０３の項目を保持する。
【００５１】
アプリケーションコード９０１は、リポジトリ定義部４００に保存される定義ファイル全体（以後、プロジェクトと呼ぶ）の中でアプリケーションを一意に特定するコードである。アプリケーション名９０２は、アプリケーションに対して、ユーザが任意に設定することができる名前で、ユーザがアプリケーションを特定しやすくする目的で設定する。初期入出力コード９０３は、アプリケーション４３０にユーザがアクセスした後、最初に表示する画面を示す入出力定義を設定する項目である。
【００５２】
図１０は、アプリケーション定義の所属入出力画面の一例を示す図である。アプリケーション定義所属入出力画面１０００は、入出力一覧１００１と所属入出力１００２、追加ボタン１００３、削除ボタン１００４により構成される。入出力一覧１００１には、プロジェクトに存在する入出力定義４０５がすべて表示される。ユーザは、任意の入出力コードをひとつないし複数選択し、追加ボタン１００３押下により所属入出力１００２に設定することができる。所属入出力１００２に設定されている入出力コードを選択し、削除ボタン１００４を押下した場合は、所属入出力１００２から選択した入出力定義が削除される。アプリケーション４３０は、所属入出力１００２に設定されている入出力に範囲限定して生成される。
【００５３】
図１１は、データモデル定義の基本設定画面の一例を示す図である。データモデル定義基本設定画面１１００は、データモデルコード１１０１、データモデル名１１０２を保持する。データモデルコード１１０１は、プロジェクトの中でデータモデル定義を一意に特定するコードである。データモデル名１１０２は、データモデル定義に対して、ユーザが任意に設定することができる名前である。
【００５４】
なお、データモデル定義は、データベースのテーブルに１対１に対応する。この例では、「ＥＭＰＬＯＹＥＥ＿ＤＭ」というデータモデルコードのデータモデルであり、これは、図６の例で説明した従業員テーブル６０１に対応する。データモデルは、接続するデータベースの情報を保持する。そのため、図４の構成図に示すようにデータモデル定義４０３は、データベース定義４０１と関連する。
【００５５】
すなわち、データモデル定義４０３は、ＳＱＬ文定義４０４に管理されるクエリを用いて取得されたデータをデータモデルとして利用するためのデータモデル定義を管理する手段の一例を示す機能部である。
【００５６】
図１２は、データモデル定義の項目一覧画面の一例を示す図である。データモデル定義項目一覧画面１２００は、データモデル項目一覧１２０１を保持する。データモデル項目は、データベースのテーブルカラムに該当する。データモデル項目は、項目コード１２０２、名前１２０３、ＮＵＬＬ可１２０４、キーグループ１２０５、桁数１２０６、小数桁１２０７、バイト数１２０８、加工式１２０９、データタイプ１２１０の各設定項目を保持する。
【００５７】
項目コード１２０２は、データモデル内のデータモデル項目を一意に特定するコードである。名前１２０３は、データモデル項目に対して、ユーザが任意に設定する名前である。ユーザがデータモデル項目を特定しやすくするために設定するものである。ＮＵＬＬ可１２０４は、データモデル項目に登録するデータに対して空を許容するかどうかを設定する項目である。キーグループ１２０５は、データモデル項目一覧の中でキー値を保存する項目に対して、「１」を設定する項目である。つまり、テーブルカラムの主キーに該当する。
【００５８】
桁数１２０６は、データモデル項目に登録できるデータの桁数を設定する。小数桁１２０７は、データモデル項目のうち、数値を扱う項目で設定できる小数の桁数を設定する。加工式１２０９には、ユーザは任意の計算式を設定する。アプリケーションの画面表示時には、設定した計算式に従いデータを加工する。データタイプ１２１０は、データモデル項目のデータ型を設定する項目である。文字、数値、日付等、データの型を指定する。
【００５９】
図１３は、組織ＤＭのデータモデル定義の基本設定画面の一例を示す図である。データモデル定義基本設定画面１３００の各項目は、データモデル定義基本設定画面１１００（図１１）と同様であるため説明を省略する。なお、組織ＤＭは、図６の組織テーブル６０２に対応する。
【００６０】
図１４は、組織ＤＭのデータモデル項目一覧画面の一例を示す図である。データモデル項目一覧画面１４００の各項目は、データモデル定義項目一覧画面１２００（図１２）と同様であるため説明を省略する。
【００６１】
図１５は、従業員ＤＭと組織ＤＭを結合した従業員・組織結合ＤＭのデータモデル定義の基本設定画面の一例を示す図である。データモデル定義基本設定画面１５００の各項目は、データモデル定義基本設定画面１１００（図１１）、データモデル定義基本設定画面１３００（図１３）の説明と同様であるが、プロパティのｄｂＱｕｅｒｙ１５０３の値として、ＳＱＬ文が設定されている。ｄｂＱｕｅｒｙ１５０３は、図４のＳＱＬ文定義４０４にあたる。
【００６２】
従業員・組織結合ＤＭには、このｄｂＱｕｅｒｙ１５０３に設定されたＳＱＬ文が実行された結果データがセットされる。この例では、ｄｂＱｕｅｒｙ１５０３には図１７のｄｂＱｕｅｒｙ１７０２で示すＳＱＬ文が設定されている。ＳＱＬ文の中身としては、「ＥＭＰＬＯＹＥＥ＿ＤＭ」テーブルと「ＤＥＰＴ＿ＤＭ」テーブルを内部結合し、「ＥＭＰ＿ＩＤ」「ＥＭＰ＿ＮＡＭＥ」「ＥＭＰ＿ＥＭＡＩＬ」「ＥＭＰ＿ＰＯＳＩＴＩＯＮ」のカラム値によって、レコードの絞り込みを行っている。
【００６３】
なお、ｄｂＱｕｅｒｙ１７０２には、開発者がＳＱＬ文を自由に記述することができる。そのＳＱＬ文の中には、「：ｅｍｐｌｏｙｅｅ＿ｉｄ」のようにコロンで始まる変数名を指定することができる。これの変数名の指定については、後述する図２４で説明する。なお、ｄｂＱｕｅｒｙ１７０２には、開発者がＳＱＬ文を自由に記述することができるとしたが、ユーザがＳＱＬ文を入力する際に、データモデル項目一覧画面１６００の各項目（例えば項目コード１６０２）を用いて入力を補助する。例えば、ユーザから「ＳＥＬＥＣＴ」「ＵＰＤＡＴＥ」「ＷＨＥＲＥ」等の文字列の入力を受け付けた場合、その後に、項目コード１６０２のカラム名を「，（カンマ）」「ＡＮＤ」「＝」などの記号と共に自動出力する等により、入力を補助する。これにより、ＳＱＬ文を入力する場合、操作を容易にすることができる。
【００６４】
図１６は、従業員・組織結合ＤＭのデータモデル項目一覧画面の一例を示す図である。データモデル項目一覧画面１６００の各項目は、データモデル定義項目一覧画面１２００（図１２）、データモデル項目一覧画面１４００（図１４）と同様であるため説明を省略する。データモデル項目一覧画面１６００の各項目には、図１７のｄｂＱｕｅｒｙ１７０２に設定されたＳＱＬ文の実行結果の各カラムの値がセットされる。
【００６５】
図１８は、入出力定義４０５の基本設定画面の一例を示す図である。入出力定義基本設定画面１８００は、アプリケーション４３０のうち、画面に関する情報を扱う。入出力定義基本設定画面１８００は、入出力コード１８０１、入出力名１８０２、入出力タイプ１８０３、対象データモデル１８０４、対象条件１８０５の各設定項目を保持する。
【００６６】
入出力コード１８０１は、プロジェクトの中で入出力定義を一意に特定するコードである。入出力名１８０２は、入出力定義に対して、ユーザが任意に設定することができる名前である。入出力タイプ１８０３は、画面のタイプを設定する項目である。通常のＷｅｂ画面の場合は、「ＩＯ」を設定する。
【００６７】
対象データモデル１８０４は、画面の中で扱うデータモデルを指定する。この例では、「ＥＭＰＬＯＹＥＥ＿ＪＯＩＮ＿ＤＭ」が設定されている。すなわち、この画面では、従業員・組織結合ＤＭのデータにアクセスする。従業員・組織結合ＤＭは、図１７のｄｂＱｕｅｒｙ１７０２に設定されたＳＱＬの内容より、図６で示す従業員・組織結合テーブル６０３から抽出されるデータに該当する。
【００６８】
対象条件１８０５には、図４のパラメータ・名前関連付け定義４０６の情報を設定する。「＠ＮＡＭＥＤＰＡＲＡＭ：」以下に名前とパラメータ番号を示す「＠１、＠２・・・」が設定されている。この例では、「ｅｍｐｌｏｙｅｅ＿ｎａｍｅ＝＠１」の記述があり、これは、「ｅｍｐｌｏｙｅｅ＿ｎａｍｅ」に画面から送られた１番目のパラメータを関連付けることを意味している。
【００６９】
同様に「ｅｍｐｌｏｙｅｅ＿ｅｍａｉｌ＝ＳＷ（＠２）」、「ｅｍｐｌｏｙｅｅ＿ｐｏｓｉｔｉｏｎ＝ＭＵＬＴＩ＿ＴＥＸＴ（＠３）」もそれぞれ、「ｅｍｐｌｏｙｅｅ＿ｅｍａｉｌ」に対して画面から送られた２番目のパラメータを、「ｅｍｐｌｏｙｅｅ＿ｐｏｓｉｔｉｏｎ」に対して画面から送られた３番目のパラメータを関連付けることを意味している。但し、ここでは、「＠２」を引数とする「ＳＷ」関数の結果、「＠３」を引数とする「ＭＵＬＴＩ＿ＴＥＸＴ」の関数の結果を実際には関連付けている。これらの関数については、後述する図２５の値変換ルールで説明する。
【００７０】
なお、この実施形態においては、「：」「＠」「ＳＷ」「ＥＷ」「ＣＴ」「ＭＵＬＴＩ＿ＴＥＸＴ」で表される文字列をパラメータまたは関数としたが、これらに限定するものではなく、その他の文字列や文字列以外のリンク情報などの表現をパラメータまたは関数としてもよい。
【００７１】
図１９は、入出力定義４０５の項目一覧画面の一例を示す図である。入出力定義項目一覧画面１９００は、入出力項目の一覧ビュー１９０１と各入出力項目の詳細ビュー（不図示）により構成される。入出力定義項目一覧画面１９００は、項目タイプ１９０２、項目コード１９０３、名前１９０４、表示１９０５、必須１９０６、レベル１９０７、桁数１９０８、小数桁１９０９、次入出力１９１０、データモデルコード１９１１、データモデル項目コード１９１２を保持する。
【００７２】
すなわち、入出力定義４０５は、画面からの入力を受け付けるための入力定義情報と、データベースのデータを含む画面を出力するための出力定義情報とを管理する手段の一例を示す機能部である。
【００７３】
項目タイプ１９０２は、入出力項目のタイプを示すものである。この例では、「Ｉ  入力」「Ｏ  出力」「Ａ  アクション」があり、「Ｉ  入力」はユーザが入力するフィールドを、「Ｏ  出力」は画面に出力するフィールドを、「Ａ  アクション」はユーザが押下するボタンをそれぞれ示す。項目コード１９０３は、入出力定義内の項目を一意に特定するコードである。名前１９０４は、入出力項目に対してユーザが任意に命名する名前である。入出力項目を特定しやすくする目的で設定する。
【００７４】
つまり、アプリケーションサーバ１０５は、アプリケーションに含まれる入出力定義４０５の「Ｉ  入力」「Ｏ  出力」「Ａ  アクション」に従って、入力フィールド・出力フィールド・ボタンを含む画面の出力情報を生成し、アプリケーションクライアント１０４に送信する。すなわち、アプリケーションサーバ１０５は、プログラム開発装置１０１により生成されたプログラムに含まれる出力定義情報を用いて、画面の出力情報を送信する機能部をもつ。
【００７５】
表示１９０５は、定義した入出力項目を画面上に表示するかどうかの設定である。「非表示」とした場合は、画面上には表示せず、隠しデータとして情報を保持する。必須１９０６は、該入出力項目が必須入力かどうかのチェックを設定する。桁数１９０８は、該入出力項目に入力可能な桁数を設定する。小数桁１９０９は、該入出力項目が数値型の場合に入力可能な小数桁数を設定する。
【００７６】
次入出力１９１０は、項目タイプがアクションに設定された入出力項目について、ボタン押下された後に遷移する入出力コードを設定する。すなわち、ある画面から別の画面への遷移を定義する。データモデルコード１９１１は、該入出力項目と関連するデータモデルコードを設定する。同様にデータモデル項目コード１９１２は、該入出力項目と関連するデータモデル項目コードを設定する。
【００７７】
図２０は、入出力定義４０５のパラメータ定義画面の一例を示す図である。項目コード「ＱＵＥＲＹ」として示されている入出力項目２００１は、アクションタイプの項目であり、画面の中ではアクションを実行するボタンに該当する。
【００７８】
このボタンが押下された場合は、次入出力２００２（空欄の場合は自画面）で示す入出力コード１８０１の画面に遷移すべく、次入出力パラメータ２００３に設定されている「Ｐ＿ＮＡＭＥ」「Ｐ＿ＥＭＡＩＬ」「Ｐ＿ＰＯＳＩＴＩＯＮ」の各入力項目に入力されている値がパラメータとして順番にアプリケーションクライアント１０４からアプリケーションサーバ１０５に送信され、アプリケーションサーバ１０５はそのパラメータを順番に受信する。
【００７９】
すなわち、アプリケーションサーバ１０５は、アプリケーションクライアント１０４に送信された出力情報を用いて出力された画面からの入力情報を受信する機能部をもつ。
【００８０】
図１８〜図２０で説明した入出力定義画面は、図７における従業員一覧画面７０１の入出力定義を示している。つまり、従業員一覧画面７０１には、検索条件の入力項目として、「Ｐ＿ＮＡＭＥ（氏名）」「Ｐ＿ＥＭＡＩＬ（メールアドレス）」「Ｐ＿ＰＯＳＩＴＩＯＮ（役職）」が用意され、検索ボタンとして「ＱＵＥＲＹ（従業員検索）」が表示されることを意味する。
【００８１】
図２１は、入出力定義４０５の基本設定画面の一例を示す図である。入出力定義基本設定画面２１００の各項目は、入出力定義基本設定画面１８００（図１８）と同様であるため説明を省略する。この例では、対象条件２１０５には「＠ＮＡＭＥＤＰＡＲＡＭ：ｅｍｐｌｏｙｅｅ＿ｉｄ＝＠１」とあるため、アプリケーションクライアント１０４から送られる１番目のパラメータをｅｍｐｌｏｙｅｅ＿ｉｄと関連付けている。なお、この実施形態においては、＠を用いてアプリケーションサーバ１０５が受信するパラメータの順番を表したが、これに限定するものではなく、＠以外の記号を用いてもよい。また、パラメータの順番に限定するものではなく、「＠ＮＡＭＥＤＰＡＲＡＭ：ｅｍｐｌｏｙｅｅ＿ｎａｍｅ＝Ｐ＿ＮＡＭＥ」のように、受信するパラメータ名を直接用いて記述する等の方法でもよい。
【００８２】
図２２は、入出力定義４０５の項目一覧画面の一例を示す図である。入出力定義項目一覧画面２２００には、入出力定義基本設定画面２１００（図２１）の入出力項目を示す。入出力定義項目一覧画面２２００の各項目は、入出力定義項目一覧画面１９００（図１９）と同様であるため説明を省略する。
【００８３】
図２３は、入出力定義４０５のパラメータ定義画面の一例を示す図である。従業員一覧画面７０１にある詳細ボタンは、項目コード「ＤＥＴＡＩＬ＿Ａ」（詳細）として示されている。入出力項目２３０１は、アクションタイプの項目であり、画面の中では、詳細画面に遷移するためのボタンに該当する。このボタンが押下された場合は、次入出力パラメータ２３０２に設定されている「ＥＭＰ＿ＩＤ」に入力されている値がパラメータとしてアプリケーションサーバ１０５に送られる。詳細画面では、「ＥＭＰ＿ＩＤ」によって一意に特定された従業員の情報を表示する。
図２１〜図２２で説明した入出力定義４０５は、図７の例では従業員詳細画面７０２を示している。
【００８４】
ここで、図７の説明に戻る。従業員一覧画面７０１も従業員詳細画面７０２も参照するデータは、従業員・組織結合テーブル７０３である。このように、複数の画面から同一のテーブルが参照されることは一般的であるが、データの検索条件等は、画面毎に異なることが多いため、画面毎に異なるＳＱＬ文やＳＱＬ文を制御するコードを保持することになる。
【００８５】
しかしながら、本発明によれば、画面からの入力情報を用いて、データベースの操作に用いるクエリを変更するアプリケーションを生成することができるため、異なる目的で複数の画面から利用されるＳＱＬ文であっても、用意するＳＱＬ文は一つにすることが可能となる。つまり、生成ツールにおいて、画面毎・機能毎に利用するＳＱＬをカスタマイズする場合、同じテーブルを操作するＳＱＬ文が複数できてしまうという問題を解決することができる。
【００８６】
図１８で示した従業員一覧画面の入出力定義に関する対象データモデル１８０４と図２１で示した従業員詳細画面の対象データモデル２１０４には、同じ「ＥＭＰＬＯＹＥＥ＿ＪＯＩＮ＿ＤＭ」が設定されている。これは、各画面で参照するデータモデルが同一であることを示している。データモデルに格納されるデータを抽出するＳＱＬ文は、図１７のｄｂＱｕｅｒｙ１７０２に設定されているもの唯一である。
【００８７】
従業員一覧画面では、検索条件に従ったレコード抽出が必要で、従業員詳細画面では従業員ＩＤにより一意に特定されたレコード抽出が必要である。そのため、ＳＱＬ文は動的に変更されなくてはならない。この仕組みについて、図２４、図２５を用いて説明する。
【００８８】
図２４は、ＳＱＬ文制御の行削除ルールの一例を示す図である。ＳＱＬ文２４０１は、改行を含むコードで記述されている。また、２４０４で示す箇所のようにＳＱＬ文の中には、「：ｅｍｐｌｏｙｅｅ＿ｉｄ」のようにコロンで始まる変数名が指定されている。この変数名を名前付きパラメータと呼ぶ。名前付きパラメータに値が存在した場合は、名前付きパラメータの部分をその値に置換したＳＱＬ文を用いて、データベースの操作を行う。すなわち、動的変更ＳＱＬ文４２２は、クエリに含まれるパラメータを当該パラメータに対応する入力情報の値を用いて置換する手段の一例を示す機能部である。
【００８９】
すなわち、アプリケーションサーバ１０５は、プログラム開発装置１０１により生成されたプログラムに含まれる入力定義情報と、受信した入力情報と、プログラム開発装置１０１により生成されたプログラムに含まれるクエリとを用いて、当該クエリを変更する機能部をもつ。また、アプリケーションサーバ１０５は、変更されたクエリを用いてデータベースを操作する機能部をもつ。
【００９０】
以上により、チューニングのためにＳＱＬ文やＳＱＬ文を制御するプログラムをカスタマイズする場合、生成されたＳＱＬ文やプログラムへの修正が必要になってしまうという問題を解決することができる。また、ＳＱＬ文やＳＱＬ文を制御するプログラムがソースコード内で点在することが無いため、保守性が低いという問題を解決することができる。
【００９１】
また、複雑なＳＱＬを作成したい場合は、個別にＳＱＬ文を作成することができる生成ツールも存在するが、その場合、アプリケーションの画面から受け取った入力情報を用いて、動的に変更することができないといった問題を解決することができる。
【００９２】
また、本発明で示す行削除ルールによれば、名前付きパラメータに値が存在しなかった場合、名前付きパラメータを含むＳＱＬ文の行を削除する。これを行削除ルールと呼ぶ。なお、この行削除ルールは、ＳＱＬ文変換ルール４１２としてプログラム化されており、プログラム生成エンジン４１１に組み込まれている。
【００９３】
なお、この実施形態においては、名前付きパラメータに値が存在しなかった場合としたが、値が存在しないことに限定するものではなく、名前付きパラメータの値が取得できなかった場合、名前付きパラメータの値が空（ＮＵＬＬ値）である場合、等としてもよい。なお、この実施形態においては、名前付きパラメータに値が存在しなかった場合、名前付きパラメータを含むＳＱＬ文の行を削除するとしたが、行を削除することに限定するものではなく、その行をコメント文等にして無効化する等としてもよい。
【００９４】
すなわち、ＳＱＬ文変換ルール４１２と動的変更ＳＱＬ文４２２は、ＳＱＬ文定義４０４により管理されるクエリに含まれるパラメータに対応する入力情報の値が空または取得できなかった場合、当該クエリの当該パラメータを含む行を削除または無効化する手段の一例を示す機能部である。
【００９５】
ＳＱＬ文２４０２は、「：ｅｍｐｌｏｙｅｅ＿ｎａｍｅ」の名前付きパラメータのみ値が存在した場合のＳＱＬ文である。「：ｅｍｐｌｏｙｅｅ＿ｉｄ」「：ｅｍｐｌｏｙｅｅ＿ｅｍａｉｌ」「：ｅｍｐｌｏｙｅｅ＿ｐｏｓｉｔｉｏｎ」の名前付きパラメータには値が存在しなかったため、２４０５に示すように行削除されている。このようなＳＱＬ文の生成は、アプリケーション実行時に動的に行われる。
【００９６】
なお、この実施形態においては、「：（コロン）＋変数名」で表される文字列を名前付きパラメータとしたが、これに限定するものではなく、その他の文字列や文字列以外のリンクなどの情報を名前付きパラメータとしてもよい。
【００９７】
また、この実施形態においては、行削除ルールをクエリ変更の一例としたが、これに限定するものではなく、その他のルール（例えば、パラメータの値などを用いた条件に従って、クエリＡまたはクエリＢのどちらかを選択する条件式）などのルールを用意するとしてもよい。
【００９８】
図２８は、アプリケーションの画面イメージの一例を示す図である。この従業員一覧画面２８００は、検索フィールドとして、氏名２８０１、メールアドレス２８０２、役職２８０３を保持する。また、検索を実行するボタンとして、従業員検索ボタン２８０４を保持する。
【００９９】
図２４で示したＳＱＬ文２４０２は、図２８で氏名２８０１にのみ値が入力され、従業員検索ボタン２８０４が押下された場合に実行されるＳＱＬ文である。結果レコード２８０５の右には、詳細ボタン２８０６が表示されている。この詳細ボタン２８０６が押下された場合は、この結果レコードに示される従業員ＩＤをパラメータとしてサーバに送信し、ＳＱＬを実行する。この時実行されるＳＱＬ文が、図２４のＳＱＬ文２４０３である。なお、詳細ボタン２８０６が押下された後に表示される画面が、図２９の従業員情報画面２９００である。
【０１００】
図２５は、ＳＱＬ文制御の値変換ルールの一例を示す図である。２５０２に示す箇所に注目すると、ＳＱＬ文のｌｉｋｅ演算子とｉｎ演算子が利用されている。ｌｉｋｅ演算子の場合、「カラムＡ  ｌｉｋｅ  ‘％ａｐｐｌｅ％’」のように値の前後に％で囲む等の特殊指定が必要になる。そのため、画面から渡される名前付きパラメータに格納される値は、そのままＳＱＬ文に埋め込むと正しくＳＱＬ文が動作しない。そのため、値変換を行う必要がある。
【０１０１】
値変換の定義は、図１８の対象条件１８０５に設定するパラメータ・名前関連付け定義４０６に行う。２５０３は、パラメータ・名前関連付け定義の例である。２行目にＳＷ関数、３行目にＭＵＬＴＩ＿ＴＥＸＴ関数が使用されている。
【０１０２】
関数に対応する変換方法を、２５０４に示す。具体的には、ＳＷ関数は値の末尾に％を加える関数、ＥＷ関数は値の先頭に％を加える関数、ＣＴ関数は値の先頭と末尾に％を加える関数、ＭＵＬＴＩ＿ＴＥＸＴ関数は複数の値をカンマ区切りに変更する関数である。各関数は、ＳＱＬ文変換ルール４１２としてプログラム化されており、プログラム生成エンジン４１１に組み込まれている。
【０１０３】
すなわち、ＳＱＬ文変換ルール４１２と動的変更ＳＱＬ文４２２は、ＳＱＬ文定義４０４により管理されるクエリに含まれるパラメータに対応する入力情報の値に従って、クエリを変更する手段の一例を示す機能部である。また、ＳＱＬ文変換ルール４１２と動的変更ＳＱＬ文４２２は、クエリに含まれるパラメータを当該パラメータに対応する入力情報の値を用いて置換する手段の一例を示す機能部である。
【０１０４】
また、ＳＱＬ文変換ルール４１２と動的変更ＳＱＬ文４２２は、クエリにおけるパラメータの前または／かつ後に所定の文字列が存在する場合、当該所定の文字列に従って、当該クエリを変更する手段の一例を示す機能部である。
【０１０５】
なお、この実施形態においては、関数として「ＳＷ関数」「ＥＷ関数」「ＣＴ関数」「ＭＵＬＴＩ＿ＴＥＸＴ関数」を挙げたが、これらに限定するものではなく、その他の関数を用意するとしてもよい。
【０１０６】
なお、この実施形態においては、動的に生成するＳＱＬ文としてＳＥＬＥＣＴ文を挙げたが、これに限定するものではなく、ＩＮＳＥＲＴ文、ＵＰＤＡＴＥ文、ＤＥＬＥＴＥ文、ＩＮＳＥＲＴ〜ＳＥＬＥＣＴ文（ＳＥＬＥＣＴによる検索結果をＩＮＳＥＲＴする文）、ＵＰＤＡＴＥ〜ＳＥＬＥＣＴ文（ＳＥＬＥＣＴによる検索結果をＵＰＤＡＴＥする文）、ＤＥＬＥＴＥ〜ＳＥＬＥＣＴ文（ＳＥＬＥＣＴによる検索結果をＤＥＬＥＴＥする文）、ＳＥＬＥＣＴ  ＦＯＲ  ＵＰＤＡＴＥ文（行ロックを行うためのＳＥＬＥＣＴ文）等のＤＭＬ（データ操作言語）、ＣＲＥＡＴＥ  ＴＡＢＬＥ文やＤＲＯＰ  ＴＡＢＬＥ文等のＤＤＬ（データ定義言語）、ＧＲＡＮＴ文やＲＥＶＯＫＥ文などのＤＣＬ（データ制御言語）であってもよい。
【０１０７】
また、この実施形態においては、動的に生成するのはリレーショナルデータベースを操作するＳＱＬ文としたが、これに限定するものではなく、ＸＭＬデータベース等を操作するＸＱｕｅｒｙ文等、オブジェクトデータベースを操作するＯＱＬ文等、データベースを操作するクエリであればよい。
【０１０８】
図２６は、アプリケーション生成ダイアログ画面の一例である。プロジェクトに存在するアプリケーション定義を生成対象アプリケーション２６０１にて指定を行い、ＯＫボタン２６０２押下によりプログラム生成処理を開始する。
【０１０９】
図２７は、アプリケーションプログラム生成のフローチャートの一例を示す図である。以下のステップは、すべてプログラム開発装置１０１のＣＰＵ２０１が実行する。
ステップＳ２７０１において、アプリケーション定義４０２を取得し、ＲＡＭ２０２に記憶する。
ステップＳ２７０２において、入出力定義４０５を取得し、ＲＡＭ２０２に記憶する。
ステップＳ２７０３以降は、ステップＳ２７０２にて読込まれた入出力定義４０５の分だけループ処理を行う。
【０１１０】
ステップＳ２７０４において、ステップＳ２７０１にて読込まれたアプリケーション定義の所属入出力１００２（図１０）に当該入出力定義４０５が属しているか確認する。属していない場合は、以降の処理を行わず、ループ処理を継続する。属している場合は、ステップＳ２７０５に進む。
【０１１１】
ステップＳ２７０５において、当該入出力定義４０５に係る対象データモデル１８０４（図１８）に設定されているデータモデル定義４０３を取得し、ＲＡＭ２０２に記憶する。
【０１１２】
ステップＳ２７０６において、ステップＳ２７０５にてＲＡＭ２０２に読込まれたデータモデル定義４０３のＳＱＬ文定義４０４であるｄｂＱｕｅｒｙ１７０２（図１７）に設定されているクエリ（ＳＱＬ文）を取得し、ＲＡＭ２０２に記憶する。
【０１１３】
ステップＳ２７０７において、ステップＳ２７０６にて読込まれたクエリ（ＳＱＬ文）で使用されている値変換ルール関数２５０４（図２５）に係るプログラム（ＳＱＬ文変換ルール４１２）を取得し、ＲＡＭ２０２に記憶する。
【０１１４】
ステップＳ２７０３〜ステップＳ２７０８のループ処理が終了すると、ステップＳ２７０９において、プログラム生成エンジン４１１（図４）を用いてＲＡＭ２０２内の情報からプログラムを生成する。
【０１１５】
ステップＳ２７１０において、コンパイルエンジン４１３（図４）を用いて、ステップＳ２７０９にて生成されたプログラムをコンパイルし、アプリケーション４３０を生成する。すなわち、ステップＳ２７１０は、入出力定義４０５により管理される入力定義情報と出力定義情報と、ＳＱＬ文定義４０４により管理されるクエリとを含むプログラムを生成する処理の一例を示すステップである。
【０１１６】
つまり、生成されたアプリケーションには、ステップＳ２７０２にて読込まれた入出力定義４０５、ステップＳ２７０５にて読込まれたデータモデル定義４０３、ステップＳ２７０６にて読込まれたクエリ、ステップＳ２７０７にて読込まれた値変換ルール関数２５０４を用いて生成されたプログラムがコンパイルされて含まれており、アプリケーションが動作する際に、アプリケーションに含まれるこれらのコンパイルされたプログラムが利用され、動的に変更されたクエリが生成され、データベースが操作される。
以上で、図２７の説明を完了する。
【０１１７】
以上により、画面からの入力情報を用いて、データベースの操作に用いるクエリを変更するアプリケーションを生成する仕組みを提供することができる。また、開発者に対してプログラミング技術を要求することが無いため、開発者はＪａｖａ（登録商標）などのプログラミング技術を習得していなければならないという問題を解決することができる。
【０１１８】
図３０は、図１７で示したＳＱＬ文に対して、図２４で説明した「行削除ルール」および図２５で説明した「値変換ルール」を適用した結果の動作画面の一例である。この従業員一覧画面３０００は、図２８と同様に検索フィールドとして、氏名３００１、メールアドレス３００２、役職３００３を保持する。役職３００３は、複数の選択肢から複数の値を選択する形式である。検索は、従業員検索ボタン３００４の押下によって行われ、検索結果が下部に表示される。３００５は、検索結果の１レコードを示している。この検索において氏名３００１には入力がない、メールアドレス３００２は、「ｎｉｓｈｉｄａ」と入力があり、役職３００３は、「一般職」と「課長」が選択されている。
【０１１９】
図３１のＳＱＬ文３１００は、図３０の従業員検索ボタン３００４が押下されたときに実行するＳＱＬ文である。
図３２は、アプリケーション動作時にＳＱＬ文を変更するフローチャートの一例を示す図である。なお、ステップＳ２７１０にて生成されたプログラムをコンパイルして生成されたアプリケーション４３０は、アプリケーションサーバ１０５の外部メモリ２１１に配置され、アプリケーションクライアント１０４からのリクエストに応じて、アプリケーションサーバ１０５のＣＰＵ２０１がアプリケーション４３０に含まれるプログラムを実行可能な状態になっているとする。
【０１２０】
ステップＳ３２０１において、アプリケーションクライアント１０４のＣＰＵ２０１は、アプリケーションサーバ１０５に対して、ステップＳ２７１０にて生成されたアプリケーション４３０の画面のリクエストを送信する。具体的には、従業員管理アプリ（図９）の初期画面（初期入出力コード９０３）である従業員一覧画面７０１（図７）がリクエストされたとする。
ステップＳ３２０２において、アプリケーションサーバ１０５のＣＰＵ２０１は、アプリケーションクライアント１０４から送信されたリクエストを受信する。
【０１２１】
ステップＳ３２０３において、アプリケーションサーバ１０５のＣＰＵ２０１は、アプリケーション４３０からリクエストに対応する入出力定義４０５から生成されたプログラムを取得してＲＡＭ２０２に記憶する。具体的には、アプリケーション４３０内のプログラムから、リクエストされた従業員一覧画面７０１の入出力定義情報（図１８〜図２０）を取得してＲＡＭ２０２に記憶する。
【０１２２】
ステップＳ３２０４において、アプリケーションサーバ１０５のＣＰＵ２０１は、ＲＡＭ２０２に記憶されている入出力定義４０５の入力定義情報および出力定義情報から生成されたプログラムに従って、アプリケーションクライアント１０４の出力部２１０に出力する画面の出力情報を生成する。具体的には、従業員一覧画面７０１の入出力定義情報（図１９）に従って、従業員一覧画面２８００の出力情報（例えば、Ｗｅｂアプリケーションの場合はＨＴＭＬ）を生成する。
【０１２３】
ステップＳ３２０５において、アプリケーションサーバ１０５のＣＰＵ２０１は、ステップＳ３２０４にて生成した出力情報をアプリケーションクライアント１０４に送信する。すなわち、ステップＳ３２０５は、プログラム開発装置１０１により生成されたプログラムに含まれる出力定義情報を用いて、画面の出力情報を送信する処理の一例を示すステップである。
ステップＳ３２０６において、アプリケーションクライアント１０４のＣＰＵ２０１は、出力情報を受信する。
【０１２４】
ステップＳ３２０７において、アプリケーションクライアント１０４のＣＰＵ２０１は、入力部２０９から入力された入力情報を受け付ける。具体的には、従業員一覧画面７０１の入出力定義項目一覧画面１９００（図１９）の項目タイプ１９０２＝「Ｉ  入力」のフィールド（図２８の氏名２８０１、メールアドレス２８０２、役職２８０３）に対する入力情報を受け付ける。なお、ステップＳ３２０７において、ログアウト操作やウィンドウを閉じる操作を受け付けた場合、本フローチャートを終了する。
【０１２５】
ステップＳ３２０８において、アプリケーションクライアント１０４のＣＰＵ２０１は、ステップＳ３２０７にて受け付けた入力情報をアプリケーションサーバ１０５に送信する。具体的には、従業員一覧画面７０１のパラメータ定義画面２０００（図２０）の次入出力パラメータ２００３に設定されている「Ｐ＿ＮＡＭＥ」「Ｐ＿ＥＭＡＩＬ」「Ｐ＿ＰＯＳＩＴＩＯＮ」の各入力項目に入力された値をパラメータとして順番にアプリケーションサーバ１０５に送信する。また、これらのパラメータと同時に、遷移先画面を特定する情報である次入出力２００２の値も送信する（次入出力２００２が空欄の場合は自画面に遷移することを意味する）。
【０１２６】
ステップＳ３２０９において、アプリケーションサーバ１０５のＣＰＵ２０１は、アプリケーションクライアント１０４から送信された入力情報および遷移先画面情報（次入出力２００２）を受信する。すなわち、ステップＳ３２０９は、出力情報を用いて出力された画面からの入力情報を受信する処理の一例を示すステップである。
【０１２７】
ステップＳ３２１０において、アプリケーションサーバ１０５のＣＰＵ２０１は、アプリケーション４３０内のプログラムから、次入出力２００２が示す入出力定義４０５から生成されたプログラムを取得してＲＡＭ２０２に記憶する。具体的には、アプリケーション４３０内のプログラムから、従業員一覧画面７０１の入出力定義情報（図１８〜図２０）を取得してＲＡＭ２０２に記憶する。
【０１２８】
ステップＳ３２１１において、アプリケーションサーバ１０５のＣＰＵ２０１は、ステップＳ３２１０にて取得した入出力定義４０５に係るデータモデル定義４０３から生成されたプログラムを取得してＲＡＭ２０２に記憶する。具体的には、アプリケーション４３０内のプログラムから、従業員一覧画面７０１の入出力定義基本設定画面１８００の対象データモデル１８０４として指定されているデータモデル定義４０３「ＥＭＰＬＯＹＥＥ＿ＪＯＩＮ＿ＤＭ」を取得してＲＡＭ２０２に記憶する。
【０１２９】
ステップＳ３２１２において、アプリケーションサーバ１０５のＣＰＵ２０１は、ステップＳ３２１１にて取得したデータモデル定義４０３のＳＱＬ文定義４０４であるｄｂＱｕｅｒｙ１７０２に設定されているクエリ（ＳＱＬ文）を取得し、ＲＡＭ２０２に記憶する。具体的には、アプリケーション４３０内のプログラムから、データモデル定義４０３のＳＱＬ文定義４０４であるｄｂＱｕｅｒｙ１７０２（図１７）から生成されたプログラムを取得してＲＡＭ２０２に記憶する。
【０１３０】
ステップＳ３２１３において、アプリケーションサーバ１０５のＣＰＵ２０１は、ステップＳ３２１２にて取得したクエリ（ＳＱＬ文）のパラメータ・名前関連付け定義４０６（図１８の対象条件１８０５）で使用されている値変換ルール関数２５０４（図２５）に係るプログラム（図４のＳＱＬ文変換ルール４１２）から生成されたプログラムを取得し、ＲＡＭ２０２に記憶する。具体的には、アプリケーション４３０内のプログラムから、入出力定義基本設定画面１８００の対象条件１８０５で使用されている値変換ルール関数(例えば、ＳＷ関数やＭＵＬＴＩ＿ＴＥＸＴ関数)に係るプログラム（ＳＱＬ文変換ルール４１２）を取得し、ＲＡＭ２０２に記憶する。
【０１３１】
ステップＳ３２１４において、アプリケーションサーバ１０５のＣＰＵ２０１は、ステップＳ３２０９にて受信した入力情報と、ステップＳ３２１２にて取得したクエリと、ステップＳ３２１３にて取得したＳＱＬ文変換ルール４１２とを用いて、クエリを変更する。具体的には、変更されたクエリは、図２４のＳＱＬ文２４０２やＳＱＬ文２４０３のようになる。すなわち、ステップＳ３２１４は、プログラム開発装置１０１により生成されたプログラムに含まれる入力定義情報と、受信した入力情報と、プログラム開発装置１０１により生成されたプログラムに含まれるクエリとを用いて、当該クエリを変更する処理の一例を示すステップである。
【０１３２】
ステップＳ３２１５において、アプリケーションサーバ１０５のＣＰＵ２０１は、データベースサーバ１０３にステップＳ３２０９にて変更されたクエリを送信する。
【０１３３】
ステップＳ３２１６において、データベースサーバ１０３のＣＰＵ２０１は、アプリケーションサーバ１０５から受信したクエリを実行し、データベースを操作する。このデータベース操作によってデータが取得された場合、データベースサーバ１０３のＣＰＵ２０１は、アプリケーションサーバ１０５に取得されたデータを送信する。アプリケーションサーバ１０５のＣＰＵ２０１は、データベースサーバ１０３から送信されたデータを受信する。すなわち、ステップＳ３２１６は、変更されたクエリを用いてデータベースを操作する処理の一例を示すステップである。
【０１３４】
なお、この実施形態においては、データベース操作によってデータが取得されるとしたが、ＤＭＬ（データ操作言語）による操作に限定するものではなく、ＤＤＬ（データ定義言語）やＤＣＬ（データ制御言語）のようにデータが取得されないデータベース操作であってもよい。
【０１３５】
ステップＳ３２０４に戻り、アプリケーションサーバ１０５のＣＰＵ２０１は、ＲＡＭ２０２に記憶されている入出力定義４０５の入力定義情報および出力定義情報に従って、ステップＳ３２１６にて取得されたデータを用いて、アプリケーションクライアント１０４の出力部２１０に出力する画面の出力情報を生成する。具体的には、従業員一覧画面７０１の入出力定義情報（図１９）に従って、データベースから取得されたデータ（例えば、結果レコード２８０５）を用いて、従業員一覧画面２８００の出力情報（例えば、Ｗｅｂアプリケーションの場合はＨＴＭＬ）を生成する。
以上で、図３２の説明を完了する。
【０１３６】
以上により、画面からの入力情報を用いて、データベースの操作に用いるクエリを変更するアプリケーションを生成する仕組みを提供することができる。また、開発者に対してプログラミング技術を要求することが無いため、開発者はＪａｖａ（登録商標）などのプログラミング技術を習得していなければならないという問題を解決することができる。
【０１３７】
また、チューニングのためにＳＱＬ文やＳＱＬ文を制御するプログラムをカスタマイズする場合、生成されたＳＱＬ文やプログラムへの修正が必要になってしまうという問題を解決することができる。また、ＳＱＬ文やＳＱＬ文を制御するプログラムがソースコード内で点在することが無いため、保守性が低いという問題を解決することができる。
【０１３８】
また、個別に作成したＳＱＬ文は動的に変更することができないといった問題を解決することができる。また、生成ツールにおいて、画面毎・機能毎に利用するＳＱＬをカスタマイズする場合、同じテーブルを操作するＳＱＬ文が複数できてしまうという問題を解決することができる。
【０１３９】
〔第２の実施形態〕
第１の実施形態は、入力定義情報と出力定義情報とクエリとを含むプログラムを生成することによって、画面から受け取った入力情報を用いて、データベースの操作に用いるクエリを変更するプログラムを生成する仕組みであり、第２の実施形態は、生成ツールにおいて入力された値を用いて、アプリケーションプログラムを生成することなく、データベースの操作に用いるクエリを動的に生成して表示することによって、動的クエリのデバッグを容易にする仕組みである。
【０１４０】
図３３〜図３８を用いて、第２の実施形態を説明する。
図３３は、第２の実施形態に係るクエリテスト実行のフローチャートの一例を示す図である。
なお、図３４はデータモデル定義画面におけるクエリテスト生成ボタンの一例を示す図、図３５は入出力定義画面における動的クエリの引数入力の一例を示す図、図３６はデータモデル定義画面における生成したクエリの一例を示す図、図３７はデータモデル定義画面におけるクエリテスト実行結果の一例を示す図、図３８はデータモデル定義画面におけるクエリテスト実行結果画面プレビューの一例を示す図である。
【０１４１】
図３３のフローチャートについて説明する。
ステップＳ３３０１において、プログラム開発装置１０１のＣＰＵ２０１は、データモデル定義の表示指示を受け付けた場合、データモデル定義画面３４００（図３４）にクエリテスト生成ボタン３４０１（図３４）を表示する。
ステップＳ３３０２において、プログラム開発装置１０１のＣＰＵ２０１は、クエリテスト生成ボタン３４０１の押下を受け付ける。
【０１４２】
ステップＳ３３０３において、プログラム開発装置１０１のＣＰＵ２０１は、表示しているデータモデル定義を利用する入出力定義４０５を特定し、入出力定義画面を表示する。具体的には、入出力定義４０５の対象データモデル３５０１（図３５）に、表示しているデータモデル定義４０３が設定されている入出力定義４０５を特定し、特定した入出力定義４０５について、入出力定義画面３５００（図３５）を表示する。
【０１４３】
ステップＳ３３０４において、プログラム開発装置１０１のＣＰＵ２０１は、引数値の入力欄３５０３（図３５）を表示する。具体的には、対象条件３５０２（図３５）の設定内容から、引数を表す“＠数字”の文字列を特定し、特定された引数の分だけ入力できる入力欄３５０３を表示する。
【０１４４】
なお、本実施形態においては、入出力定義画面３５００に入力欄３５０３を表示するとしたが、これに限定するものではなく、入出力定義画面３５００ではなくデータモデル定義画面３４００に入力欄３５０３を表示するとしてもよい（不図示）。この場合、データモデル定義画面だけで、引数値の入力、動的クエリがどのようなクエリに変化するか、そのクエリによってどのような実行結果が返ってくるか、その実行結果によってどのような結果画面が表示されるかの把握ができるため、開発効率を向上させることができる。
【０１４５】
ステップＳ３３０５において、プログラム開発装置１０１のＣＰＵ２０１は、入力欄３５０３への値の入力を受け付ける。すなわち、ステップＳ３３０５は、クエリに含まれるパラメータに対して、テストする値の設定を受け付ける処理の一例を示すステップである。
【０１４６】
ステップＳ３３０６において、プログラム開発装置１０１のＣＰＵ２０１は、入力された値とＳＱＬ文定義４０４により管理されるクエリ（図３４の３４０２）を用いて、データベースに送信するクエリを生成する。すなわち、ステップＳ３３０６は、受け付けた値に従って、クエリを変更する処理の一例を示すステップである。具体的なクエリの生成方法については、図２４および図２５にて説明を行ったため省略する。
【０１４７】
ステップＳ３３０７において、プログラム開発装置１０１のＣＰＵ２０１は、ステップＳ３３０６にて生成したクエリを表示する（図３６の３６０１）。なお、表示するクエリは値３６０１のように、入力欄３５０３への入力値がクエリのどこに反映されたかを識別できるようにして表示する。
【０１４８】
具体的には、クエリにはパラメータ（：ｅｍｐｌｏｙｅｅ＿ｉｄ）が存在するが入力欄３５０３への入力値が存在しないため行削除される場合は３６０２のように取消線を引く、入力欄３５０３（引数＠１）への入力値がＮＵＬＬであるため行削除される場合は３６０３のようにパラメータ部分に“ＮＵＬＬ”であることを重畳して表示し取消線を引く、入力欄３５０３（引数＠２）への入力値がある場合は３６０４のように入力値“ｎｉｓｈｉｄａ”であることを重畳して表示する、入力欄３５０３（引数＠３）への入力値が複数ある場合は３６０５のように入力値“一般職，課長”とカンマで区切って重畳して表示する。
【０１４９】
なお、本実施形態においては、値３６０１に含まれるパラメータを入力欄３５０３への入力値に置き換えて表示するとしたが、これに限定するものではなく、値３６０１に含まれるパラメータは表示したまま、パラメータの近傍に入力欄３５０３への入力値を重畳表示するとしてもよい。または、値３６０１に含まれるパラメータは表示したまま、パラメータにカーソルをあてることで入力欄３５０３への入力値を表示する等としてもよい。
【０１５０】
すなわち、ステップＳ３３０７は、設定を受け付けた値を識別して変更されたクエリを表示する、クエリと当該クエリに含まれるパラメータの近傍に設定を受け付けた値とを表示する、およびクエリをＮＵＬＬ値の設定されたパラメータを含む当該クエリの行を取消線で取り消して表示する、表示方法のうち少なくとも１つの表示方法を用いて表示する処理の一例を示すステップである。
【０１５１】
このように、クエリ（値３６０１）を表示することによって、アプリケーション開発者は動的クエリがどのようなクエリに変化するか、アプリケーションプログラムを生成することなく、開発段階で確認することができる。これにより、動的クエリを用いたアプリケーション開発に不慣れな開発者であっても、デバッグを容易にすることができるため、開発効率を向上させることができる。
【０１５２】
なお、ステップＳ３３０７にてクエリを表示した時、当然クエリは生成済であるため、クエリテスト生成ボタン３４０１は、押下できないように無効にし（図３４の３４０１）、入力欄３５０３の値が変更された場合に再び押下できるよう有効にするとしてもよい。
ステップＳ３３０８において、プログラム開発装置１０１のＣＰＵ２０１は、クエリテスト実行ボタン３６０６（図３６）を表示し、押下を受け付ける。
ステップＳ３３０９において、プログラム開発装置１０１のＣＰＵ２０１は、ステップＳ３３０６にて生成したクエリをデータベースサーバ１０３に送信する。
ステップＳ３３１０において、データベースサーバ１０３のＣＰＵ２０１は、クエリを受信する。
【０１５３】
ステップＳ３３１１において、データベースサーバ１０３のＣＰＵ２０１は、受信したクエリを実行する。なお、このクエリ実行はテストとして行うため、ＩＮＳＥＲＴ／ＵＰＤＡＴＥ／ＤＥＬＥＴＥなどのデータを追加・更新・削除するクエリの場合、コミットせず行う。すなわち、ステップＳ３３１１は、クエリを用いて、テストとしてクエリを実行するために、コミットせずにデータベースを操作する処理の一例を示すステップである。
ステップＳ３３１２において、データベースサーバ１０３のＣＰＵ２０１は、クエリの実行結果をプログラム開発装置１０１に送信する。
【０１５４】
ステップＳ３３１３において、プログラム開発装置１０１のＣＰＵ２０１は、クエリの実行結果を受信する。すなわち、ステップＳ３３１３は、データベースから出力されたクエリ実行結果を取得する処理の一例を示すステップである。
【０１５５】
ステップＳ３３１４において、プログラム開発装置１０１のＣＰＵ２０１は、クエリの実行結果を表示する（図３７の３７０１）。すなわち、ステップＳ３３１４は、取得されたクエリ実行結果を表示する処理の一例を示すステップである。なお、実行結果を表示した時、当然クエリは実行済であるため、クエリテスト実行ボタン３６０６は、押下できないように無効にし（図３７の３６０６）、ステップＳ３３０６にて異なるクエリが生成された場合に再び押下できるよう有効にするとしてもよい。
【０１５６】
このように、実行結果３７０１を表示することによって、アプリケーション開発者は動的クエリによってどのような実行結果が返ってくるか、アプリケーションプログラムを生成することなく、開発段階で確認することができる。これにより、動的クエリを用いたアプリケーション開発に不慣れな開発者であっても、デバッグを容易にすることができるため、開発効率を向上させることができる。
ステップＳ３３１５において、プログラム開発装置１０１のＣＰＵ２０１は、結果画面プレビューボタン３７０２（図３７）の押下を受け付ける。
【０１５７】
ステップＳ３３１６において、プログラム開発装置１０１のＣＰＵ２０１は、プレビュー表示する画面定義情報を取得する。具体的には、ステップＳ３３０３にて特定した入出力定義４０５に設定されている画面レイアウトおよび出力定義情報を取得する。
【０１５８】
ステップＳ３３１７において、プログラム開発装置１０１のＣＰＵ２０１は、取得した画面定義情報を用いて、プレビュー表示する画面情報を生成する。すなわち、ステップＳ３３１７は、取得されたクエリ実行結果と出力定義情報とを用いて、画面の出力情報を生成する処理の一例を示すステップである。
【０１５９】
ステップＳ３３１８において、プログラム開発装置１０１のＣＰＵ２０１は、生成された画面情報を用いて、結果画面３８０１（図３８）を表示する。すなわち、ステップＳ３３１８は、生成された出力情報を用いて、画面を表示する処理の一例を示すステップである。なお、結果画面３８０１を表示した時、当然プレビュー済であるため、結果画面プレビューボタン３７０２は、押下できないように無効にし（図３８の３７０２）、ステップＳ３３０６にて異なるクエリが生成された場合に再び押下できるよう有効にするとしてもよい。
【０１６０】
なお、本実施形態においては、データモデル定義画面３８００に結果画面３８０１を表示するとしたが、これに限定するものではなく、データモデル定義画面３８００とは別のウィンドウに結果画面３８０１を表示するとしてもよい。
【０１６１】
このように、結果画面３８０１を表示することによって、アプリケーション開発者は動的クエリによってどのような結果画面が表示されるか、アプリケーションプログラムを生成することなく、開発段階で確認することができる。これにより、動的クエリを用いたアプリケーション開発に不慣れな開発者であっても、デバッグを容易にすることができるため、開発効率を向上させることができる。
以上で、図３３の説明を終了する。
【０１６２】
なお、図３３のクエリテスト実行処理は、図２７のアプリケーションプログラム生成処理をすることなく、行うことができる。なぜなら、ステップＳ３３０１〜ステップＳ３３１８の実行においては、生成ツールによって生成されるアプリケーションプログラムは不要であり、必要なものは入出力定義４０５、データモデル定義４０３、画面定義情報（画面レイアウトおよび出力定義情報）の定義情報だからである。なお、ステップＳ３３１７にて生成されるプレビュー用の画面情報は、画面定義情報とクエリ実行結果を用いてＨＴＭＬ等のプレビュー画面情報を生成するプレビュー画面生成プログラムを生成ツールに備えておけばよく、図３３のクエリテスト実行のために開発中のアプリケーションのプログラムをわざわざ生成＆デプロイする必要がない。
【０１６３】
以上により、アプリケーションプログラム生成ツールにおいて入力された値を用いて、アプリケーションプログラムを生成することなく、データベースの操作に用いるクエリを動的に生成して表示することによって、動的クエリのデバッグを容易にすることができる。
【０１６４】
よって、アプリケーション開発者が動的クエリの引数を入力することにより、動的クエリがどのようなクエリに変化するか、そのクエリによってどのような実行結果が返ってくるか、その実行結果によってどのような結果画面が表示されるかを、アプリケーションプログラムを生成することなく、開発段階で確認することができるため、動的クエリのデバッグを容易にすることができる。これにより、アプリケーション開発者は、アプリケーションプログラムを生成、デプロイし、ブラウザを用いて値を入力し、デバッガを用いてクエリ・実行結果を確認し、ブラウザに戻って結果画面を確認するといった、動的クエリのデバックに係る煩わしさを軽減することができるようになる。
【０１６５】
以上により、動的クエリを用いたアプリケーション開発に不慣れな開発者であっても、デバッグを容易にすることができるため、開発効率を向上させることができる。
【０１６６】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【０１６７】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【０１６８】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ、シリコンディスク等を用いることが出来る。
【０１６９】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１７０】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１７１】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１７２】
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、ＯＳ（オペレーティングシステム）に供給されるスクリプトデータ等の形態から成ってもよい。
【０１７３】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１７４】
１０１  プログラム開発装置
１０２  プログラム開発サーバ
１０３  データベースサーバ
１０４  アプリケーションクライアント
１０５  アプリケーションサーバ
１０６  ネットワーク
【図１】
0006770225.tif 000002
【図２】
0006770225.tif 000003
【図３】
0006770225.tif 000004
【図４】
0006770225.tif 000005
【図５】
0006770225.tif 000006
【図６】
0006770225.tif 000007
【図７】
0006770225.tif 000008
【図８】
0006770225.tif 000009
【図９】
0006770225.tif 000010
【図１０】
0006770225.tif 000011
【図１１】
0006770225.tif 000012
【図１２】
0006770225.tif 000013
【図１３】
0006770225.tif 000014
【図１４】
0006770225.tif 000015
【図１５】
0006770225.tif 000016
【図１６】
0006770225.tif 000017
【図１７】
0006770225.tif 000018
【図１８】
0006770225.tif 000019
【図１９】
0006770225.tif 000020
【図２０】
0006770225.tif 000021
【図２１】
0006770225.tif 000022
【図２２】
0006770225.tif 000023
【図２３】
0006770225.tif 000024
【図２４】
0006770225.tif 000025
【図２５】
0006770225.tif 000026
【図２６】
0006770225.tif 000027
【図２７】
0006770225.tif 000028
【図２８】
0006770225.tif 000029
【図２９】
0006770225.tif 000030
【図３０】
0006770225.tif 000031
【図３１】
0006770225.tif 000032
【図３２】
0006770225.tif 000033
【図３３】
0006770225.tif 000034
【図３４】
0006770225.tif 000035
【図３５】
0006770225.tif 000036
【図３６】
0006770225.tif 000037
【図３７】
0006770225.tif 000038
【図３８】
0006770225.tif 000039