(57)【要約】【課題】システム開発における生産性を向上させる。【解決手段】ソースコード生成システムは、少なくとも１つのデータ項目を有するテーブルの該データ項目を示す項目情報を含むテーブル定義情報を記憶するテーブル定義記憶部と、テーブルに対する操作に応じた処理を実行するためのソースコードのテンプレートを記憶するテンプレート記憶部と、テーブル定義情報と、テンプレートとに基づいて、操作を実行するためのソースコードを生成するソースコード生成部と、を備える。【選択図】図２
2013238976.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのデータ項目を有するテーブルの該データ項目を示す項目情報を含むテーブル定義情報を記憶するテーブル定義記憶部と、
テーブルに対する操作に応じた処理を実行するためのソースコードのテンプレートを記憶するテンプレート記憶部と、
前記テーブル定義情報と、前記テンプレートとに基づいて、前記操作を実行するためのソースコードを生成するソースコード生成部と、
を備えるソースコード生成システム。
【請求項２】
請求項１に記載のソースコード生成システムであって、
前記テーブル定義情報は、さらに、前記テーブルに対して実行される操作を示す操作情報を含み、
前記ソースコード生成部は、前記テーブル定義情報と、前記テンプレートとに基づいて、前記操作情報によって示される操作を実行するためのソースコードを生成する、
ソースコード生成システム。
【請求項３】
請求項２に記載のソースコード生成システムであって、
前記操作情報は、前記操作の種別を示す種別情報を含み、
前記テンプレート記憶部は、操作の種別ごとに前記テンプレートを記憶し、
前記ソースコード生成部は、前記テーブル定義情報と、前記種別情報によって示される操作の種別に応じたテンプレートとに基づいて、前記操作を実行するためのソースコードを生成する、
ソースコード生成システム。
【請求項４】
請求項２または３に記載のソースコード生成システムであって、
前記操作情報は、前記操作で用いられるデータ項目を示す操作項目情報を含み、
前記テンプレートは、所定のデータ項目に対して前記操作を実行するためのソースコードを含み、
前記ソースコード生成部は、前記所定のデータ項目に対して前記操作を実行するためのソースコードから、前記操作項目情報によって示されるデータ項目を用いて前記操作を実行するためのソースコードを生成する、
ソースコード生成システム。
【請求項５】
請求項１〜４の何れか一項に記載のソースコード生成システムであって、
前記テンプレート記憶部は、アプリケーションを構成する層ごとに前記テンプレートを記憶し、
前記ソースコード生成部は、前記テーブル定義情報と、前記層ごとのテンプレートとに基づいて、前記操作を実行するためのソースコードを層ごとに生成する、
ソースコード生成システム。
【請求項６】
請求項５に記載のソースコード生成システムであって、
前記層は、少なくとも、Ｗｅｂクライアントとのインタフェースを行うためのプレゼンテーション層、ビジネスロジックに応じた処理を実行するロジック層、及びテーブルが格納されたデータベースへアクセスするためのデータアクセス層を含む、
ソースコード生成システム。
【請求項７】
請求項１〜６の何れか一項に記載のソースコード生成システムであって、
前記テンプレートは、所定のデータ項目に対して所定の操作を実行するためのソースコードを含み、
前記ソースコード生成部は、前記所定のデータ項目に対して前記所定の操作を実行するためのソースコードから、前記項目情報によって示されるデータ項目を用いて前記所定の操作を実行するためのソースコードを生成する、
ソースコード生成システム。
【請求項８】
請求項７に記載のソースコード生成システムであって、
前記所定の操作は、レコードの生成、更新、または削除を含む、
ソースコード生成システム。
【請求項９】
コンピュータが、
少なくとも１つのデータ項目を有するテーブルの該データ項目を示す項目情報と、該テーブルに対して実行される操作を示す操作情報とを含むテーブル定義情報をテーブル定義記憶部に記憶し、
テーブルに対する操作に応じた処理を実行するためのソースコードのテンプレートをテンプレート記憶部に記憶し、
前記テーブル定義情報と、前記テンプレートとに基づいて、前記操作を実行するためのソースコードを生成する、
ソースコード生成方法。
【請求項１０】
コンピュータに、
少なくとも１つのデータ項目を有するテーブルの該データ項目を示す項目情報を含むテーブル定義情報をテーブル定義記憶部に記憶する機能と、
テーブルに対する操作に応じた処理を実行するためのソースコードのテンプレートをテンプレート記憶部に記憶する機能と、
前記テーブル定義情報と、前記テンプレートとに基づいて、前記操作を実行するためのソースコードを生成する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード生成システムに関する。
【背景技術】
【０００２】
情報処理システムの開発にあたっては、生産性や保守性、拡張性を向上させることが重要となる。例えば、共通して利用される機能を部品化することは一般的に行われている。また、システムの機能を、例えば、ユーザインタフェースを制御するプレゼンテーション層、業務要件に応じた処理を行うビジネスロジック層、データベースへのアクセスを制御するデータアクセス層などの複数層に階層化する手法も用いられている。そして、このような階層化されたシステムの構築を支援するためにフレームワークが用いられることもある（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−０５３８３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、フレームワークでは、各層のソースコードのテンプレートが出力される程度であり、システムにおいて用いられるデータの構造に応じたソースコードが生成されるわけではない。そのため、出力されたテンプレート中にデータ構造や業務要件に応じたソースコードを追加する工数が大きくなり、生産性の向上を妨げる一因となっている。
【０００５】
本発明はこのような事情に鑑みてなされたものであり、システム開発における生産性を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面に係るソースコード生成システムは、少なくとも１つのデータ項目を有するテーブルの該データ項目を示す項目情報を含むテーブル定義情報を記憶するテーブル定義記憶部と、テーブルに対する操作に応じた処理を実行するためのソースコードのテンプレートを記憶するテンプレート記憶部と、テーブル定義情報と、テンプレートとに基づいて、操作を実行するためのソースコードを生成するソースコード生成部と、を備える。
【０００７】
なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、１つの「部」や装置が有する機能が２つ以上の物理的手段や装置により実現されても、２つ以上の「部」や装置の機能が１つの物理的手段や装置により実現されてもよい。
【発明の効果】
【０００８】
本発明によれば、システム開発における生産性を向上させることが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態であるソースコード生成システムを含む情報処理システムの構成を示す図である。
【図２】ソースコード生成システムの構成の一例を示す図である。
【図３】項目定義情報の一例を示す図である。
【図４】テーブル定義情報の一例を示す図である。
【図５】テンプレート記憶部６４の構造の一例を示す図である。
【図６】検索操作のＶｉｅｗ層のテンプレートの一例を示す図である。
【図７】検索操作のＶｉｅｗ層におけるソースコードが生成された例を示す図である。
【図８】生成されたソースコードに基づいて表示される画面の一例を示す図である。
【図９】ソースコード生成の一例を説明するための図である。
【図１０】ソースコード生成の他の一例を説明するための図である。
【図１１】ソースコード生成システムにより生成されたソースコードの、Ｗｅｂアプリケーションシステムへの適用を説明するための図である。
【図１２】ソースコード生成システムにおけるソースコード生成処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の一実施形態について説明する。図１は、本発明の一実施形態であるソースコード生成システムを含む情報処理システムの構成を示す図である。情報処理システムは、Ｗｅｂアプリケーションシステム１０、Ｗｅｂクライアント１２、データベース（ＤＢ）１４、及びソースコード生成システム２０を含んで構成されている。
【００１１】
Ｗｅｂアプリケーションシステム１０は、Ｗｅｂクライアント１２からの要求に応じて各種処理を実行することにより、Ｗｅｂクライアント１２に対してサービスを提供するものである。Ｗｅｂアプリケーションシステム１０は、例えば、１台または複数台の情報処理装置を用いて構成することができる。
【００１２】
Ｗｅｂクライアント１２は、Ｗｅｂアプリケーションシステム１０を利用するユーザ端末であり、例えば、パーソナルコンピュータや携帯端末などの情報処理装置を用いて構成することができる。Ｗｅｂクライアント１２は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネット等のネットワークを介して、Ｗｅｂアプリケーションシステム１０と通信可能に接続される。
【００１３】
ＤＢ１４は、Ｗｅｂアプリケーションシステム１０において用いられるデータを格納するための記憶領域であり、データベース製品の仕様に応じたフォーマットでデータを記憶する。ＤＢ１４は、例えば、ＬＡＮやファイバーチャネル等のネットワークを介して、Ｗｅｂアプリケーションシステム１０と通信可能に接続される。
【００１４】
ソースコード生成システム２０は、Ｗｅｂアプリケーションシステム１０のためのソースコードを生成するものであり、例えば、１台または複数台の情報処理装置を用いて構成することができる。
【００１５】
まず、Ｗｅｂアプリケーションシステム１０の構成について説明し、その後、ソースコード生成システム２０の構成について説明する。
＝＝Ｗｅｂアプリケーションシステム＝＝
【００１６】
図１に示すように、Ｗｅｂアプリケーションシステム１０は、プレゼンテーションロジック（ＰＬ）層３０及びビジネスロジック（ＢＬ）層３２を含んで構成されている。各層の機能は、例えば、メモリやハードディスク等の記憶領域に格納されたプログラムをプロセッサが実行することにより実現することができる。
【００１７】
ＰＬ層３０は、Ｗｅｂクライアント１２とのインタフェースに関する機能を提供するレイヤである。図１に示す例では、ＰＬ層３０は、ビュー（Ｖｉｅｗ）層４０及びアクション（Ａｃｔｉｏｎ）層４２を含んで構成されている。
【００１８】
Ｖｉｅｗ層４０は、Ｗｅｂクライアント１２からのリクエストの受信、リクエストにおけるパラメータに対するバリデーションやフォーマットの実施、Ａｃｔｉｏｎ層４２のアクションの呼び出し、画面遷移制御、例外処理制御などを行う。Ｖｉｅｗ層４０は、例えばサーブレットを用いて実現することが可能である。Ｖｉｅｗ層４０は、例えば、画面間の遷移関係の定義や、複数のリクエスト間でデータを共有する範囲を示す対話（Ｃｏｎｖｅｒｓａｔｉｏｎ）の開始と終了の定義などを含む画面遷移定義に基づいて、画面遷移を制御することができる。また、Ｖｉｅｗ層４０は、例えば、画面レイアウトやデータの入出力設定、バリデーション、フォーマット、各種イベント処理、アクション呼び出しなどを規定した、ＸＨＴＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）のソースコードに基づいて各種制御を行うことができる。
【００１９】
Ａｃｔｉｏｎ層４２は、ＰＬ層３０とＢＬ層３２との間を仲介するものであり、例えば、Ｓｅｒｖｉｃｅ層５０のサービスを呼び出したり、サービス実行結果に応じた遷移先画面に対応する戻り値をＶｉｅｗ層４０へ出力したりすることができる。Ａｃｔｉｏｎ層４２では、対話範囲（Ｃｏｎｖｅｒｓａｔｉｏｎ  Ｓｃｏｐｅ）内でデータを共有するためのＷｅｂＤＴＯ（Ｄａｔａ  Ｔｒａｎｓｆｅｒ  Ｏｂｊｅｃｔ）にデータを保持することができる。Ａｃｔｉｏｎ層４２は、Ｓｅｒｖｉｃｅ層５０のサービスを呼び出す際には、該サービスの実行に必要な引数をＤＴＯを介してＳｅｒｖｉｃｅ層５０に渡すことができる。また、Ａｃｔｉｏｎ層４２は、サービスの実行結果を、ＤＴＯを介してＳｅｒｖｉｃｅ層５０から受け取ることができる。
【００２０】
Ａｃｔｉｏｎ層４２は、例えば、アクションクラスと、ページアクションクラスとを用いて実現することができる。アクションクラスは、例えば、Ｓｅｒｖｉｃｅ層５０のサービス呼び出しや、サービス実行結果の判定、サービス実行結果に応じた遷移先画面に対応する戻り値の出力、Ｓｅｒｖｉｃｅ層５０との間のＤＴＯを介したデータ変換などを行うことができる。また、ページアクションクラスは、例えば、画面描画に必要となる、データ初期化や定数項目の設定等を行うことができる。
【００２１】
ＢＬ層３２は、ビジネスロジックに関する処理を実行する機能を提供するレイヤである。図１に示す例では、ＢＬ層３２は、サービス（Ｓｅｒｖｉｃｅ）層５０、ロジック（Ｌｏｇｉｃ）層５２、ＤＡＯ（Ｄａｔａ  Ａｃｃｅｓｓ  Ｏｂｊｅｃｔ）層５４を含んで構成されている。
【００２２】
Ｓｅｒｖｉｃｅ層５０は、ＰＬ層３０とＢＬ層３２との間を仲介するものである。つまり、Ｓｅｒｖｉｃｅ層５０は、ＰＬ層３０に対するファサードとして機能することができる。具体的には、例えば、業務要件に応じてＬｏｇｉｃ層５２やＤＡＯ層５４が変更された場合に、ＰＬ層３０を変更する必要がないよう、Ｓｅｒｖｉｃｅ層５０がその変更を吸収する。また、Ｓｅｒｖｉｃｅ層５０は、トランザクションの起点及び終点を制御することができる。
【００２３】
Ｓｅｒｖｉｃｅ層５０は、例えば、サービスクラスを用いて実現することができる。サービスクラスは、例えば、Ｌｏｇｉｃ層５２のロジックの呼び出しや、Ｌｏｇｉｃ層５２との間のＤＴＯを介したデータ変換、トランザクション属性の設定、トランザクションのロールバックなどを行うことができる。
【００２４】
Ｌｏｇｉｃ層５２は、ビジネスロジックを実行するものである。Ｌｏｇｉｃ層５２は、例えば、ロジッククラスを用いて実現することができる。ロジッククラスは、例えば、業務要件を考慮したデータ項目のチェックや、業務要件に応じた各種計算処理、ＤＡＯ層５４との間のＤＴＯを介したデータ変換などを行うことができる。
【００２５】
ＤＡＯ層５４は、ＤＢ１４へのアクセスを行うものである。ＤＡＯ層５４は、例えば、ＤＡＯクラスを用いて実現することができる。ＤＡＯクラスは、例えば、ＤＢ１４から取得したデータをＤＴＯを介してＬｏｇｉｃ層５２のロジックに提供することができる。
【００２６】
以上のように構成されるＷｅｂアプリケーションシステム１０における処理の流れは、例えば次のようになる。
【００２７】
まず、Ｖｉｅｗ層４０では、サーブレットがＷｅｂクライアント１２からリクエストを受け取る。Ａｃｔｉｏｎ層４２では、リクエストで指定されたアクションが実行される。そして、Ｓｅｒｖｉｃｅ層５０では、アクションから呼び出されたサービスが実行される。また、Ｌｏｇｉｃ層５２では、サービスから呼び出されたロジックが実行され、ＤＡＯ層５４では、ロジックから呼び出されたＤＡＯが実行される。
【００２８】
一連の処理が実行されると、Ｖｉｅｗ層４０において、画面遷移定義に基づいて、処理の実行結果に応じた遷移先ページが決定される。そして、Ａｃｔｉｏｎ層４２において、遷移先ページに関連付けられたページアクションが実行される。Ｖｉｅｗ層４０では、ページアクションの実行結果に基づいてＨＴＭＬストリームが生成され、Ｗｅｂクライアント１２に送信される。
【００２９】
なお、図１に示したＷｅｂアプリケーションシステム１０の構成は一例にすぎない。例えば、レイヤの分割や、レイヤ間におけるデータ授受の方法等は、フレームワークの仕様等に応じて任意の方式を採用することができる。
＝＝ソースコード生成システム＝＝
【００３０】
ソースコード生成システム２０は、上述した複数レイヤで構成されるＷｅｂアプリケーションシステム１０のためのソースコードを生成するものである。図２は、ソースコード生成システムの構成の一例を示す図である。図２に示すように、ソースコード生成システム２０は、項目定義記憶部６０、テーブル定義記憶部６２、テンプレート記憶部６４、ソースコード生成部６６、及びソースコード記憶部６８を含んで構成することができる。
【００３１】
項目定義記憶部６０は、Ｗｅｂアプリケーションシステム１０において用いられるデータ項目の定義を示す項目定義情報を記憶する。図３は、項目定義情報の一例を示す図である。図３に示すように、項目定義情報は、項目名（論理）、項目名（物理）、項目名（Ｊａｖａ（登録商標））、Ｊａｖａクラス、データ型、桁数、チェック情報、及びフォーマットを含むことができる。項目定義記憶部６０は、例えば、図３に示したような項目をＣＳＶ（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓ）形式で記載した項目定義情報を、ネットワークや記憶媒体を介して受け取ることができる。
【００３２】
項目名（論理）は、論理的な項目名を示す情報である。図３に示すように、例えば、「契約開始日」や「期間区分」、「契約番号」などの日本語表記を項目名（論理）とすることができる。
【００３３】
項目名（物理）は、ＤＢ１４における項目名を示す情報である。図３に示すように、例えば、「ＫＥＩＹＡＫＵ＿ＳＴＡＲＴ＿ＤＡＴＥ」や「ＫＩＫＡＮ＿ＫＵＢＵＮ」、「ＫＥＩＹＡＫＵ＿ＮＯ」などのアルファベット表記を項目名（物理）とすることができる。
【００３４】
項目名（Ｊａｖａ）は、Ｗｅｂアプリケーションシステム１０におけるＪａｖａのクラスからＤＢ１４にアクセスする際の項目名を示す情報である。図３に示すように、例えば、「ｃｏｎｔｒａｃｔＳｔａｒｔ」や「ｔｅｒｍＤｉｖ」、「ｋｅｉｙａｋｕＮｏ」などのアルファベット表記（例えばキャメルケース）を項目名（Ｊａｖａ）とすることができる。
【００３５】
Ｊａｖａクラスは、Ｊａｖａにおけるデータのクラスを示す情報である。図３に示すように、例えば、「ｃｏｎｔｒａｃｔＳｔａｒｔ」のＪａｖａクラスは、日付クラスである「ｊａｖａ．ｕｔｉｌ．Ｄａｔｅ」とすることができる。また、例えば、「ｔｅｒｍＤｉｖ」のＪａｖａクラスは、文字列クラスである「Ｓｔｒｉｎｇ」とすることができる。
【００３６】
データ型は、ＤＢ１４におけるデータ項目の型を示す情報である。図３に示すように、例えば、「ＫＥＩＹＡＫＵ＿ＳＴＡＲＴ＿ＤＡＴＥ」のデータ型は、日付を示す「ＤＡＴＥ」とすることができる。また、例えば、「ＫＩＫＡＮ＿ＫＵＢＵＮ」のデータ型は、文字列を示す「ＣＨＡＲ」とすることができる。
【００３７】
桁数は、データ項目の桁数を示す情報である。なお、日付など、あらかじめ桁数が決まっているデータ項目については、項目定義情報の桁数は設定されていなくてもよい。一方、文字列の場合はデータ項目によって桁数が異なるため、例えば図３に示すように、「期間区分」については１桁、「契約番号」については７桁などと設定することができる。
【００３８】
チェック情報は、データ項目の妥当性をチェックするための種々の情報である。例えば、チェック情報には、データ項目をヌル（Ｎｕｌｌ）値とすることが可能であるかどうかを示す情報や、半角や全角、英字、数字などの文字種別を示す情報、数値範囲を示す情報などが含まれる。ソースコード生成システム２０では、このようなチェック情報に基づいてデータ項目の妥当性をチェックするためのソースコードを生成することができる。
【００３９】
フォーマットは、データ項目を画面に表示する際のフォーマットを示す情報である。例えば、図３に示すように、「契約開始日」のフォーマットを「＃＃＃＃／＃＃／＃＃」と定義することができる。例えば、「契約開始日」として、「２０１２年５月８日」を示すデータがＤＢ１４に記憶されている場合、ソースコード生成システム２０では、例えば、フォーマット「＃＃＃＃／＃＃／＃＃」に基づいて、「２０１２／０５／０８」と画面に表示するためのソースコードを生成することができる。
【００４０】
図２に戻り、テーブル定義記憶部６２は、Ｗｅｂアプリケーションシステム１０において用いられるテーブルの定義を示すテーブル定義情報を記憶する。図４は、テーブル定義情報の一例を示す図である。図４に示すように、テーブル定義情報は、テーブル情報、項目情報、及び操作情報を含むことができる。テーブル情報は、テーブルに関する情報である。項目情報は、テーブルに含まれるデータ項目に関する情報である。操作情報は、テーブルに対して行われる操作を定義する情報である。テーブル定義記憶部６２は、例えば、図４に示したような項目をＣＳＶ形式で記載したテーブル定義情報を、ネットワークや記憶媒体を介して受け取ることができる。なお、図４には、１つのテーブルのテーブル定義情報しか示していないが、テーブル定義記憶部６２は、Ｗｅｂアプリケーションシステム１０において用いられる複数のテーブルのテーブル定義情報を記憶することができる。
【００４１】
テーブル情報は、例えば図４に示すように、テーブル名（論理）、テーブル名（物理）、及びテーブル名（Ｊａｖａ）を含むことができる。
【００４２】
テーブル名（論理）は、論理的なテーブル名を示す情報である。図４に示すように、例えば、「契約」などの日本語表記をテーブル名（論理）とすることができる。
【００４３】
テーブル名（物理）は、ＤＢ１４におけるテーブル名を示す情報である。図４に示すように、例えば、「ＫＥＩＹＡＫＵ＿ＴＲＮ」などのアルファベット表記をテーブル名（物理）とすることができる。
【００４４】
テーブル名（Ｊａｖａ）は、Ｗｅｂアプリケーションシステム１０におけるＪａｖａのクラスからＤＢ１４にアクセスする際のテーブル名を示す情報である。図４に示すように、例えば、「ｋｅｉｙａｋｕＴｒｎ」などのアルファベット表記（例えばキャメルケース）をテーブル名（Ｊａｖａ）とすることができる。
【００４５】
項目情報は、例えば図４に示すように、項目名（論理）、項目名（物理）、データ型、桁数、及び主キーを含むことができる。項目名（論理）、項目名（物理）、及びデータ型については、項目定義記憶部６０に記憶されている項目定義情報におけるものと同様である。主キーは、テーブル内においてレコードを一意に識別するためのキーを示す情報である。図４に示す例では、主キーとなるデータ項目に「Ｙ」が設定されている。なお、項目情報は図４に示したものに限られない。例えば、項目情報は、データ項目をヌル（Ｎｕｌｌ）値とすることが可能であるかどうかを示す情報や、外部キーを示す情報、初期値を示す情報などを含んでいてもよい。
【００４６】
操作情報は、例えば図４に示すように、操作の種別を示す種別情報や、操作において用いられるデータ項目（操作項目）を示す操作項目情報を含むことができる。図４に示す例では、種別情報として「検索」が設定され、操作項目情報として「契約番号」が設定されている。これは、「契約」テーブルに対して、「契約番号」をキーとする「検索」操作が行われることを示している。なお、図４の例では、「検索」に関する操作情報しか示していないが、操作はこれに限られず、「更新」や「削除」など、テーブルに対する任意の操作に関する操作情報を設定することができる。また、同一の操作に対して、操作項目が異なる複数の操作情報を設定することも可能である。例えば、「契約番号」をキーとする「検索」の他に、「顧客コード」をキーとする「検索」についての操作情報が設定されることとしてもよい。
【００４７】
図２に戻り、テンプレート記憶部６４は、項目定義情報及びテーブル定義情報に基づいてソースコードを生成するためのテンプレートを記憶する。図５は、テンプレート記憶部６４の構造の一例を示す図である。図５に示すように、テンプレート記憶部６４は、テーブルに対する操作の種別ごとに、その操作に必要となるソースコードのテンプレートを記憶することができる。また、テンプレート記憶部６４は、Ｗｅｂアプリケーションシステム１０を構成するレイヤごとにテンプレートを記憶することができる。なお、図５では、操作種別及びレイヤごとにテンプレートが示されているが、テンプレートは、操作種別及びレイヤごとに別ファイルとして構成されていなくてもよい。例えば、レイヤごとに、複数の操作種別に対するテンプレートが、操作種別を識別可能な状態で１つのファイルとして構成されていてもよい。また、テンプレートは、独立したファイルとして構成されてなくてもよい。例えば、ソースコード生成部６６を実現するためのプログラムに組み込まれていることとしてもよい。
【００４８】
図６は、「検索」操作のＶｉｅｗ層４０のテンプレートの一例を示す図である。図６に示す例では、テンプレートには、［論理テーブル名］や、［検索項目］、［ｊａｖａテーブル名］などの情報が含まれている。これらの情報は、テンプレートからソースコードを生成する際に、操作に応じた情報に置換するための目印となるものである。図６には、「検索」操作のＶｉｅｗ層４０のテンプレートしか示していないが、他のレイヤや、他の操作に対するテンプレートについても、操作に応じた情報に置換するための目印を含むものとすることができる。
【００４９】
図２に戻り、ソースコード生成部６６は、項目定義情報及びテーブル定義情報に基づいて、テンプレートからソースコードを生成し、ソースコード記憶部６８に格納する。図７は、ソースコード生成の一例を示す図である。具体的には、図７は、図３に示した項目定義情報、図４に示したテーブル定義情報、及び図６に示したテンプレートから、「検索」操作のＶｉｅｗ層４０におけるソースコードが生成された例を示している。
【００５０】
ソースコード生成部６６は、テーブル定義記憶部６２を参照することにより、テーブルに対して定義されている操作情報を取得する。図４に示す例では、「契約」テーブルに対して、「契約番号」をキーとする「検索」操作が定義されている。
【００５１】
ソースコード生成部６６は、取得した操作情報に対応するテンプレートをテンプレート記憶部６４から取得する。例えば、ソースコード生成部６６は、図６に示す、「検索」操作のＶｉｅｗ層４０のテンプレートをテンプレート記憶部６４から取得する。
【００５２】
ソースコード生成部６６は、項目定義情報及びテーブル定義情報に基づいて、取得したテンプレートからソースコードを生成する。例えば、ソースコード生成部６６は、図６に示すテンプレート中の［論理テーブル名］及び［ｊａｖａテーブル名］を、それぞれ、テーブルのテーブル名（論理）及びテーブル名（Ｊａｖａ）に置換する。
【００５３】
また、ソースコード生成部６６は、図６に示すテンプレート中の［ｃｉｄ］を、対話ＩＤ（Ｃｏｎｖｅｒｓａｔｉｏｎ  ＩＤ）に置換する。なお、対話ＩＤは、複数のリクエスト間でデータを共有する範囲を示す「対話」を識別するための情報であり、ソースコード生成システム２０において保持しておくことができる。また、対話ＩＤを設定するための情報が、テーブル定義情報の操作情報に含まれていてもよい。
【００５４】
また、ソースコード生成部６６は、図６に示すテンプレート中の［検索項目］の目印がある位置に、「検索」操作における操作項目である「契約番号」による検索のためのソースコードを埋め込むことができる。図７の例では、部分１００が、このように生成されたソースコードに相当する。なお、部分１００を生成するためのテンプレートは、例えば、図６に示したテンプレートのファイルに含まれていてもよいし、ソースコード生成部６６のプログラムに埋め込まれていてもよい。図７に示す例では、部分１００には、操作項目情報に基づいて、操作項目の項目名（物理）や項目名（Ｊａｖａ）が設定されている。なお、ソースコード生成部６６は、例えば、項目名（Ｊａｖａ）など、テーブル定義情報に含まれない情報については、項目定義情報から取得することができる。
【００５５】
また、ソースコード生成部６６は、図６に示すテンプレート中の［Ｔａｂｌｅ］の目印がある位置に、「検索」操作の対象となるテーブルのデータ項目のためのソースコードを埋め込むことができる。図７の例では、部分１１０が、このように生成されたソースコードに相当する。なお、部分１１０を生成するためのテンプレートは、例えば、図６に示したテンプレートのファイルに含まれていてもよいし、ソースコード生成部６６のプログラムに含まれていてもよい。図７に示す例では、部分１１０には、テーブル定義情報の項目情報に基づいて、テーブルに含まれるデータ項目の項目名（物理）や項目名（Ｊａｖａ）が設定されている。なお、ソースコード生成部６６は、例えば、項目名（Ｊａｖａ）など、テーブル定義情報に含まれない情報については、項目定義情報から取得することができる。
【００５６】
図８は、図７に示したソースコードに基づいて表示される画面の一例を示す図である。図８に示す画面には、「契約番号」をキーとして「検索」操作を行うための情報が表示されている。このように、ソースコード生成部６６は、項目定義情報、テーブル定義情報、及びテンプレートに基づいて、テーブル定義情報の操作情報において規定された操作に対するソースコードを生成することができる。
【００５７】
なお、図６〜図８には、Ｖｉｅｗ層４０のソースコードを生成する例しか示していないが、ソースコード生成部６６は、他のレイヤについても同様に、項目定義情報、テーブル定義情報、及びテンプレートに基づいて、各レイヤに応じたソースコードを生成することができる。
【００５８】
図９は、ソースコード生成の一例を説明するための図である。図９に示すように、ソースコード生成部６６は、項目定義情報、テーブル定義情報、及びテンプレートに基づいて、各レイヤに対するソースコードを生成することができる。このとき、ソースコード生成部６６は、テーブル定義情報に含まれる操作情報に基づいて、該操作情報によって示される操作を実行するためのソースコードを生成することができる。具体的には、ソースコード生成部６６は、該操作を実行するためのテンプレートをテンプレート記憶部６４から取得し、項目定義情報及びテーブル定義情報に基づいてテンプレートを加工することにより、操作情報に応じたソースコードを生成することができる。
【００５９】
また、ソースコード生成部６６は、図１０に示すように、操作情報を用いずにソースコードを生成することもできる。例えば、ソースコード生成部６６は、項目定義情報、テーブル定義情報、及びテンプレートに基づいて、テーブルに対する基本的な操作を行うためのソースコードを生成することができる。テーブルに対する基本的な操作は、例えばテーブルに対するＣＲＵＤ操作である。ＣＲＵＤ操作とは、レコードの生成（Ｃ：Ｃｒｅａｔｅ）、検索（Ｒ：Ｒｅａｄ）、更新（Ｕ：Ｕｐｄａｔｅ）、削除（Ｄ：Ｄｅｌｅｔｅ）である。
【００６０】
図１１は、ソースコード生成システム２０により生成されたソースコードの、Ｗｅｂアプリケーションシステム１０への適用を説明するための図である。前述したように、ソースコード生成システム２０では、項目定義情報、テーブル定義情報、及びテンプレートに基づいて、各レイヤに対するソースコードが生成される。ソースコード生成部６６は、このように生成されるソースコードに対して、例えば、レイヤや操作種別を識別可能なファイル名を付与してソースコード記憶部６８に格納することができる。そして、ソースコード記憶部６８に記憶されているソースコードは、例えば、Ｗｅｂアプリケーションシステム１０の管理者によって、Ｗｅｂアプリケーションシステム１０に適用される。
【００６１】
なお、Ｗｅｂアプリケーションシステム１０への適用に際しては、必要に応じて、ソースコードのコンパイルなどが行われることとしてもよい。また、ソースコード生成部６６によって生成されたソースコードについて、コードの追加や修正が行われたうえで、Ｗｅｂアプリケーションシステム１０に適用されることとしてもよい。例えば、ＢＬ層３２のソースコードに対して、業務要件に応じたコードを追加することができる。また、単にコードを追加することができるだけではなく、ソースコード生成部６６によって生成されたソースコードを部品として用いることができる。具体的には、ソースコード生成部６６によって生成されたソースコードを一部修正を加えながら組み合わせることによって、より複雑なＷｅｂアプリケーションシステム１０を構築することができる。
【００６２】
なお、コードの追加や修正が行われるタイミングは任意である。例えば、ソースコード生成部６６によって生成されたソースコードをＷｅｂアプリケーションシステム１０に適用することにより、操作情報で定義された操作の基本的な動きを確認した後に、業務要件や顧客の要求に応じて、コードの追加や修正が行われることとしてもよい。
【００６３】
図１２は、ソースコード生成システム２０におけるソースコード生成処理の一例を示すフローチャートである。ソースコード生成部６６は、テーブル定義記憶部６２を参照し、ソースコードの生成が行われていないテーブル定義情報を取得する（Ｓ１２０１）。なお、テーブル定義記憶部６２には、ソースコード生成の未済を識別可能な状態でテーブル定義情報を格納しておくことができる。例えば、ソースコード生成の未済に応じてテーブル定義情報が格納されているフォルダを別のものとすることができる。また、ソースコードの生成未済を示す情報を、テーブル定義情報とは別にテーブル定義記憶部６２に格納しておくこととしてもよい。また、ソースコード生成部６６は、ソースコードを生成する対象のテーブル定義情報を、例えばユーザからの入力によって特定することとしてもよい。
【００６４】
ソースコード生成部６６は、テーブル定義情報を取得すると、テーブル定義情報に操作情報が設定されているかどうかを確認する（Ｓ１２０２）。操作情報が設定されている場合（Ｓ１２０２：Ｙ）、ソースコード生成部６６は、操作情報によって示される操作を実行するための各レイヤのソースコードを、項目定義情報、テーブル定義情報、及びテンプレートに基づいて生成し、ソースコード記憶部６８に格納する（Ｓ１２０３）。
【００６５】
テーブル定義情報に操作情報が設定されていない場合（Ｓ１２０２：Ｎ）、ソースコード生成部６６は、テーブル定義情報に含まれる項目情報に基づいて、テーブルのデータ項目に応じたソースコードを生成し、ソースコード記憶部６８に格納する（Ｓ１２０４）。例えば、ソースコード生成部６６は、テーブル定義情報の項目情報、項目定義情報、及びテンプレートに基づいて、テーブルに対するＣＲＵＤ操作を行うための各レイヤのソースコードを生成することができる。なお、ソースコード生成部６６は、操作情報に応じたソースコードの生成（Ｓ１２０３）を行った場合においても、データ項目に応じたソースコードの生成（Ｓ１２０４）を行うことができる。
【００６６】
取得したテーブル定義情報に基づくソースコードの生成後、ソースコード生成部６６は、テーブル定義記憶部６２を参照し、ソースコードの生成が行われていないテーブル定義情報があるかどうかを確認する（Ｓ１２０５）。ソースコードの生成が行われていないテーブル定義情報がある場合（Ｓ１２０５：Ｙ）、ソースコード生成部６６は、テーブル定義情報の取得処理（Ｓ１２０１）に戻り、ソースコードの生成処理（Ｓ１２０２〜Ｓ１２０４）を繰り返し実行する。そして、全てのテーブル定義情報からのソースコード生成が完了すると（Ｓ１２０５：Ｎ）、ソースコード生成部６６は、ソースコード生成処理を終了する。
【００６７】
以上、本実施形態におけるソースコード生成システム２０について説明した。本実施形態によれば、テーブル定義情報に含まれる項目情報と、テーブルに対して所定の操作を行うためのソースコードのテンプレートとに基づいて、該操作を実行するためのソースコードを生成することができる。ここで、所定の操作とは、例えば、テーブルに対するＣＲＵＤ操作とすることができる。このように、本実施形態によれば、Ｗｅｂアプリケーションシステム１０において用いられるテーブルのデータ構造に応じて所定の操作を実行するためのソースコードを生成することができる。これにより、Ｗｅｂアプリケーションシステム１０を開発する際の生産性を向上させることができる。
【００６８】
なお、ビジネスロジックの実装は、生成されたソースコードに対してビジネスロジックに応じたコードの追加や修正を行うことにより実現することができる。つまり、開発者は、生成されたソースコードに対してビジネスロジックに応じたコードの追加や修正のみを行えばよいため、生産性を向上させることができる。また、ビジネスロジックに関係しない基本的な部分については、テーブル定義情報及びテンプレートに基づいて生成されるため、開発者によらず一定の品質を確保することができる。そして、生成されたソースコードを部品として一部修正を加えながら組み合わせることによって、より複雑なＷｅｂアプリケーションシステム１０を構築することができる。
【００６９】
また、本実施形態によれば、テーブル定義情報に含まれる操作情報に基づいて、操作情報によって示される操作を実行するためのソースコードを生成することができる。つまり、テーブル定義情報に操作情報を設定しておくことにより、操作情報で定義可能な任意の操作を実行するためのソースコードを生成することが可能となる。これにより、Ｗｅｂアプリケーションシステム１０を開発する際の生産性をさらに向上させることができる。また、テーブルに対する任意の操作を実行するためのソースコードが、テーブル定義情報及びテンプレートに基づいて生成されるため、開発者によらず一定の品質を確保することも可能となる。さらに、開発者によって、テーブルに対して意図しない操作を行うようなソースコードが作成されることを防ぐことも可能となる。
【００７０】
また、本実施形態によれば、テーブル定義情報及びテンプレートに基づいて、レイヤごとのソースコードを生成することが可能である。そのため、Ｗｅｂアプリケーションシステム１０のように、複数レイヤで構成されるシステムの開発における生産性を向上させることができる。特に、複数レイヤで構成されるシステムの場合、レイヤごとに機能分担がされているため、各レイヤに対するテンプレートを作成しやすいことが多い。そのため、Ｗｅｂアプリケーションシステム１０のように複数レイヤで構成されたシステムのためのソースコードを生成する際に、生産性を向上させることが可能となる。
【００７１】
また、本実施形態ではソースコードの生成について説明したが、ソースコード生成システム２０は、ソースコードに限らず、Ｗｅｂアプリケーションシステム１０の開発の各段階において必要となる種々の要素を生成することができる。生成される要素としては、例えば、テストを実施する際に用いるテストコードやテストデータ、さらには設計書などがあげられる。このような要素の生成についても、ソースコードの生成と同様に、各要素のテンプレートを用意しておくことにより行うことができる。これにより、Ｗｅｂアプリケーションシステム１０を開発する際の生産性をさらに向上させることが可能となる。
【００７２】
なお、本実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更／改良され得るととともに、本発明にはその等価物も含まれる。
【符号の説明】
【００７３】
１０  Ｗｅｂアプリケーションシステム
１２  Ｗｅｂクライアント
１４  データベース
２０  ソースコード生成システム
３０  プレゼンテーションロジック層
３２  ビジネスロジック層
４０  Ｖｉｅｗ層
４２  Ａｃｔｉｏｎ層
５０  Ｓｅｒｖｉｃｅ層
５２  Ｌｏｇｉｃ層
５４  ＤＡＯ層
６０  項目定義記憶部
６２  テーブル定義記憶部
６４  テンプレート記憶部
６６  ソースコード生成部
６８  ソースコード記憶部
【図１】
2013238976.tif 000003
【図２】
2013238976.tif 000004
【図３】
2013238976.tif 000005
【図４】
2013238976.tif 000006
【図５】
2013238976.tif 000007
【図６】
2013238976.tif 000008
【図７】
2013238976.tif 000009
【図８】
2013238976.tif 000010
【図９】
2013238976.tif 000011
【図１０】
2013238976.tif 000012
【図１１】
2013238976.tif 000013
【図１２】
2013238976.tif 000014