(57)【要約】【課題】テンプレートのカスタマイズと動作確認を容易に行うことができるようにする。【解決手段】テンプレートソース編集部１０３が、テンプレートの生成元となるソースコードであるサンプルテキストを取得し、サンプルテキストのうちテンプレートの生成対象となるテキストをプログラムとして実行可能な状態としながら、テンプレートをコメントとしてサンプルテキストに挿入してテンプレートソースを生成する。テンプレートソースはコンパイルすることによりアプリケーションとして動作可能であり、テンプレートソースをアプリケーションとして動作させて、テンプレートの動作確認を行うことができる。【選択図】図１
2010020680.tif 000002
【特許請求の範囲】
【請求項１】
複数の部分データに区分されるテキストデータをテンプレート生成の雛形となるサンプルテキストとして入力するサンプルテキスト入力部と、
前記サンプルテキストの複数の部分データのうちテンプレートの生成対象として指定されたテンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記テンプレート生成部分データに対するテンプレートを部分テンプレートとして前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入するテンプレート挿入部とを有することを特徴とする情報処理装置。
【請求項２】
前記サンプルテキスト入力部は、
プログラムコードを前記サンプルテキストとして入力し、
前記テンプレート挿入部は、
サンプルテキストごとにカスタマイズされるカスタマイズ対象部分以外の部分データとともに前記テンプレート生成部分データがプログラムコードとして実行可能な状態で前記テンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記部分テンプレートをコメント化して前記サンプルテキストに挿入することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記テンプレート挿入部は、
前記テンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記部分テンプレートにコメント符号を付加して前記部分テンプレートをコメント化して前記サンプルテキストに挿入し、テンプレートの原型となるテンプレートソースを生成し、
前記情報処理装置は、更に、
前記テンプレートソースから、前記テンプレート生成部分データを削除するとともに、前記部分テンプレートに付加されているコメント符号を削除するテンプレート生成部を有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記テンプレート挿入部は、
前記テンプレート生成部分データの直前及び直後のいずれかの位置に前記部分テンプレートを挿入することを特徴とする請求項１〜３のいずれかに記載の情報処理装置。
【請求項５】
前記テンプレート挿入部は、
前記テンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記部分テンプレートを前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入し、テンプレートの原型となるテンプレートソースを生成し、
前記情報処理装置は、更に、
前記テンプレート挿入部による前記テンプレートソースの生成に用いられたサンプルテキスト以外の新たなサンプルテキストを用いて、前記テンプレート挿入部により生成されたテンプレートソースを解析し、前記テンプレートソースの改修の要否を判断するテンプレートソース解析部を有することを特徴とする請求項１〜４のいずれかに記載の情報処理装置。
【請求項６】
前記テンプレートソース解析部は、
前記新たなサンプルテキストに、サンプルテキストごとにカスタマイズされるカスタマイズ対象部分が存在する場合に、前記テンプレート挿入部により生成されたテンプレートソースに当該カスタマイズ対象部分に対応させるための処置を行うことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記テンプレート挿入部は、
繰り返し制御文及び条件分岐文の少なくともいずれかが含まれる部分テンプレートを前記サンプルテキストに挿入し、テンプレートの原型となるテンプレートソースを生成し、当該部分テンプレートに含まれる繰り返し制御文の動作検証が可能なテンプレートソース及び条件分岐文の動作検証が可能なテンプレートソースの少なくともいずれかを、生成したテンプレートソースから生成することを特徴とする請求項１〜６のいずれかに記載の情報処理装置。
【請求項８】
各々がテキストデータを生成することができる複数の部分テンプレートが含まれるテンプレートを新たなテンプレート生成の雛形となるサンプルテンプレートとして入力するサンプルテンプレート入力部と、
部分テンプレートごとに、部分テンプレートを用いてテキストデータを生成するテキストデータ生成部と、
前記テキストデータ生成部により生成されたテキストデータをサンプルテンプレートに挿入するとともに、テキストデータが生成されたデータ生成部分テンプレートをサンプルテンプレートの他の部分から区別する処理を行うテキストデータ挿入部とを有することを特徴とする情報処理装置。
【請求項９】
前記テキストデータ生成部は、
プログラムコードを前記テキストデータとして生成し、
前記テキストデータ挿入部は、
前記テキストデータ生成部により生成されたテキストデータをサンプルテンプレートの他の部分とともにプログラムコードとして実行可能な状態でサンプルテンプレートに挿入するとともに、前記データ生成部分テンプレートをコメント化する処理を行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記テキストデータ挿入部は、
前記テキストデータ生成部により生成されたテキストデータをプログラムコードとして実行可能な状態でサンプルテンプレートに挿入するとともに、前記データ生成部分テンプレートにコメント符号を付加して前記データ生成部分テンプレートをコメント化し、新たなテンプレートの原型となるテンプレートソースを生成し、
前記情報処理装置は、更に、
前記テンプレートソースから、テキストデータを削除するとともに、前記データ生成部分テンプレートに付加されているコメント符号を削除するテンプレート生成部を有することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記テキストデータ挿入部は、
前記データ生成部分テンプレートの直前及び直後のいずれかの位置にテキストデータを挿入することを特徴とする請求項８〜１０のいずれかに記載の情報処理装置。
【請求項１２】
複数の部分データに区分されるテキストデータをテンプレート生成の雛形となるサンプルテキストとして入力するサンプルテキスト入力処理と、
前記サンプルテキストの複数の部分データのうちテンプレートの生成対象として指定されたテンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記テンプレート生成部分データに対するテンプレートを部分テンプレートとして前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入するテンプレート挿入処理とをコンピュータに実行させることを特徴とするプログラム。
【請求項１３】
各々がテキストデータを生成することができる複数の部分テンプレートが含まれるテンプレートを新たなテンプレート生成の雛形となるサンプルテンプレートとして入力するサンプルテンプレート入力処理と、
部分テンプレートごとに、部分テンプレートを用いてテキストデータを生成するテキストデータ生成処理と、
前記テキストデータ生成処理により生成されたテキストデータをサンプルテンプレートに挿入するとともに、テキストデータが生成されたデータ生成部分テンプレートをサンプルテンプレートの他の部分から区別するテキストデータ挿入処理とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サンプルテキストからテンプレートを生成するテンプレート生成技術に関する。
【背景技術】
【０００２】
従来のテンプレート生成方式は、テンプレートから生成可能にしようとするサンプルテキストを入力する手段と、サンプルテキストに対してテンプレートで文字列の置換を可能とする挿入区画の範囲および構造を示す区画情報を入力する区画情報入力手段と、挿入区画の文字列を生成するための生成規則を入力する生成規則入力手段と、生成規則入力手段で入力した文字列を区画情報手段に置換してテンプレートを生成するテンプレート生成手段によって、サンプルテキストからテンプレートの生成を行っている（例えば、特許文献１）。
さらに、テンプレートの構成要素と生成されたソースコードの構成要素との対応関係を記憶する対応関係記憶手段を介して利用者に識別可能とする対応関係表示制御手段によって、テンプレートと生成されるソースコードの対応関係をユーザが把握することでテンプレートの作成効率を上げるアプローチも提案されている（例えば、特許文献２）。
【特許文献１】特開２００５−２３４９５９号公報  第６頁〜９頁、第１図
【特許文献２】特開２００６−２６８２９２号公報  第５頁〜９頁、第１図
【発明の開示】
【発明が解決しようとする課題】
【０００３】
プログラムソースコードのような複雑な構造を持ったテキストを生成するため、Ａｐａｃｈｅ（登録商標）プロジェクトで開発されているＶｅｌｏｃｉｔｙ（オープンソース名称）をはじめとするテンプレートエンジンにはテンプレートを作成するための構文として、繰り返しや条件判断などの制御構文をもつ。
このような制御構文を含んだ複雑なテンプレートを作成すると、テンプレートから生成されるソースコードはテンプレートエンジンに与えるソースコードを生成するためのモデルデータにより、生成されるプログラムソースコードの構造が大きく異なることがある。このようなテンプレートの動作確認するためにソースコードを複数のパターンで生成して確認する必要があるが、上記に示した従来のテンプレート生成方式では、複数のソースコードを生成して確認するためには、複数のサンプルを事前に用意する必要があり、複数のサンプルソースコードを用意するのは手間がかかる作業となっている。
【０００４】
また、テンプレートに不具合を発見した場合や生成するアプリケーションの仕様が変わった場合など、テンプレートを修正しなければならない場合、動作確認作業として、修正したテンプレートからアプリケーションを生成し、生成したアプリケーションに対してさらにアプリケーションカスタマイズコードを追加してアプリケーションを完成させて動作確認するという作業を修正するたびに実施しなければならず、テンプレートを開発する上で手間のかかる作業となってしまうという課題がある。
【０００５】
本発明は上記のような課題を解決することを主な目的の一つとしており、テンプレートのカスタマイズと動作確認を容易に行うことができるようにすることを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、
複数の部分データに区分されるテキストデータをテンプレート生成の雛形となるサンプルテキストとして入力するサンプルテキスト入力部と、
前記サンプルテキストの複数の部分データのうちテンプレートの生成対象として指定されたテンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記テンプレート生成部分データに対するテンプレートを部分テンプレートとして前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入するテンプレート挿入部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、テキストデータの一部であるテンプレート生成部分データをサンプルテキストに存置させたままで、部分テンプレートをサンプルテキストの他の部分と区別してサンプルテキストに挿入するため、テンプレート生成部分データをプログラムコードとして実行させることが可能であり、テンプレートの動作確認を容易に行うことができる。
また、テンプレートを修正した場合にもテンプレート生成部分を容易に置換可能であり、かつ、アプリケーションカスタマイズ対象部分が一体となっているため、カスタマイズした際の動作確認を容易に実施できる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、本実施の形態に係るテンプレート生成装置１００の構成例を示す図である。
なお、テンプレート生成装置１００は、情報処理装置の例である。
本実施の形態に係るテンプレート生成装置１００は、ソースコードであるサンプルテキストからテンプレートソースを生成し、テンプレートソースからテンプレートを生成する。
詳細は、後述するが、テンプレートソースは、サンプルテキストとテンプレートの中間状態にあるテキストであり、いくつかの要素がテンプレートソースから削除されてテンプレートとなる。また、テンプレートソースは、サンプルテキスト（ソースコード）としての特性を維持しており、コンパイルすることによりアプリケーションとして動作可能となる。このため、テンプレートソースの段階でテンプレートとしての動作検証を行うことができる。
【０００９】
図１において、１０１はテンプレートを生成する際にテンプレートから生成しようとするテキストデータのサンプルを入力するサンプルテキスト入力部である。
【００１０】
サンプルテキスト入力部１０１が入力するサンプルテキストは、テンプレート生成の雛形となるテキストデータである。
本実施の形態では、サンプルテキスト入力部１０１は、プログラムコードであるソースコードをサンプルテキストとして入力するものとする。
また、サンプルテキストであるソースコードは、複数のプログラム文（部分データ）から構成されており、各プログラム文を区分可能である。
また、サンプルテキストは、固定テキスト部分（以下、単に固定テキストともいう）と、アプリケーションカスタマイズ対象部分と、テンプレート生成対象部分とに分けられる。
固定テキストとは、ソースコードの一部としてそのまま用いられる部分（プログラム文）である。テンプレートエンジンがテンプレート中に含まれるテキストをそのままソースコードに出力するため、「固定テキスト」と呼んでいる。固定テキストは、テンプレートの生成対象とならない。
アプリケーションカスタマイズ対象部分は、アプリケーション開発者によりカスタマイズされる部分（プログラム文）である。アプリケーションカスタマイズ対象部分は、テンプレートの生成対象とならない。
テンプレート生成対象部分とは、テンプレートの生成対象となる部分（プログラム文）である。テンプレート生成対象部分は、テンプレートソース編集者により指定される。
【００１１】
図９は、固定テキストとテンプレート生成対象部分の例を示している。
図９では、テンプレート２００からテンプレートエンジンを用いて、ソースコード３００を生成すること、及び本実施の形態に係るテンプレート生成装置１００がソースコード３００からテンプレート２００を生成することを示している。
ソースコード３００のうち３０１及び３０２の記述は、テンプレートエンジンにより、テンプレート２００の２０１及び２０２の制御情報から変換される。一方、テンプレート生成装置１００におけるテンプレートの生成過程では、３０１及び３０２の記述に対してテンプレート２００の２０１及び２０２の制御情報が生成され、３０１及び３０２がテンプレート生成対象部分となる。
また、ソースコード３０１において、３０１及び３０２以外の部分は、テンプレート２００及びソースコード３００において共通であり、固定テキストである。
なお、テンプレート２００の２０１及び２０２の制御情報は、テンプレート生成対象部分に対するテンプレートであり、テンプレート制御情報（部分テンプレート）と呼ぶ。
【００１２】
１０２は、サンプルテキスト入力部１０１から入力されたサンプルテキストを保持しておくサンプルテキスト格納部である。
【００１３】
１０３は、サンプルテキスト格納部１０２に格納されているサンプルテキストを元にテンプレートソースを編集するテンプレートソース編集部である。
テンプレートソース編集部１０３中には、同一テンプレートを生成するための別のサンプルテキストがサンプルテキスト格納部に存在した場合に、該当するサンプルテキストをテンプレートソースに変換するテンプレートソース変換部１０３１と、テンプレートソースのテンプレート生成対象部分および、アプリケーションカスタマイズ対象部分が異なる別のテンプレートソースを作成するテンプレートソース生成部１０３２を含む。
【００１４】
テンプレートソース編集部１０３は、より具体的には、テンプレート生成装置１００を利用するテンプレートソース編集者からの指示に基づき、サンプルテキストの複数のプログラム文（部分データ）のうちテンプレート生成対象部分（テンプレート生成部分データ）を指定する。
また、テンプレートソース編集部１０３は、テンプレート生成対象部分であるプログラム文をプログラムコードとして実行できる状態でサンプルテキスト内に存置させたままで、テンプレート生成対象部分に対するテンプレートであるテンプレート制御情報（部分テンプレート）をサンプルテキストのプログラム文から区別してサンプルテキストに挿入する。
本実施の形態では、テンプレートソース編集部１０３は、テンプレート制御情報にコメント符号を付加して、テンプレート制御情報をコメント化してサンプルテキストに挿入する。
また、テンプレートソース編集部１０３は、テンプレート生成対象部分であるプログラム文に、テンプレート生成対象部分の開始位置及び終了位置を示すコメントを付加して、テンプレート生成対象部分を明示する。なお、テンプレート生成対象部分の開始位置及び終了位置を示すコメントが付加されていても、上記したように、テンプレート生成対象部分たるプログラム文自体は、プログラムコードとして実行可能である。
また、テンプレート制御情報が挿入され、テンプレート生成対象部分の開始位置及び終了位置を示すコメントが付加され、また、後述するアプリケーションカスタマイズ対象部分が別メソッド化された状態のサンプルテキストをテンプレートソースと呼ぶ。テンプレートソースはテンプレートの原型となるものである。
また、テンプレートソース編集部１０３は、テンプレートソースの生成に用いたサンプルテキスト以外の新たなサンプルテキストをサンプルテキスト格納部１０２から取得し、取得した新たなサンプルテキストを用いて、生成したテンプレートソースを解析し、当該テンプレートソースの改修の要否を判断する。
テンプレートソース編集部１０３は、テンプレート挿入部及びテンプレートソース解析部の例である。
【００１５】
１０４は、テンプレートソース編集部１０３により編集・生成されたテンプレートソースを保持しておくテンプレートソース格納部である。
【００１６】
１０５は、テンプレートソース格納部１０４に格納されているテンプレートソースから、アプリケーションカスタマイズ対象部分および、テンプレート生成対象部分を削除し、更に、コメント化されているテンプレート制御情報からコメント符号を削除し、テンプレートソースを、テンプレートエンジンが解釈可能なテンプレートに変換するテンプレート生成部である。
【００１７】
１０７は、テンプレート生成装置１００のユーザであるテンプレートソース編集者からの指示を入力するユーザ入力部である。
【００１８】
１０６は、テンプレート生成部１０５で生成されたテンプレートを示す。
前述したように、テンプレートソースは、コメント化されたテンプレート制御情報と、テンプレート制御情報がテンプレートエンジンで変換されるソースコードとさらにアプリケーション開発者がカスタマイズして作成することを想定したコードがすべて含まれ、アプリケーションとしても動作可能な状態となっているテキストをさす。
【００１９】
図１０にテンプレートソースの具体例を示す。
テンプレートソース４００において、４０１の部分は固定テキストであり、４０２の部分はテンプレート生成対象部分であり、４０３の部分はコメント化されたテンプレート制御情報であり、４０４の部分は固定テキストであり、４０５の部分はテンプレート生成対象部分であり、４０６の部分はコメント化されたテンプレート制御情報であり、４０７の部分は固定テキストであり、４０８の部分はアプリケーションカスタマイズ対象部分であり、４０９の部分は固定テキストである。
図１０に示すように、テンプレート生成対象部分４０２及び４０５は、テンプレート生成対象部分の開始位置を示すコメント（テンプレート生成対象部分ｂｅｇｉｎ）及びテンプレート生成対象部分の終了位置を示すコメント（テンプレート生成対象部分ｅｎｄ）で挟まれているが、プログラムとして実行可能である。
一方、テンプレート制御情報４０３及び４０６は、コメント化されているので、プログラムとしては動作しない。
【００２０】
テンプレートはそのままではアプリケーションとしては動作しないため、テンプレートの動作検証のためにテンプレートに変数値を適用して実際にソースコードに変換して動作検証を行う必要がある。この動作検証では、テンプレートの生成の元になったソースコードの実行結果と、テンプレートから生成したソースコードの実行結果とを照合する必要があり、このため、動作検証のために、テンプレートとは別に生成の元となったソースコードを管理する必要がある。
テンプレート生成対象部分のプログラムコードは固定テキストともに実行可能であるため、テンプレートソースに変数値を適用してそのままアプリケーションプログラムとして動作させることができ、テンプレートソースのみでテンプレートの動作検証が可能であり、テンプレートとソースコードの両者を管理する必要はない。
【００２１】
なお、動作検証後は、テンプレート生成部１０５により、テンプレートソース４００からテンプレート生成対象部分４０２及び４０５、アプリケーションカスタマイズ対象部分４０８が削除され、また、テンプレート制御情報４０３及び４０６のコメント記号が削除され、固定テキスト４０１、４０４、４０７及び４０９とテンプレート制御情報（＄｛ＦＯＲＭ｝及び＄｛ｇｅｔＩｄ｝）から構成されるテンプレート（図９のテンプレート２００）が生成される。
【００２２】
次に動作について説明する。
サンプルテキスト入力部１０１は、テンプレートから生成しようとするテキストのサンプルを入力し、サンプルテキスト格納部１０２に送る。
サンプルテキスト格納部１０２は、サンプルテキストとそのサンプルテキストから作成しようとするテンプレートとの対応関係を保持する。
一つのテンプレートに複数のサンプルテキストが対応付けられる可能性がある。
テンプレートソース編集部１０３は以下に示す手順によりサンプルテキストをテンプレートソースに変換し、テンプレートソース格納部１０４に変換したテンプレートソースを格納する。
また、テンプレート生成部１０５は、テンプレートソース格納部１０４に格納されているテンプレートソースからテンプレート生成対象部分、アプリケーションカスタマイズ対象部分、テンプレート制御情報のコメント符号を削除してテンプレート１０６を生成する。
【００２３】
図２は、テンプレートソース編集部１０３の動作を示すフローチャートである。
以下では、テンプレートソース変換部１０３１の動作として説明するが、テンプレートソース生成部１０３２がこれらの動作を行うようにしてもよい。
【００２４】
テンプレートソース編集部１０３のテンプレートソース変換部１０３１は、まずステップＳ２０１にてサンプルテキスト格納部１０２から編集しようとするテンプレートの元となるサンプルテキストを取得し、テンプレートソースとしてコピーする。
次に、テンプレートソース変換部１０３１は、テンプレートソースを編集可能状態にし、テンプレートソース編集者にテキストの一部を選択可能とする。
ステップＳ２０２にて、テンプレートソース編集者がユーザ入力部１０７からテンプレートソース編集の終了を指示することによりテンプレートソース変換部１０３１は動作を終了し、ステップＳ２０９にて生成したテンプレートソースをテンプレートソース格納部１０４に格納する。
まだテンプレートソース編集を終了していない場合、ステップＳ２０３にて、ユーザ入力部１０７を用いてテンプレートソース編集者がテンプレートソースのテキストの任意部分を指定する。
ステップＳ２０４にて、テンプレートソース変換部１０３１は、選択したテキスト部分が何に相当するのかをテンプレートソース編集者に問い合わせる（Ｓ２０４）。
テンプレートソース編集者は、テンプレートソース編集部１０３からの問い合わせに対して、ユーザ入力部１０７により当該テキスト部分が何に相当するのかを回答し、アプリケーション開発者がカスタマイズする部分（アプリケーションカスタマイズ対象部分）に相当する場合、テンプレートソース編集部１０３は、ステップＳ２０５にて、リファクタリングのメソッド抽出（例えば、「リファクタリング、ＩＳＢＮ４−８９４７１−２２８−８、Ｐ１１０」に記載）の手法を用いて指定された部分を別のメソッドに抽出し、メソッドをアプリケーション開発者がカスタマイズする部分であることを示すマークをコメントに付加する。
【００２５】
別メソッド化というのはソースコードの一部をサブルーチンとして抽出して外部のメソッドとして作成することを指す。
具体的には、図１１に示すようなソースコードの変換を指す。
元のソースコード５００の５０１の行をテンプレートソース６００では外部のメソッドとして抽出し（行６０２）、もともと５０１の行があったところには、抽出したメソッドの呼び出しを追加する（行６０１）。
アプリケーション開発者がカスタマイズする部分をこのように別メソッドに分けることで、テンプレートエンジンで生成されるコードと分離することが出来るため、アプリケーション開発者のプログラミングが行いやすくなる。
【００２６】
一方、ステップＳ２０４において、テンプレートソース編集者からテンプレート生成対象部分であるとの回答を得た場合、テンプレートソース変換部１０３１は、当該テキスト部分をテンプレート生成対象部分として指定し、さらに、ステップＳ２０６において、ユーザ入力部１０７を介して置き換えるテンプレート制御情報（部分テンプレート）を入力する。
また、テンプレートソース変換部１０３１は、ステップＳ２０７にて、当該テンプレート制御情報により、指定されたテキスト部分（テンプレート生成対象部分）が生成可能であることを確認し、テンプレートソースの指定されたテキスト部分（テンプレート生成対象部分）の前後にテンプレート生成対象部分であることを示すコメントを追加するとともに、ステップＳ２０８で、ステップＳ２０６で入力されたテンプレート制御情報をコメント形式でテンプレート生成対象部分のコード上部に挿入する。
【００２７】
サンプルテキスト格納部１０２に１つのテンプレートに対応するサンプルテキストが複数登録されている場合は、さらにテンプレートソース変換部１０３１がサンプルテキストからテンプレートソースの変換を行い、登録されたテンプレート制御情報が妥当であることを確認するとともに、テンプレートソースを生成する。
サンプルテキスト格納部１０２にテンプレートに対応するサンプルテキストが複数登録されている場合は、具体的には、後述する図３及び図４に示す処理が行われる。
また、テンプレートソースのいずれかのテンプレート制御情報に繰り返し制御文又は条件分岐文が含まれている場合は、後述の図５に示す処理が行われる。
他方、サンプルテキスト格納部１０２に１つのサンプルテキストのみが格納され、また、テンプレート制御情報に繰り返し制御文又は条件分岐文が含まれていない場合は、図２の処理の完了後、後述の図６に示す処理が行われる。
【００２８】
図３及び図４は、テンプレートソース変換部１０３１の動作を示すフローチャートである。
図３及び図４は、図２の処理により１つのサンプルテキストから１つのテンプレートソースが生成された後に、当該テンプレートソースがサンプルテキスト格納部１０２に格納されているサンプルテキストに適用可能かどうか（テンプレートソースの改修が必要かどうか）を判断する手順を示す。
なお、図２の処理により生成済みであるテンプレートソースを、元テンプレートソース又は元となるテンプレートソースをいい、図３において新規に生成されるテンプレートソース（サンプルテキスト格納部１０２に格納されているサンプルテキストから生成されたテンプレートソース）を新テンプレートソースという。
【００２９】
例えばサンプルテキスト１、２、３が同一のテンプレートから生成できるようにするためには、以下の条件が成り立つ必要がある。
（１）テンプレートの固定テキスト部分がサンプルテキスト１、２、３のすべてに含まれる。
（２）サンプルテキスト１、サンプルテキスト２、サンプルテキスト３のすべてにおいて、テンプレート制御情報からテンプレート生成対象部分を生成できる。
（３）上記（１）、（２）以外の部分はアプリケーションカスタマイズ対象部分となっている。
図３及び図４に示される処理手順は、これら（１）〜（３）の条件がすべて満たされるか否かを判断し、これらの条件が満たされるのであれば、元テンプレートソースが複数のサンプルテキストに適用可能と判断し、これらの条件が満たされない場合は、元テンプレートソースの改修が必要であると判断するものである。
【００３０】
まず、図３において、テンプレートソース変換部１０３１は、ステップＳ３０１でサンプルテキスト格納部１０２からサンプルテキストを取り出し、図２のＳ２０１と同様に、取り出したサンプルテキストをテンプレートソースとしてコピーする。このテンプレートソースが新テンプレートソースである。
次に、テンプレートソース変換部１０３１は、ステップＳ３０２で、新テンプレートソースであるサンプルテキストを構文解釈しメソッド単位でテキストを切り出すとともに、以下メソッド単位で処理する。
テンプレートソース変換部１０３１は、ステップＳ３０３ですべてのメソッドについて処理を終えたかを判断する。
すべてのメソッドについて処理を終えている場合（Ｓ３０３で“はい”）には、さらに、ステップＳ３０９で、元となるテンプレートソースの固定テキスト部分、テンプレート制御情報のコメントがすべて反映されていることを確認する。
つまり、後述するＳ３０４からＳ３０８の処理を経て生成された新テンプレートソースに、元となるテンプレートソースの固定テキスト部分、テンプレート制御情報のコメントがすべて反映されていることを確認する。
次に、Ｓ３０９で“はい”の場合は、テンプレートソース変換部１０３１は、生成した新テンプレートソースをテンプレートソース格納部１０４に格納し、処理を終了する。
【００３１】
一方、ステップＳ３０３で“いいえ”の場合は、テンプレートソース変換部１０３１は、ステップＳ３０４で、Ｓ３０１で生成した新テンプレートのメソッドに相当するメソッドが元テンプレートソースに存在するか判定する。
存在する場合は、ステップＳ３０５にて、元テンプレートソースのメソッド内部のテキストとＳ３０１で生成した新テンプレートソースのメソッド内部のテキストとを比較して、メソッド内部行の確認を行う。メソッド内部行の確認のステップは図４で説明する。
【００３２】
Ｓ３０４において、元テンプレートソース内に新テンプレートソースに含まれるメソッドと同等のメソッドが存在しない場合、テンプレートソース変換部１０３１は、ステップＳ３０６にて、アプリケーションカスタマイズ対象部分かどうかの確認を行う。
これは、アプリケーションカスタマイズ対象部分であるかどうかをテンプレートソース編集者に問合せ、テンプレートソース編集者からの回答に従って、判断する。
【００３３】
アプリケーションカスタマイズ対象部分の場合（Ｓ３０６で“はい”）、テンプレートソース変換部１０３１は、メソッドにアプリケーションカスタマイズ対象部分であることを示すコメントを付加する。
一方、アプリケーションカスタマイズ対象部分でない場合（Ｓ３０６で“いいえ”）、テンプレートソース変換部１０３１は、元となるテンプレートソースからは当該部分のテンプレートは生成できないことを示すため、Ｓ３０７において、元となるテンプレートソースの改修が必要なことを通知する。
【００３４】
次に、ステップＳ３０５の処理の詳細を図４を参照して説明する。
【００３５】
まず、ステップＳ４０１にて、テンプレートソース変換部１０３１は、新テンプレートソースであるサンプルテキストのメソッド内のテキストに、元テンプレートソースの固定テキスト部分が含まれるかどうかを判断する。
固定テキスト部分が含まれない場合は、テンプレートソース変換部１０３１は、ステップＳ４０２にて、元となるテンプレートソースの改修が必要なことを通知して終了する。
固定テキスト部分が含まれる場合は、テンプレートソース変換部１０３１は、ステップＳ４０３にて、新テンプレートソースであるサンプルテキストの固定テキスト部分以外のテキスト部分をループで処理する。
【００３６】
次に、テンプレートソース変換部１０３１は、ステップＳ４０３にて、該当するテキスト部分がテンプレート変換可能かどうかを判断する。具体的には、テンプレートソース変換部１０３１は、後述するステップＳ４０７で取得したデータモデルが存在する場合は、データモデルと当該テキスト部分とを比較し、データモデルが存在しない場合又は当該テキスト部分と一致するデータモデルが存在ない場合は、当該テキスト部分と元テンプレートソースのテンプレート生成対象部分と比較し、いずれかのテンプレート生成対象部分との一致点を解析して、当該テキスト部分がテンプレート変換可能かを判断する。
テンプレート変換できない場合（Ｓ４０４で“いいえ”）は、さらにステップＳ４０８にて、テンプレートソース変換部１０３１は、アプリケーションカスタマイズ対象部分かを判断する。
これは、アプリケーションカスタマイズ対象部分であるかどうかをテンプレートソース編集者に問合せ、テンプレートソース編集者からの回答に従って、判断する。
アプリケーションカスタマイズ対象部分ではない場合（Ｓ４０８で“いいえ”）は、ステップＳ４０２でテンプレートソースの改修が必要なことを通知し終了する。
当該部分がアプリケーションカスタマイズ対象部分の場合（Ｓ４０８で“はい”）、当該部分をリファクタリングの技術を用いてステップＳ４０９にて別メソッド化する。
続いてステップＳ４１０にて、テンプレートソース変換部１０３１は、元となるテンプレートソースにも別メソッドを追加し、ループの先頭に戻る。
【００３７】
当該部分がテンプレート変換可能な場合（Ｓ４０４で“はい”）、テンプレートソース変換部１０３１は、ステップＳ４０５にて、当該部分のテキストの前後にテンプレート生成対象部分であることを示すコメントを挿入する。
次に、ステップＳ４０６にて、テンプレートソース変換部１０３１は、テンプレート制御情報を当該部分の上の行にコメント形式で挿入する。このテンプレート制御情報は、元テンプレートソースに含まれているテンプレート制御情報と同じものである。
次に、ステップＳ４０７にて、テンプレートソース変換部１０３１は、ソースコードの変換に適用したデータモデルを保持しておく。以降保持した情報はステップＳ４０４のテンプレート変換かどうかの判断時に用いる。
ステップＳ４０７において保持するデータモデルとは、テンプレート制御情報に含まれる変数とテンプレート生成対象部分との対応付けあり、図１０の例では、テンプレート生成対象部分「ＳａｍｐｌｅＦｏｒｍ」とテンプレート制御情報の「ＦＯＲＭ」とを対応付け、また、テンプレート生成対象部分「ｇｅｔＩｄ」とテンプレート制御情報の「ｇｅｔＩｄ」とを対応付ける。
そして、ステップＳ４０４においては、新テンプレートソース中に「ＳａｍｐｌｅＦｏｒｍ」や「ｇｅｔＩｄ」が含まれている場合に、データモデルに「ＳａｍｐｌｅＦｏｒｍ」や「ｇｅｔＩｄ」が含まれていれば、テンプレート変換可能と判断する。
【００３８】
このように、複数のサンプルテキストを用いて同種のテンプレートソースを複数生成するので、複雑なテンプレート制御情報の部分については別のテンプレートソースにて動作確認をすることも可能であり、テンプレートによる動作確認を容易に行うことができる。
【００３９】
また、テンプレートソースのいずれかのテンプレート制御情報において繰り返し制御文や条件分岐文が含まれる場合、テンプレートソース生成部１０３２は該当するテンプレートソース中のテンプレート制御情報に別のモデルデータを適用した別のテンプレートソースの生成を試みる。
【００４０】
図１２は、テンプレート制御情報に条件分岐文が含まれるテンプレートの例を示す。
図１２において、８０１〜８０５の各々はテンプレート制御情報である。テンプレート制御情報８０２では条件分岐文であるｉｆ文が含まれている。
図１２に示すテンプレートの生成過程において、図１２のテンプレートに対応するテンプレートソースが生成されるが、図１２のテンプレートに対応するテンプレートソースでは、８０１〜８０５のテンプレート制御情報がコメント形式で挿入されている。
図１２に示すテンプレートを用いてテンプレートエンジンがソースコードを生成する場合に、行８０２の＄｛ＦＲＯＭ｝の変数値としてＭａｐが適用されれば、テンプレートエンジンは、「ｍａｐ．ｐｕｔ（“ＵＳＥＲ＿ＩＤ”，ｆｏｒｍ．ｇｅｔ（“ＩＤ”））；」が含まれるソースコードを生成し、一方、＄｛ＦＲＯＭ｝の変数値がＭａｐ以外であれば、「ｍａｐ．ｐｕｔ（“ＵＳＥＲ＿ＩＤ”，）」が含まれるソースコードを生成する。
このように、条件により、テンプレートから生成されるソースコードが異なるため、テンプレート生成装置１００では、テンプレートソースのコメント化されたテンプレート制御情報に条件分岐が含まれている場合には、分岐先の各々における動作検証を行う必要がある。同様に、テンプレートソースのテンプレート制御情報に繰り返し制御が含まれている場合には、ループ中及びループ完了後における動作検証を行う必要がある。
以降では、このようなテンプレート制御情報に繰り返し制御や条件判断が含まれる場合に、繰り返し制御、条件分岐の各々における動作検証を可能にする複数のテンプレートソースを生成する方法を説明する。
【００４１】
図５は、このような場合のテンプレートソース生成部の動作を示すフローチャートである。
【００４２】
まず、ステップＳ５０１にて、テンプレートソース生成部１０３２は、テンプレートソースに入っているテンプレート制御情報から、参照しているデータモデルと、データモデルに対する条件を抽出する。データモデルとは、テンプレート制御情報に適用する変数値であり、データモデルに対する条件とは、テンプレート制御情報の繰り返し制御条件又は分岐条件である。図１２のテンプレートに対応するテンプレートソースにおいて、データモデルは、行８０２に示すＦＯＲＭであり、データモデルに対する条件とは、行８０２に示す「ｉｆ（＄｛ＦＯＲＭ｝＝‘Ｍａｐ’）」である。
次にステップＳ５０２で、抽出したデータモデルでループする。
すべてのデータモデルに対して処理が完了していなければ、ステップＳ５０３において、抽出したデータモデルに対する条件に対応する値を生成してデータモデルへの適用値として保持する。
具体的には、図１２に示す「ｍａｐ．ｐｕｔ（“ＵＳＥＲ＿ＩＤ”，ｆｏｒｍ．ｇｅｔ（“ＩＤ”））；」（条件が真のときの値）及び「ｍａｐ．ｐｕｔ（“ＵＳＥＲ＿ＩＤ”，）」（条件が偽のときの値）を生成する。
【００４３】
なお、条件に該当する値が自動で生成できない場合は、テンプレートソース編集者にデータモデルと条件を示すことでテンプレートソース編集者に作成させてもよい。
図１２の例では、条件が真のときの値は、サンプルテキストに含まれるテンプレート生成対象部分の記述からテンプレートソース生成部１０３２が生成できるが、条件が偽のときの値は、テンプレート生成装置１００を利用するテンプレートソース編集者がユーザ入力部１０７を介して入力しなければならない。
また、同様に、図１３に示すテンプレートに対応するテンプレートソースでは、条件文「ｉｆ（＄｛ＦＯＲＭ｝＝‘Ｍａｐ’）」に対する条件が真の時の値「ｍａｐ．ｐｕｔ（“ＵＳＥＲ＿ＩＤ”，ｆｏｒｍ．ｇｅｔ（“ＩＤ”））；」及び条件文「ｅｌｓｅｉｆ（＄｛ＦＯＲＭ｝＝‘Ｆｏｒｍ’）に対する条件が真のときの値「ｍａｐ．ｐｕｔ（“ＵＳＥＲ＿ＩＤ”）」はサンプルテキストに含まれるテンプレート生成対象部分の記述からテンプレートソース生成部１０３２が生成できるが、条件が偽のときの値「ｆｏｒｍ．＄｛ｇｅｔＩｄ｝（）」は、テンプレート生成装置１００を利用するテンプレートソース編集者がユーザ入力部１０７を介して入力しなければならない。
【００４４】
また、すべてのデータモデルに対して値が決定されたら、次に、ステップＳ５０４にてそのデータモデルの変数値をテンプレート制御条件に適用し生成されたソースコードと既存のテンプレートソースのテンプレート生成対象部分のコードを置換し新しいテンプレートソースとしてテンプレートソース格納部１０４に保存する。
【００４５】
テンプレート生成部１０５は、テンプレートソース格納部１０４からテンプレートソースを取り出し、テンプレートを生成する。
なお、テンプレート生成部１０５がテンプレートを生成する段階では、テンプレートソース格納部１０４に格納されている各テンプレートソースに対して既に動作検証が行われており、各テンプレートソースから生成されるテンプレートは正確に動作する（正確にソースコードを生成できる）ことが確認されている。
【００４６】
図６は、テンプレート生成部１０５の動作を示すフローチャートである。
【００４７】
テンプレート生成部１０５は、ステップＳ６０１にてテンプレートソース格納部１０４から生成する対象のテンプレートに対応するテンプレートソース（テンプレートに対応するテンプレートソースが複数有る場合は、そのうちの一つ）を取り出す。
次に、ステップＳ６０２にてテンプレートソースを一行毎に読み込む。
ステップＳ６０３にてテンプレートソースを最後まで読み終えた場合、終了する。
まだ読み終えていない場合は、テンプレート生成部１０５は、ステップＳ６０４にて読み込んだ行の内容ごとに処理を変更して実施する。
テンプレート制御情報をあらわすコメントの場合、ステップＳ６０５にて、テンプレート制御情報からコメントをはずす。
また、テンプレート生成対象部分の場合は、ステップＳ６０６にて、テンプレート生成対象部分の終了を表すコメントを読み込むまで削除する。
アプリケーションカスタマイズ対象部分の場合は、ステップＳ６０７にて、メソッドの内部行を削除する。
その他（固定テキスト部分）の場合は、ステップＳ６０８にて、読み込んだ内容をそのままテンプレートに出力する。
図６の処理が終了すると、テンプレートソースからテンプレートが生成されたことになる。
【００４８】
なお、上述では、既存のサンプルテキストをサンプルテキスト入力部１０１から入力するように構成したが、既存のサンプルテキストを入力するかわりに、テンプレートソース編集者がユーザ入力部１０７によりコード文を順次入力してプログラミング作業を行い、新規のサンプルテキスト（ソースコード）を生成しながら、テンプレートソースを編集するようにしてもよい。この場合には、ユーザ入力部１０７が、サンプルテキスト入力部の例となる。
【００４９】
以上のように、本実施の形態に示すテンプレート生成装置では、サンプルコードからテンプレートに変換するテンプレート制御情報を含みかつ、コンパイルすることによりアプリケーションとして動作可能となるようなテンプレートソースを用意し、また複雑なテンプレート制御情報の部分について別のテンプレートソースを生成して動作確認できるようにするので、テンプレートによる動作確認を容易に行うことができる。
また、アプリケーションカスタマイズ対象部分は別メソッドに分離・抽出することにより、テンプレートの開発をテンプレート制御情報を挿入する部分と固定テキスト部分とテンプレート生成対象部分に絞ることができるようになるので、以降のテンプレートの開発が容易になる。
【００５０】
以上、本実施の形態では、サンプルテキストからテンプレートを生成する際に、テンプレート制御情報をコメント化し、テンプレートの制御情報から生成されるテキストをテンプレート生成対象部分として保持するテンプレートソースを合わせて生成し、テンプレートソースを用いてテンプレートの動作確認を行えるテンプレート生成方式について説明した。
【００５１】
また、本実施の形態では、テンプレートソースに対してアプリケーションカスタマイズ対象部分を追加すると、追加されたコードを別メソッドとして抽出することにより、アプリケーションカスタマイズ対象部分を分離するテンプレート生成方式について説明した。
【００５２】
実施の形態２．
以上の実施の形態１では、サンプルテキストを基にしてテンプレートソースを生成するようにしたものであるが、本実施の形態では、既存の方式でテンプレートを開発した場合などテンプレートソースが存在せずテンプレートが既に存在する場合に、既存のテンプレートからテンプレートソースを生成する方式を説明する。
【００５３】
図７は、本実施の形態に係るテンプレート生成装置（情報処理装置）の構成例を示す。
図７では、図１に比べ、テンプレートソース編集部７０１が異なり、また、サンプルテンプレート入力部７０２が追加されている。
テンプレートソース編集部７０１内のテンプレートソース変換部７０１１は、実施の形態１のテンプレートソース変換部１０３１と異なり、テンプレートをもとにテンプレートソースを生成する。
【００５４】
本実施の形態では、サンプルテンプレート入力部７０２は、テキストデータ（プログラムコード）を生成することができるテンプレートを新たなテンプレート生成の雛形となるサンプルテンプレートとして入力する。入力するテンプレートは、テンプレート生成部１０５で生成されたテンプレートでもよいし、外部装置で生成されたテンプレートでもよい。なお、入力するサンプルテンプレートには、実施の形態１で説明したテンプレート制御情報が含まれる。サンプルテンプレートに含まれるテンプレート制御情報を部分テンプレートともいう。
【００５５】
テンプレートソース編集部７０１は、部分テンプレートごとに、部分テンプレートを用いてテキストデータを生成し、生成したテキストデータをサンプルテンプレートの他の部分とともにプログラムコードとして実行可能な状態でサンプルテンプレートに挿入する。テキストデータの挿入位置は、当該部分テンプレートの直前又は直後である。
また、テンプレートソース編集部７０１は、テキストデータが生成されたデータ生成部分テンプレートをサンプルテンプレートの他の部分から区別する処理を行う。具体的には、データ生成部分テンプレートをコメント化することで、サンプルテンプレートの他の部分から区別する。
このようにして、テンプレートソース編集部７０１は、新たなテンプレートの原型となるテンプレートソースを生成する。
【００５６】
そして、テンプレート生成部１０５は、テンプレートソースから、生成テキストデータを削除するとともに、テキストデータ生成部分テンプレートに付加されているコメント符号を削除する。
【００５７】
なお、本実施の形態では、テンプレートソース編集部７０１は、テキストデータ生成部及びテキストデータ挿入部の例である。
【００５８】
次に、テンプレートからテンプレートソースを作成するテンプレートソース変換部７０１１の動作を説明する。
テンプレートソース変換部７０１１は、テンプレート１０６のデータ生成部分テンプレート（テンプレート制御情報）をコメント化し、データモデルの値を適用して生成したソースコードおよび、アプリケーションカスタマイズ対象部分を追加することにより、テンプレートソースを生成する。
図８は、テンプレートソース変換部７０１１の動作を説明するフローチャートである。
【００５９】
テンプレートソース変換部７０１１は、まず、ステップＳ８０１にて既存のテンプレート１０６をテンプレートソースとしてコピーする。
次に、テンプレートソース変換部７０１１は、ステップＳ８０２にて、テンプレート内のテンプレート制御条件から、データモデルと条件を抽出する。
次に、テンプレートソース変換部７０１１は、ステップＳ８０３にて、抽出したデータモデルを元にループし、ステップＳ８０４にてデータモデルに対する条件に対応する値を作成する。データモデル及びデータモデルに対する条件は、実施の形態１で説明した通りである。
自動で条件に対応する値が生成できない場合は、テンプレート開発者にデータモデルと条件を示して適用する値を作成してもらっても良い。
すべてのデータモデルに対応する値を設定し終えたら、ステップＳ８０５にて、値をテンプレート制御情報に適用してソースコードを生成する。テンプレート制御情報（部分テンプレート）ごとに、テンプレート制御情報とＳ８０４で生成した値からソースコードを生成する。
生成されたソースコードは、実施の形態１で示したテンプレート生成対象部分として、テンプレートソースのテンプレート制御情報の下行にソースコードを示すコメントとともに挿入する。
次に、テンプレートソース変換部７０１１は、ステップＳ８０６にて、テンプレート制御情報（部分テンプレート）をコメント化する。
続いて、ステップＳ８０７にて、テンプレートソース編集者は、アプリケーションカスタマイズ対象部分を入力する。入力されたアプリケーションカスタマイズ対象部分はステップＳ８０８にて別メソッドとして抽出される。
【００６０】
このように、本実施の形態では、テンプレートソース変換部７０１１は、サンプルテンプレートに、テンプレート制御情報から生成されるソースコードを挿入し、また、テンプレート制御情報をコメント化する。
このため、テンプレートソースは、コンパイルすることによりアプリケーションとして動作させることが可能であり、テンプレートソースを用いて、テンプレートとしての動作確認が可能である。
【００６１】
図８の処理の後、テンプレート生成部１０５が、ソースコード及びテンプレート制御情報に付加されているコメント符号を削除して、テンプレートを生成する。具体的には、図６に示す処理を行う。
【００６２】
以上のように、テンプレートからテンプレートソースに変換することにより本システムを使わずに開発したテンプレートについても、本システムを利用してテンプレート開発を行えるようになり、以降テンプレートのカスタマイズを用意に実施できる。
【００６３】
以上、本実施の形態では、テンプレートソースの存在しない既存のテンプレートに対して、テンプレート制御情報をコメント化し、テンプレートの制御情報から生成されるテキストをテンプレート生成対象部分として保持するテンプレートソースを生成するテンプレート生成方式を説明した。
【００６４】
最後に、実施の形態１及び２に示したテンプレート生成装置１００及び７００のハードウェア構成例について説明する。
図１４は、実施の形態１及び２に示すテンプレート生成装置１００及び７００のハードウェア資源の一例を示す図である。
なお、図１４の構成は、あくまでもテンプレート生成装置１００及び７００のハードウェア構成の一例を示すものであり、テンプレート生成装置１００及び７００のハードウェア構成は図１４に記載の構成に限らず、他の構成であってもよい。
【００６５】
図１４において、テンプレート生成装置１００及び７００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００６６】
通信ボード９１５は、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
【００６７】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００６８】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００６９】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
テンプレート生成装置１００及び７００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００７０】
上記プログラム群９２３には、実施の形態１及び２の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００７１】
ファイル群９２４には、実施の形態１及び２の説明において、「〜の判断」、「〜の生成」、「〜の抽出」、「〜の確認」、「〜の比較」、「〜の挿入」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の追加」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１及び２で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００７２】
また、実施の形態１及び２の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、実施の形態１及び２の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１及び２の「〜部」の手順や方法をコンピュータに実行させるものである。
【００７３】
このように、実施の形態１及び２に示すテンプレート生成装置１００及び７００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【００７４】
【図１】実施の形態１に係るテンプレート生成装置の構成例を示す図。
【図２】実施の形態１に係るテンプレート生成装置の動作例を示すフローチャート図。
【図３】実施の形態１に係るテンプレート生成装置の動作例を示すフローチャート図。
【図４】実施の形態１に係るテンプレート生成装置の動作例を示すフローチャート図。
【図５】実施の形態１に係るテンプレート生成装置の動作例を示すフローチャート図。
【図６】実施の形態１に係るテンプレート生成装置の動作例を示すフローチャート図。
【図７】実施の形態２に係るテンプレート生成装置の構成例を示す図。
【図８】実施の形態２に係るテンプレート生成装置の動作例を示すフローチャート図。
【図９】実施の形態１に係るテンプレート生成対象部分とテンプレート制御情報を説明する図。
【図１０】実施の形態１に係るテンプレートソースの例を示す図。
【図１１】実施の形態１に係るアプリケーションカスタマイズ対象部分の別メソッド化を説明する図。
【図１２】実施の形態１に係る制御構文が含まれるテンプレートの例を示す図。
【図１３】実施の形態１に係る制御構文が含まれるテンプレートの例を示す図。
【図１４】実施の形態１及び２に係るテンプレート生成装置のハードウェア構成例を示す図。
【符号の説明】
【００７５】
１００  テンプレート生成装置、１０１  サンプルテキスト入力部、１０２  サンプルテキスト格納部、１０３  テンプレートソース編集部、１０４  テンプレートソース格納部、１０５  テンプレート生成部、１０６  テンプレート、１０７  ユーザ入力部、７００  テンプレート生成装置、７０１  テンプレートソース編集部、７０２  サンプルテンプレート入力部、１０３１  テンプレートソース変換部、１０３２  テンプレートソース生成部、７０１１  テンプレートソース変換部。
【図１】
2010020680.tif 000003
【図２】
2010020680.tif 000004
【図３】
2010020680.tif 000005
【図４】
2010020680.tif 000006
【図５】
2010020680.tif 000007
【図６】
2010020680.tif 000008
【図７】
2010020680.tif 000009
【図８】
2010020680.tif 000010
【図９】
2010020680.tif 000011
【図１０】
2010020680.tif 000012
【図１１】
2010020680.tif 000013
【図１２】
2010020680.tif 000014
【図１３】
2010020680.tif 000015
【図１４】
2010020680.tif 000016