(57)【要約】【課題】ソースコードのテンプレートの作成にかかる工数と、テンプレートの変更にともなう工数を削減することができるソースコードテンプレート生成装置を提供する。【解決手段】プロトタイプソースコード１０１を読み込む手段と、テンプレート変換ルールを定義したテンプレート変換定義情報１０２を読み込む手段と、テンプレート変換ルールに定義されている正規表現でプロトタイプソースコード１０１の文字列を検索する手段と、検索された文字列をテンプレート変換ルールに定義されているパラメータに置換するパラメータ変換部１０４と、検索と置換とを繰り返し、テンプレート変換ルールをすべて適用させる手段と、置換されたプロトタイプソースコード１０１をソースコードテンプレート１０６として生成する手段とを備えたソースコードテンプレート生成装置である。【選択図】図１
2009230606.tif 000002
【特許請求の範囲】
【請求項１】
プロトタイプのソースコードを読み込む手段と、
前記プロトタイプのソースコードをソースコードのテンプレートに変換するためのテンプレート変換ルールを定義したテンプレート変換定義情報を読み込む手段と、
前記テンプレート変換ルールに定義されている正規表現で前記プロトタイプのソースコードの文字列を検索する手段と、
検索された文字列を前記テンプレート変換ルールに定義されているパラメータに置換する手段と、
前記検索と置換とを繰り返し、前記テンプレート変換ルールをすべて適用させる手段と、
置換されたプロトタイプソースコードをソースコードテンプレートとして生成する手段とを備えたことを特徴とするソースコードテンプレート生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロトタイプのソースコードから、ソースコードのテンプレートを生成する装置に関するものである。
【背景技術】
【０００２】
ソフトウェア開発では、低コスト化・短納期化・高品質化の要求により、生産性向上を強く求められており、生産性を向上させる技術の1つとしてソースコードの自動生成技術が注目されている。
従来からソースコードを自動生成する技術としては、種々の技術が提案されている。例えば、テンプレートエンジンを使用し、ソースコードのテンプレートと設計情報からソースコードを自動生成する技術（例えば、特許文献１参照）等が知られている。
テンプレートエンジンを使用してソースコードを自動生成する場合、まず、ソースコードの雛形であるテンプレートを用意し、用意したソースコードのテンプレートに定義したパラメータを設計情報に変換することにより、ソースコードを自動生成する。テンプレートエンジンには、Apache Jakartaプロジェクトで開発されているVelocityやEclipseプロジェクトで開発されているJETなどが知られている。
【特許文献１】特開２００６−１０７０２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記の従来技術には次のような問題点がある。
ソースコードを自動生成するには、ソースコードの雛形であるテンプレートを作成する必要がある。単純なソースコードを自動生成する場合は、最初からソースコードテンプレートを作成することが可能かもしれないが、複雑なソースコードを自動生成する場合は、最初からソースコードテンプレートを作成するのは難しく非常に工数がかかるという問題点がある。
また、作成したソースコードテンプレートから生成されたソースコードが意図通りの動作をするかは、生成されたソースコードをコンパイルし、動作させるまでは分からないという問題がある。同様にソースコードテンプレートを変更する場合も、変更のたびに意図通りの動作をするかコンパイルし、動作を確認する作業を行う必要があるため非常に工数がかかる。
【０００４】
以上の現状に鑑み、本発明は、ソースコードのテンプレートの作成にかかる工数とソースコードのテンプレートの変更にともなう工数を削減することができるソースコードテンプレート生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項１に係る発明は、プロトタイプのソースコードを読み込む手段と、
前記プロトタイプのソースコードをソースコードのテンプレートに変換するためのテンプレート変換ルールを定義したテンプレート変換定義情報を読み込む手段と、
前記テンプレート変換ルールに定義されている正規表現で前記プロトタイプのソースコードの文字列を検索する手段と、
検索された文字列を前記テンプレート変換ルールに定義されているパラメータに置換する手段と、
前記検索と置換とを繰り返し、前記テンプレート変換ルールをすべて適用させる手段と、
置換されたプロトタイプソースコードをソースコードテンプレートとして生成する手段とを備えたことを特徴とするソースコードテンプレート生成装置を提供するものである。
【発明の効果】
【０００６】
本発明によるソースコードテンプレート生成装置によれば、プロトタイプのソースコードからソースコードのテンプレートを生成することができるため、プロトタイプのソースコードについてコンパイル及び動作の確認を行い、確認後プロトタイプのソースコードからソースコードのテンプレートを生成することで、ソースコードのテンプレートの作成にかかる工数とソースコードのテンプレートの変更にともなう工数を削減することができる。
【発明を実施するための最良の形態】
【０００７】
以下、実施例を示した図面を参照しつつ本発明の実施の形態を説明する。
図１は、本発明の一実施形態を示すソースコードテンプレート生成装置について、その内部構成を概略的に示すブロック図である。
本実施形態のソースコードテンプレート生成装置は、図１に示すように、プロトタイプソースコード１０１をテンプレート変換定義情報１０２に定義されている正規表現を基に文字列の検索を行う正規表現解析部１０３と、正規表現解析部１０３によって検索された文字列をテンプレート変換定義情報１０２に定義されているパラメータに置換を行うパラメータ変換部１０４と、パラメータ変換部１０４によって置換されたプロトタイプソースコードをソースコードテンプレート１０６として生成するソースコードテンプレート生成部１０５とで構成されている。
【０００８】
正規表現とは、文字列の検索や置換を行なうときに利用する文字列のパターンを表現する表記法である。通常の文字と、メタキャラクタと呼ばれる特別な意味を持った記号を組み合わせて表記する。例えば「.」は任意の1文字、「\w」は英数字、「*」は直前の要素の0回以上の繰り返しを意味する。
【０００９】
図２は、本発明によるソースコードテンプレートを生成する処理手順の概要を示すフローチャートである。図２を参照し、ソースコードテンプレートを生成する処理手順を説明する。
まず、プロトタイプのソースコードを作成し、コンパイル及び動作の確認済みのプロトタイプのソースコードを読み込む（ステップ２０１）。プロトタイプのソースコードをソースコードのテンプレートに変換するためのルールを定義したテンプレート変換定義情報を読み込む（ステップ２０２）。テンプレート変換定義情報のテンプレート変換ルールについて以下のステップを繰り返す（ステップ２０３）。テンプレート変換ルールに定義されている正規表現で文字列を検索する（ステップ２０４）。検索された文字列をテンプレート変換ルールに定義されているパラメータに置換する（ステップ２０５）。テンプレート変換ルールすべて適用後プロトタイプのソースコードをソースコードのテンプレートとして生成する（ステップ２０６）。
【００１０】
図３は、プロトタイプソースコードの例として単純なJava（登録商標）Beansのソースコードである。Java（登録商標）Beansとは、属性とその属性のsetter/getterメソッドを持つJava（登録商標）のクラスである。図３は、ログイン情報のIDとパスワードを格納するJava（登録商標）Beansである。３０１はパッケージ名を定義しており、３０２はクラス名を定義している。
String型のid属性とString型のpassword属性３０３を持ち、id属性とpassword属性のgetterメソッド３０４と、id属性とpassword属性のsetterメソッド３０５を持つ。
【００１１】
Java（登録商標）Beans程度の単純なソースコードであれば、最初からソースコードテンプレートを作成しても問題ないが、ここでは説明を分かりやすくするためにJava（登録商標）BeansのプロトタイプソースコードをJava（登録商標）Beansのソースコードテンプレートに変換する手順を例に説明する。
【００１２】
図４は、プロトタイプソースコードをソースコードテンプレートに変換するための正規表現およびパラメータを定義したテンプレート変換定義情報をXML(Extensible Markup Language)形式で定義したテンプレート変換ルールの例を示す図である。この例では、図３のJava（登録商標）Beansのプロトタイプソースコードをソースコードテンプレートに変換するためのテンプレート変換ルールを表している。
ここでは、テンプレートエンジンにEclipseプロジェクトで開発されているJETを使用する場合の例を表している。
【００１３】
<rule>タグに、テンプレート変換ルールが定義される。<rule>タグのmatch属性には正規表現が定義され、<rule>タグのiterate属性には、パラメータが複数回現れるか現れないかを表している。<rule>タグのiterate属性が”true”の場合、パラメータが0回以上現れ、<rule>タグのiterate属性が”false”の場合、パラメータが0または1回現れることを表している。<rule>タグのiterate属性が”true”の場合は、パラメータが0回以上現れるため、<parameter>タグの中に<parameter>タグを定義する必要がある。
<parameter>タグには、正規表現で検索された文字列を置換する文字列が定義されている。正規表現の「.*」（任意の1文字の0回以上の繰り返し）、または、「\w*」（は英数字の0回以上の繰り返し）の箇所を<parameter>タグの値で置換する。正規表現の「.*」、または、「\w*」の文字列と同じ数<parameter>タグを定義する必要がある。
<parameter>タグの値の<c:get>タグは設計情報を出力するためタグである。<iterate>タグはパラメータを繰り返し生成するためのタグである。
【００１４】
また、<parameter>タグにあるpackageName、className、uppercaseFirstは、JETで用意されている関数でそれぞれ、packageNameは完全修飾名からパッケージ名を取得する関数で、classNameは完全修飾名からクラス名を取得する関数で、uppercaseFirstは最初の1文字目を大文字にする関数である。
４０１、４０２、４０３、４０４、４０５の5つのテンプレート変換ルールを定義している。４０１は図３の３０１のテンプレート変換ルールで、４０２は図３の３０２のテンプレート変換ルールで、４０３は図３の３０３のテンプレート変換ルールで、４０４は図３の３０４のテンプレート変換ルールで、４０５は図３の３０５のテンプレート変換ルールを表している。
【００１５】
図５は、正規表現解析部がプロトタイプソースコードを解析し、パラメータ変換部が検索した文字列をパラメータに置換する処理の詳細を示すフローチャートである。
図５を参照し、正規表現解析部が図４のテンプレート変換定義情報の正規表現をもとに、図３のJava（登録商標）Beansのソースコードを解析し、パラメータ変換部が図４のテンプレート変換定義情報のパラメータに置換する方法を説明する。
まず、図３のJava（登録商標）Beansのプロトタイプソースコードを読み込む（ステップ５０１）。図３のJava（登録商標）Beansのプロトタイプソースコードをソースコードテンプレートに変換するためのルールを定義した図４のテンプレート変換定義情報を読み込む（ステップ５０２）。図４のテンプレート変換定義情報の<rule>タグについて繰り返す（ステップ５０３）。図４では５つの<rule>タグが定義されているため、それぞれの処理を<rule>タグごとに５回繰り返す。
【００１６】
図４の４０１の<rule>タグのmatch属性の正規表現から一致する文字列を検索する（ステップ５０４）。iterate属性が“false”のため<iterate>タグは追加しない（ステップ５０５）。図６の６０１が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
図４の４０２の<rule>タグのmatch属性の正規表現から一致する文字列を検索する（ステップ５０４）。iterate属性が“false”のため<iterate>タグは追加しない（ステップ５０５）。図７の７０１が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
【００１７】
図４の４０３の<rule>タグのmatch属性の正規表現から一致する文字列を検索する（ステップ５０４）。iterate属性が“true”のため<iterate>タグを追加する（ステップ５０５）。図８の８０１、８０２が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
【００１８】
図４の４０４の<rule>タグのmatch属性の正規表現から一致する文字列を検索する（ステップ５０４）。iterate属性が“true”のため<iterate>タグを追加する（ステップ５０５）。図９の９０１、９０２が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
【００１９】
図４の４０５の<rule>タグのmatch属性の正規表現から一致する文字列を検索する（ステップ５０４）。iterate属性が“true”のため<iterate>タグを追加する（ステップ５０５）。図１０の１００１、１００２が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
【００２０】
図１１は、ソースコードテンプレート生成部によって生成されたJava（登録商標）Beansのソースコードテンプレートである。図１１のJava（登録商標）Beansのソースコードテンプレートと設計情報とから、図３のJava（登録商標）Beansのソースコードを生成することができる。
【００２１】
以上のように、本発明によるソースコードテンプレート生成装置によれば、プロトタイプのソースコードからソースコードのテンプレートを生成することができるため、プロトタイプのソースコードについてコンパイル及び動作の確認を行い、確認後プロトタイプのソースコードからソースコードのテンプレートを生成することで、ソースコードのテンプレートの作成にかかる工数とソースコードのテンプレートの変更にともなう工数を削減することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明によるソースコードテンプレート生成装置の概略構成を示すブロック図である。
【図２】本発明によるソースコードテンプレートを生成する処理の概要を示すフローチャートである。
【図３】本発明に用いるJava（登録商標）Beansのプロトタイプソースコードである。
【図４】本発明によるJava（登録商標）Beansのテンプレート変換定義情報である。
【図５】本発明によるプロトタイプソースコードを解析し、パラメータに置換する処理の詳細を示すフローチャートである。
【図６】本発明によるテンプレート変換ルール４０１の適用範囲の説明図である。
【図７】本発明によるテンプレート変換ルール４０２の適用範囲の説明図である。
【図８】本発明によるテンプレート変換ルール４０３の適用範囲の説明図である。
【図９】本発明によるテンプレート変換ルール４０４の適用範囲の説明図である。
【図１０】本発明によるテンプレート変換ルール４０５の適用範囲の説明図である。
【図１１】本発明によるJava（登録商標）Beansのソースコードテンプレートである。
【符号の説明】
【００２３】
１０２  テンプレート変換定義情報
１０６  ソースコードテンプレート
【図１】
2009230606.tif 000003
【図２】
2009230606.tif 000004
【図３】
2009230606.tif 000005
【図４】
2009230606.tif 000006
【図５】
2009230606.tif 000007
【図６】
2009230606.tif 000008
【図７】
2009230606.tif 000009
【図８】
2009230606.tif 000010
【図９】
2009230606.tif 000011
【図１０】
2009230606.tif 000012
【図１１】
2009230606.tif 000013