JP2010020680A - 情報処理装置及びプログラム - Google Patents
情報処理装置及びプログラム Download PDFInfo
- Publication number
- JP2010020680A JP2010020680A JP2008182615A JP2008182615A JP2010020680A JP 2010020680 A JP2010020680 A JP 2010020680A JP 2008182615 A JP2008182615 A JP 2008182615A JP 2008182615 A JP2008182615 A JP 2008182615A JP 2010020680 A JP2010020680 A JP 2010020680A
- Authority
- JP
- Japan
- Prior art keywords
- template
- text
- source
- data
- sample
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】テンプレートのカスタマイズと動作確認を容易に行うことができるようにする。
【解決手段】テンプレートソース編集部103が、テンプレートの生成元となるソースコードであるサンプルテキストを取得し、サンプルテキストのうちテンプレートの生成対象となるテキストをプログラムとして実行可能な状態としながら、テンプレートをコメントとしてサンプルテキストに挿入してテンプレートソースを生成する。テンプレートソースはコンパイルすることによりアプリケーションとして動作可能であり、テンプレートソースをアプリケーションとして動作させて、テンプレートの動作確認を行うことができる。
【選択図】図1
【解決手段】テンプレートソース編集部103が、テンプレートの生成元となるソースコードであるサンプルテキストを取得し、サンプルテキストのうちテンプレートの生成対象となるテキストをプログラムとして実行可能な状態としながら、テンプレートをコメントとしてサンプルテキストに挿入してテンプレートソースを生成する。テンプレートソースはコンパイルすることによりアプリケーションとして動作可能であり、テンプレートソースをアプリケーションとして動作させて、テンプレートの動作確認を行うことができる。
【選択図】図1
Description
本発明は、サンプルテキストからテンプレートを生成するテンプレート生成技術に関する。
従来のテンプレート生成方式は、テンプレートから生成可能にしようとするサンプルテキストを入力する手段と、サンプルテキストに対してテンプレートで文字列の置換を可能とする挿入区画の範囲および構造を示す区画情報を入力する区画情報入力手段と、挿入区画の文字列を生成するための生成規則を入力する生成規則入力手段と、生成規則入力手段で入力した文字列を区画情報手段に置換してテンプレートを生成するテンプレート生成手段によって、サンプルテキストからテンプレートの生成を行っている(例えば、特許文献1)。
さらに、テンプレートの構成要素と生成されたソースコードの構成要素との対応関係を記憶する対応関係記憶手段を介して利用者に識別可能とする対応関係表示制御手段によって、テンプレートと生成されるソースコードの対応関係をユーザが把握することでテンプレートの作成効率を上げるアプローチも提案されている(例えば、特許文献2)。
特開2005−234959号公報 第6頁〜9頁、第1図
特開2006−268292号公報 第5頁〜9頁、第1図
さらに、テンプレートの構成要素と生成されたソースコードの構成要素との対応関係を記憶する対応関係記憶手段を介して利用者に識別可能とする対応関係表示制御手段によって、テンプレートと生成されるソースコードの対応関係をユーザが把握することでテンプレートの作成効率を上げるアプローチも提案されている(例えば、特許文献2)。
プログラムソースコードのような複雑な構造を持ったテキストを生成するため、Apache(登録商標)プロジェクトで開発されているVelocity(オープンソース名称)をはじめとするテンプレートエンジンにはテンプレートを作成するための構文として、繰り返しや条件判断などの制御構文をもつ。
このような制御構文を含んだ複雑なテンプレートを作成すると、テンプレートから生成されるソースコードはテンプレートエンジンに与えるソースコードを生成するためのモデルデータにより、生成されるプログラムソースコードの構造が大きく異なることがある。このようなテンプレートの動作確認するためにソースコードを複数のパターンで生成して確認する必要があるが、上記に示した従来のテンプレート生成方式では、複数のソースコードを生成して確認するためには、複数のサンプルを事前に用意する必要があり、複数のサンプルソースコードを用意するのは手間がかかる作業となっている。
このような制御構文を含んだ複雑なテンプレートを作成すると、テンプレートから生成されるソースコードはテンプレートエンジンに与えるソースコードを生成するためのモデルデータにより、生成されるプログラムソースコードの構造が大きく異なることがある。このようなテンプレートの動作確認するためにソースコードを複数のパターンで生成して確認する必要があるが、上記に示した従来のテンプレート生成方式では、複数のソースコードを生成して確認するためには、複数のサンプルを事前に用意する必要があり、複数のサンプルソースコードを用意するのは手間がかかる作業となっている。
また、テンプレートに不具合を発見した場合や生成するアプリケーションの仕様が変わった場合など、テンプレートを修正しなければならない場合、動作確認作業として、修正したテンプレートからアプリケーションを生成し、生成したアプリケーションに対してさらにアプリケーションカスタマイズコードを追加してアプリケーションを完成させて動作確認するという作業を修正するたびに実施しなければならず、テンプレートを開発する上で手間のかかる作業となってしまうという課題がある。
本発明は上記のような課題を解決することを主な目的の一つとしており、テンプレートのカスタマイズと動作確認を容易に行うことができるようにすることを主な目的とする。
本発明に係る情報処理装置は、
複数の部分データに区分されるテキストデータをテンプレート生成の雛形となるサンプルテキストとして入力するサンプルテキスト入力部と、
前記サンプルテキストの複数の部分データのうちテンプレートの生成対象として指定されたテンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記テンプレート生成部分データに対するテンプレートを部分テンプレートとして前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入するテンプレート挿入部とを有することを特徴とする。
複数の部分データに区分されるテキストデータをテンプレート生成の雛形となるサンプルテキストとして入力するサンプルテキスト入力部と、
前記サンプルテキストの複数の部分データのうちテンプレートの生成対象として指定されたテンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記テンプレート生成部分データに対するテンプレートを部分テンプレートとして前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入するテンプレート挿入部とを有することを特徴とする。
本発明によれば、テキストデータの一部であるテンプレート生成部分データをサンプルテキストに存置させたままで、部分テンプレートをサンプルテキストの他の部分と区別してサンプルテキストに挿入するため、テンプレート生成部分データをプログラムコードとして実行させることが可能であり、テンプレートの動作確認を容易に行うことができる。
また、テンプレートを修正した場合にもテンプレート生成部分を容易に置換可能であり、かつ、アプリケーションカスタマイズ対象部分が一体となっているため、カスタマイズした際の動作確認を容易に実施できる。
また、テンプレートを修正した場合にもテンプレート生成部分を容易に置換可能であり、かつ、アプリケーションカスタマイズ対象部分が一体となっているため、カスタマイズした際の動作確認を容易に実施できる。
実施の形態1.
図1は、本実施の形態に係るテンプレート生成装置100の構成例を示す図である。
なお、テンプレート生成装置100は、情報処理装置の例である。
本実施の形態に係るテンプレート生成装置100は、ソースコードであるサンプルテキストからテンプレートソースを生成し、テンプレートソースからテンプレートを生成する。
詳細は、後述するが、テンプレートソースは、サンプルテキストとテンプレートの中間状態にあるテキストであり、いくつかの要素がテンプレートソースから削除されてテンプレートとなる。また、テンプレートソースは、サンプルテキスト(ソースコード)としての特性を維持しており、コンパイルすることによりアプリケーションとして動作可能となる。このため、テンプレートソースの段階でテンプレートとしての動作検証を行うことができる。
図1は、本実施の形態に係るテンプレート生成装置100の構成例を示す図である。
なお、テンプレート生成装置100は、情報処理装置の例である。
本実施の形態に係るテンプレート生成装置100は、ソースコードであるサンプルテキストからテンプレートソースを生成し、テンプレートソースからテンプレートを生成する。
詳細は、後述するが、テンプレートソースは、サンプルテキストとテンプレートの中間状態にあるテキストであり、いくつかの要素がテンプレートソースから削除されてテンプレートとなる。また、テンプレートソースは、サンプルテキスト(ソースコード)としての特性を維持しており、コンパイルすることによりアプリケーションとして動作可能となる。このため、テンプレートソースの段階でテンプレートとしての動作検証を行うことができる。
図1において、101はテンプレートを生成する際にテンプレートから生成しようとするテキストデータのサンプルを入力するサンプルテキスト入力部である。
サンプルテキスト入力部101が入力するサンプルテキストは、テンプレート生成の雛形となるテキストデータである。
本実施の形態では、サンプルテキスト入力部101は、プログラムコードであるソースコードをサンプルテキストとして入力するものとする。
また、サンプルテキストであるソースコードは、複数のプログラム文(部分データ)から構成されており、各プログラム文を区分可能である。
また、サンプルテキストは、固定テキスト部分(以下、単に固定テキストともいう)と、アプリケーションカスタマイズ対象部分と、テンプレート生成対象部分とに分けられる。
固定テキストとは、ソースコードの一部としてそのまま用いられる部分(プログラム文)である。テンプレートエンジンがテンプレート中に含まれるテキストをそのままソースコードに出力するため、「固定テキスト」と呼んでいる。固定テキストは、テンプレートの生成対象とならない。
アプリケーションカスタマイズ対象部分は、アプリケーション開発者によりカスタマイズされる部分(プログラム文)である。アプリケーションカスタマイズ対象部分は、テンプレートの生成対象とならない。
テンプレート生成対象部分とは、テンプレートの生成対象となる部分(プログラム文)である。テンプレート生成対象部分は、テンプレートソース編集者により指定される。
本実施の形態では、サンプルテキスト入力部101は、プログラムコードであるソースコードをサンプルテキストとして入力するものとする。
また、サンプルテキストであるソースコードは、複数のプログラム文(部分データ)から構成されており、各プログラム文を区分可能である。
また、サンプルテキストは、固定テキスト部分(以下、単に固定テキストともいう)と、アプリケーションカスタマイズ対象部分と、テンプレート生成対象部分とに分けられる。
固定テキストとは、ソースコードの一部としてそのまま用いられる部分(プログラム文)である。テンプレートエンジンがテンプレート中に含まれるテキストをそのままソースコードに出力するため、「固定テキスト」と呼んでいる。固定テキストは、テンプレートの生成対象とならない。
アプリケーションカスタマイズ対象部分は、アプリケーション開発者によりカスタマイズされる部分(プログラム文)である。アプリケーションカスタマイズ対象部分は、テンプレートの生成対象とならない。
テンプレート生成対象部分とは、テンプレートの生成対象となる部分(プログラム文)である。テンプレート生成対象部分は、テンプレートソース編集者により指定される。
図9は、固定テキストとテンプレート生成対象部分の例を示している。
図9では、テンプレート200からテンプレートエンジンを用いて、ソースコード300を生成すること、及び本実施の形態に係るテンプレート生成装置100がソースコード300からテンプレート200を生成することを示している。
ソースコード300のうち301及び302の記述は、テンプレートエンジンにより、テンプレート200の201及び202の制御情報から変換される。一方、テンプレート生成装置100におけるテンプレートの生成過程では、301及び302の記述に対してテンプレート200の201及び202の制御情報が生成され、301及び302がテンプレート生成対象部分となる。
また、ソースコード301において、301及び302以外の部分は、テンプレート200及びソースコード300において共通であり、固定テキストである。
なお、テンプレート200の201及び202の制御情報は、テンプレート生成対象部分に対するテンプレートであり、テンプレート制御情報(部分テンプレート)と呼ぶ。
図9では、テンプレート200からテンプレートエンジンを用いて、ソースコード300を生成すること、及び本実施の形態に係るテンプレート生成装置100がソースコード300からテンプレート200を生成することを示している。
ソースコード300のうち301及び302の記述は、テンプレートエンジンにより、テンプレート200の201及び202の制御情報から変換される。一方、テンプレート生成装置100におけるテンプレートの生成過程では、301及び302の記述に対してテンプレート200の201及び202の制御情報が生成され、301及び302がテンプレート生成対象部分となる。
また、ソースコード301において、301及び302以外の部分は、テンプレート200及びソースコード300において共通であり、固定テキストである。
なお、テンプレート200の201及び202の制御情報は、テンプレート生成対象部分に対するテンプレートであり、テンプレート制御情報(部分テンプレート)と呼ぶ。
102は、サンプルテキスト入力部101から入力されたサンプルテキストを保持しておくサンプルテキスト格納部である。
103は、サンプルテキスト格納部102に格納されているサンプルテキストを元にテンプレートソースを編集するテンプレートソース編集部である。
テンプレートソース編集部103中には、同一テンプレートを生成するための別のサンプルテキストがサンプルテキスト格納部に存在した場合に、該当するサンプルテキストをテンプレートソースに変換するテンプレートソース変換部1031と、テンプレートソースのテンプレート生成対象部分および、アプリケーションカスタマイズ対象部分が異なる別のテンプレートソースを作成するテンプレートソース生成部1032を含む。
テンプレートソース編集部103中には、同一テンプレートを生成するための別のサンプルテキストがサンプルテキスト格納部に存在した場合に、該当するサンプルテキストをテンプレートソースに変換するテンプレートソース変換部1031と、テンプレートソースのテンプレート生成対象部分および、アプリケーションカスタマイズ対象部分が異なる別のテンプレートソースを作成するテンプレートソース生成部1032を含む。
テンプレートソース編集部103は、より具体的には、テンプレート生成装置100を利用するテンプレートソース編集者からの指示に基づき、サンプルテキストの複数のプログラム文(部分データ)のうちテンプレート生成対象部分(テンプレート生成部分データ)を指定する。
また、テンプレートソース編集部103は、テンプレート生成対象部分であるプログラム文をプログラムコードとして実行できる状態でサンプルテキスト内に存置させたままで、テンプレート生成対象部分に対するテンプレートであるテンプレート制御情報(部分テンプレート)をサンプルテキストのプログラム文から区別してサンプルテキストに挿入する。
本実施の形態では、テンプレートソース編集部103は、テンプレート制御情報にコメント符号を付加して、テンプレート制御情報をコメント化してサンプルテキストに挿入する。
また、テンプレートソース編集部103は、テンプレート生成対象部分であるプログラム文に、テンプレート生成対象部分の開始位置及び終了位置を示すコメントを付加して、テンプレート生成対象部分を明示する。なお、テンプレート生成対象部分の開始位置及び終了位置を示すコメントが付加されていても、上記したように、テンプレート生成対象部分たるプログラム文自体は、プログラムコードとして実行可能である。
また、テンプレート制御情報が挿入され、テンプレート生成対象部分の開始位置及び終了位置を示すコメントが付加され、また、後述するアプリケーションカスタマイズ対象部分が別メソッド化された状態のサンプルテキストをテンプレートソースと呼ぶ。テンプレートソースはテンプレートの原型となるものである。
また、テンプレートソース編集部103は、テンプレートソースの生成に用いたサンプルテキスト以外の新たなサンプルテキストをサンプルテキスト格納部102から取得し、取得した新たなサンプルテキストを用いて、生成したテンプレートソースを解析し、当該テンプレートソースの改修の要否を判断する。
テンプレートソース編集部103は、テンプレート挿入部及びテンプレートソース解析部の例である。
また、テンプレートソース編集部103は、テンプレート生成対象部分であるプログラム文をプログラムコードとして実行できる状態でサンプルテキスト内に存置させたままで、テンプレート生成対象部分に対するテンプレートであるテンプレート制御情報(部分テンプレート)をサンプルテキストのプログラム文から区別してサンプルテキストに挿入する。
本実施の形態では、テンプレートソース編集部103は、テンプレート制御情報にコメント符号を付加して、テンプレート制御情報をコメント化してサンプルテキストに挿入する。
また、テンプレートソース編集部103は、テンプレート生成対象部分であるプログラム文に、テンプレート生成対象部分の開始位置及び終了位置を示すコメントを付加して、テンプレート生成対象部分を明示する。なお、テンプレート生成対象部分の開始位置及び終了位置を示すコメントが付加されていても、上記したように、テンプレート生成対象部分たるプログラム文自体は、プログラムコードとして実行可能である。
また、テンプレート制御情報が挿入され、テンプレート生成対象部分の開始位置及び終了位置を示すコメントが付加され、また、後述するアプリケーションカスタマイズ対象部分が別メソッド化された状態のサンプルテキストをテンプレートソースと呼ぶ。テンプレートソースはテンプレートの原型となるものである。
また、テンプレートソース編集部103は、テンプレートソースの生成に用いたサンプルテキスト以外の新たなサンプルテキストをサンプルテキスト格納部102から取得し、取得した新たなサンプルテキストを用いて、生成したテンプレートソースを解析し、当該テンプレートソースの改修の要否を判断する。
テンプレートソース編集部103は、テンプレート挿入部及びテンプレートソース解析部の例である。
104は、テンプレートソース編集部103により編集・生成されたテンプレートソースを保持しておくテンプレートソース格納部である。
105は、テンプレートソース格納部104に格納されているテンプレートソースから、アプリケーションカスタマイズ対象部分および、テンプレート生成対象部分を削除し、更に、コメント化されているテンプレート制御情報からコメント符号を削除し、テンプレートソースを、テンプレートエンジンが解釈可能なテンプレートに変換するテンプレート生成部である。
107は、テンプレート生成装置100のユーザであるテンプレートソース編集者からの指示を入力するユーザ入力部である。
106は、テンプレート生成部105で生成されたテンプレートを示す。
前述したように、テンプレートソースは、コメント化されたテンプレート制御情報と、テンプレート制御情報がテンプレートエンジンで変換されるソースコードとさらにアプリケーション開発者がカスタマイズして作成することを想定したコードがすべて含まれ、アプリケーションとしても動作可能な状態となっているテキストをさす。
前述したように、テンプレートソースは、コメント化されたテンプレート制御情報と、テンプレート制御情報がテンプレートエンジンで変換されるソースコードとさらにアプリケーション開発者がカスタマイズして作成することを想定したコードがすべて含まれ、アプリケーションとしても動作可能な状態となっているテキストをさす。
図10にテンプレートソースの具体例を示す。
テンプレートソース400において、401の部分は固定テキストであり、402の部分はテンプレート生成対象部分であり、403の部分はコメント化されたテンプレート制御情報であり、404の部分は固定テキストであり、405の部分はテンプレート生成対象部分であり、406の部分はコメント化されたテンプレート制御情報であり、407の部分は固定テキストであり、408の部分はアプリケーションカスタマイズ対象部分であり、409の部分は固定テキストである。
図10に示すように、テンプレート生成対象部分402及び405は、テンプレート生成対象部分の開始位置を示すコメント(テンプレート生成対象部分begin)及びテンプレート生成対象部分の終了位置を示すコメント(テンプレート生成対象部分end)で挟まれているが、プログラムとして実行可能である。
一方、テンプレート制御情報403及び406は、コメント化されているので、プログラムとしては動作しない。
テンプレートソース400において、401の部分は固定テキストであり、402の部分はテンプレート生成対象部分であり、403の部分はコメント化されたテンプレート制御情報であり、404の部分は固定テキストであり、405の部分はテンプレート生成対象部分であり、406の部分はコメント化されたテンプレート制御情報であり、407の部分は固定テキストであり、408の部分はアプリケーションカスタマイズ対象部分であり、409の部分は固定テキストである。
図10に示すように、テンプレート生成対象部分402及び405は、テンプレート生成対象部分の開始位置を示すコメント(テンプレート生成対象部分begin)及びテンプレート生成対象部分の終了位置を示すコメント(テンプレート生成対象部分end)で挟まれているが、プログラムとして実行可能である。
一方、テンプレート制御情報403及び406は、コメント化されているので、プログラムとしては動作しない。
テンプレートはそのままではアプリケーションとしては動作しないため、テンプレートの動作検証のためにテンプレートに変数値を適用して実際にソースコードに変換して動作検証を行う必要がある。この動作検証では、テンプレートの生成の元になったソースコードの実行結果と、テンプレートから生成したソースコードの実行結果とを照合する必要があり、このため、動作検証のために、テンプレートとは別に生成の元となったソースコードを管理する必要がある。
テンプレート生成対象部分のプログラムコードは固定テキストともに実行可能であるため、テンプレートソースに変数値を適用してそのままアプリケーションプログラムとして動作させることができ、テンプレートソースのみでテンプレートの動作検証が可能であり、テンプレートとソースコードの両者を管理する必要はない。
テンプレート生成対象部分のプログラムコードは固定テキストともに実行可能であるため、テンプレートソースに変数値を適用してそのままアプリケーションプログラムとして動作させることができ、テンプレートソースのみでテンプレートの動作検証が可能であり、テンプレートとソースコードの両者を管理する必要はない。
なお、動作検証後は、テンプレート生成部105により、テンプレートソース400からテンプレート生成対象部分402及び405、アプリケーションカスタマイズ対象部分408が削除され、また、テンプレート制御情報403及び406のコメント記号が削除され、固定テキスト401、404、407及び409とテンプレート制御情報(${FORM}及び${getId})から構成されるテンプレート(図9のテンプレート200)が生成される。
次に動作について説明する。
サンプルテキスト入力部101は、テンプレートから生成しようとするテキストのサンプルを入力し、サンプルテキスト格納部102に送る。
サンプルテキスト格納部102は、サンプルテキストとそのサンプルテキストから作成しようとするテンプレートとの対応関係を保持する。
一つのテンプレートに複数のサンプルテキストが対応付けられる可能性がある。
テンプレートソース編集部103は以下に示す手順によりサンプルテキストをテンプレートソースに変換し、テンプレートソース格納部104に変換したテンプレートソースを格納する。
また、テンプレート生成部105は、テンプレートソース格納部104に格納されているテンプレートソースからテンプレート生成対象部分、アプリケーションカスタマイズ対象部分、テンプレート制御情報のコメント符号を削除してテンプレート106を生成する。
サンプルテキスト入力部101は、テンプレートから生成しようとするテキストのサンプルを入力し、サンプルテキスト格納部102に送る。
サンプルテキスト格納部102は、サンプルテキストとそのサンプルテキストから作成しようとするテンプレートとの対応関係を保持する。
一つのテンプレートに複数のサンプルテキストが対応付けられる可能性がある。
テンプレートソース編集部103は以下に示す手順によりサンプルテキストをテンプレートソースに変換し、テンプレートソース格納部104に変換したテンプレートソースを格納する。
また、テンプレート生成部105は、テンプレートソース格納部104に格納されているテンプレートソースからテンプレート生成対象部分、アプリケーションカスタマイズ対象部分、テンプレート制御情報のコメント符号を削除してテンプレート106を生成する。
図2は、テンプレートソース編集部103の動作を示すフローチャートである。
以下では、テンプレートソース変換部1031の動作として説明するが、テンプレートソース生成部1032がこれらの動作を行うようにしてもよい。
以下では、テンプレートソース変換部1031の動作として説明するが、テンプレートソース生成部1032がこれらの動作を行うようにしてもよい。
テンプレートソース編集部103のテンプレートソース変換部1031は、まずステップS201にてサンプルテキスト格納部102から編集しようとするテンプレートの元となるサンプルテキストを取得し、テンプレートソースとしてコピーする。
次に、テンプレートソース変換部1031は、テンプレートソースを編集可能状態にし、テンプレートソース編集者にテキストの一部を選択可能とする。
ステップS202にて、テンプレートソース編集者がユーザ入力部107からテンプレートソース編集の終了を指示することによりテンプレートソース変換部1031は動作を終了し、ステップS209にて生成したテンプレートソースをテンプレートソース格納部104に格納する。
まだテンプレートソース編集を終了していない場合、ステップS203にて、ユーザ入力部107を用いてテンプレートソース編集者がテンプレートソースのテキストの任意部分を指定する。
ステップS204にて、テンプレートソース変換部1031は、選択したテキスト部分が何に相当するのかをテンプレートソース編集者に問い合わせる(S204)。
テンプレートソース編集者は、テンプレートソース編集部103からの問い合わせに対して、ユーザ入力部107により当該テキスト部分が何に相当するのかを回答し、アプリケーション開発者がカスタマイズする部分(アプリケーションカスタマイズ対象部分)に相当する場合、テンプレートソース編集部103は、ステップS205にて、リファクタリングのメソッド抽出(例えば、「リファクタリング、ISBN4−89471−228−8、P110」に記載)の手法を用いて指定された部分を別のメソッドに抽出し、メソッドをアプリケーション開発者がカスタマイズする部分であることを示すマークをコメントに付加する。
次に、テンプレートソース変換部1031は、テンプレートソースを編集可能状態にし、テンプレートソース編集者にテキストの一部を選択可能とする。
ステップS202にて、テンプレートソース編集者がユーザ入力部107からテンプレートソース編集の終了を指示することによりテンプレートソース変換部1031は動作を終了し、ステップS209にて生成したテンプレートソースをテンプレートソース格納部104に格納する。
まだテンプレートソース編集を終了していない場合、ステップS203にて、ユーザ入力部107を用いてテンプレートソース編集者がテンプレートソースのテキストの任意部分を指定する。
ステップS204にて、テンプレートソース変換部1031は、選択したテキスト部分が何に相当するのかをテンプレートソース編集者に問い合わせる(S204)。
テンプレートソース編集者は、テンプレートソース編集部103からの問い合わせに対して、ユーザ入力部107により当該テキスト部分が何に相当するのかを回答し、アプリケーション開発者がカスタマイズする部分(アプリケーションカスタマイズ対象部分)に相当する場合、テンプレートソース編集部103は、ステップS205にて、リファクタリングのメソッド抽出(例えば、「リファクタリング、ISBN4−89471−228−8、P110」に記載)の手法を用いて指定された部分を別のメソッドに抽出し、メソッドをアプリケーション開発者がカスタマイズする部分であることを示すマークをコメントに付加する。
別メソッド化というのはソースコードの一部をサブルーチンとして抽出して外部のメソッドとして作成することを指す。
具体的には、図11に示すようなソースコードの変換を指す。
元のソースコード500の501の行をテンプレートソース600では外部のメソッドとして抽出し(行602)、もともと501の行があったところには、抽出したメソッドの呼び出しを追加する(行601)。
アプリケーション開発者がカスタマイズする部分をこのように別メソッドに分けることで、テンプレートエンジンで生成されるコードと分離することが出来るため、アプリケーション開発者のプログラミングが行いやすくなる。
具体的には、図11に示すようなソースコードの変換を指す。
元のソースコード500の501の行をテンプレートソース600では外部のメソッドとして抽出し(行602)、もともと501の行があったところには、抽出したメソッドの呼び出しを追加する(行601)。
アプリケーション開発者がカスタマイズする部分をこのように別メソッドに分けることで、テンプレートエンジンで生成されるコードと分離することが出来るため、アプリケーション開発者のプログラミングが行いやすくなる。
一方、ステップS204において、テンプレートソース編集者からテンプレート生成対象部分であるとの回答を得た場合、テンプレートソース変換部1031は、当該テキスト部分をテンプレート生成対象部分として指定し、さらに、ステップS206において、ユーザ入力部107を介して置き換えるテンプレート制御情報(部分テンプレート)を入力する。
また、テンプレートソース変換部1031は、ステップS207にて、当該テンプレート制御情報により、指定されたテキスト部分(テンプレート生成対象部分)が生成可能であることを確認し、テンプレートソースの指定されたテキスト部分(テンプレート生成対象部分)の前後にテンプレート生成対象部分であることを示すコメントを追加するとともに、ステップS208で、ステップS206で入力されたテンプレート制御情報をコメント形式でテンプレート生成対象部分のコード上部に挿入する。
また、テンプレートソース変換部1031は、ステップS207にて、当該テンプレート制御情報により、指定されたテキスト部分(テンプレート生成対象部分)が生成可能であることを確認し、テンプレートソースの指定されたテキスト部分(テンプレート生成対象部分)の前後にテンプレート生成対象部分であることを示すコメントを追加するとともに、ステップS208で、ステップS206で入力されたテンプレート制御情報をコメント形式でテンプレート生成対象部分のコード上部に挿入する。
サンプルテキスト格納部102に1つのテンプレートに対応するサンプルテキストが複数登録されている場合は、さらにテンプレートソース変換部1031がサンプルテキストからテンプレートソースの変換を行い、登録されたテンプレート制御情報が妥当であることを確認するとともに、テンプレートソースを生成する。
サンプルテキスト格納部102にテンプレートに対応するサンプルテキストが複数登録されている場合は、具体的には、後述する図3及び図4に示す処理が行われる。
また、テンプレートソースのいずれかのテンプレート制御情報に繰り返し制御文又は条件分岐文が含まれている場合は、後述の図5に示す処理が行われる。
他方、サンプルテキスト格納部102に1つのサンプルテキストのみが格納され、また、テンプレート制御情報に繰り返し制御文又は条件分岐文が含まれていない場合は、図2の処理の完了後、後述の図6に示す処理が行われる。
サンプルテキスト格納部102にテンプレートに対応するサンプルテキストが複数登録されている場合は、具体的には、後述する図3及び図4に示す処理が行われる。
また、テンプレートソースのいずれかのテンプレート制御情報に繰り返し制御文又は条件分岐文が含まれている場合は、後述の図5に示す処理が行われる。
他方、サンプルテキスト格納部102に1つのサンプルテキストのみが格納され、また、テンプレート制御情報に繰り返し制御文又は条件分岐文が含まれていない場合は、図2の処理の完了後、後述の図6に示す処理が行われる。
図3及び図4は、テンプレートソース変換部1031の動作を示すフローチャートである。
図3及び図4は、図2の処理により1つのサンプルテキストから1つのテンプレートソースが生成された後に、当該テンプレートソースがサンプルテキスト格納部102に格納されているサンプルテキストに適用可能かどうか(テンプレートソースの改修が必要かどうか)を判断する手順を示す。
なお、図2の処理により生成済みであるテンプレートソースを、元テンプレートソース又は元となるテンプレートソースをいい、図3において新規に生成されるテンプレートソース(サンプルテキスト格納部102に格納されているサンプルテキストから生成されたテンプレートソース)を新テンプレートソースという。
図3及び図4は、図2の処理により1つのサンプルテキストから1つのテンプレートソースが生成された後に、当該テンプレートソースがサンプルテキスト格納部102に格納されているサンプルテキストに適用可能かどうか(テンプレートソースの改修が必要かどうか)を判断する手順を示す。
なお、図2の処理により生成済みであるテンプレートソースを、元テンプレートソース又は元となるテンプレートソースをいい、図3において新規に生成されるテンプレートソース(サンプルテキスト格納部102に格納されているサンプルテキストから生成されたテンプレートソース)を新テンプレートソースという。
例えばサンプルテキスト1、2、3が同一のテンプレートから生成できるようにするためには、以下の条件が成り立つ必要がある。
(1)テンプレートの固定テキスト部分がサンプルテキスト1、2、3のすべてに含まれる。
(2)サンプルテキスト1、サンプルテキスト2、サンプルテキスト3のすべてにおいて、テンプレート制御情報からテンプレート生成対象部分を生成できる。
(3)上記(1)、(2)以外の部分はアプリケーションカスタマイズ対象部分となっている。
図3及び図4に示される処理手順は、これら(1)〜(3)の条件がすべて満たされるか否かを判断し、これらの条件が満たされるのであれば、元テンプレートソースが複数のサンプルテキストに適用可能と判断し、これらの条件が満たされない場合は、元テンプレートソースの改修が必要であると判断するものである。
(1)テンプレートの固定テキスト部分がサンプルテキスト1、2、3のすべてに含まれる。
(2)サンプルテキスト1、サンプルテキスト2、サンプルテキスト3のすべてにおいて、テンプレート制御情報からテンプレート生成対象部分を生成できる。
(3)上記(1)、(2)以外の部分はアプリケーションカスタマイズ対象部分となっている。
図3及び図4に示される処理手順は、これら(1)〜(3)の条件がすべて満たされるか否かを判断し、これらの条件が満たされるのであれば、元テンプレートソースが複数のサンプルテキストに適用可能と判断し、これらの条件が満たされない場合は、元テンプレートソースの改修が必要であると判断するものである。
まず、図3において、テンプレートソース変換部1031は、ステップS301でサンプルテキスト格納部102からサンプルテキストを取り出し、図2のS201と同様に、取り出したサンプルテキストをテンプレートソースとしてコピーする。このテンプレートソースが新テンプレートソースである。
次に、テンプレートソース変換部1031は、ステップS302で、新テンプレートソースであるサンプルテキストを構文解釈しメソッド単位でテキストを切り出すとともに、以下メソッド単位で処理する。
テンプレートソース変換部1031は、ステップS303ですべてのメソッドについて処理を終えたかを判断する。
すべてのメソッドについて処理を終えている場合(S303で“はい”)には、さらに、ステップS309で、元となるテンプレートソースの固定テキスト部分、テンプレート制御情報のコメントがすべて反映されていることを確認する。
つまり、後述するS304からS308の処理を経て生成された新テンプレートソースに、元となるテンプレートソースの固定テキスト部分、テンプレート制御情報のコメントがすべて反映されていることを確認する。
次に、S309で“はい”の場合は、テンプレートソース変換部1031は、生成した新テンプレートソースをテンプレートソース格納部104に格納し、処理を終了する。
次に、テンプレートソース変換部1031は、ステップS302で、新テンプレートソースであるサンプルテキストを構文解釈しメソッド単位でテキストを切り出すとともに、以下メソッド単位で処理する。
テンプレートソース変換部1031は、ステップS303ですべてのメソッドについて処理を終えたかを判断する。
すべてのメソッドについて処理を終えている場合(S303で“はい”)には、さらに、ステップS309で、元となるテンプレートソースの固定テキスト部分、テンプレート制御情報のコメントがすべて反映されていることを確認する。
つまり、後述するS304からS308の処理を経て生成された新テンプレートソースに、元となるテンプレートソースの固定テキスト部分、テンプレート制御情報のコメントがすべて反映されていることを確認する。
次に、S309で“はい”の場合は、テンプレートソース変換部1031は、生成した新テンプレートソースをテンプレートソース格納部104に格納し、処理を終了する。
一方、ステップS303で“いいえ”の場合は、テンプレートソース変換部1031は、ステップS304で、S301で生成した新テンプレートのメソッドに相当するメソッドが元テンプレートソースに存在するか判定する。
存在する場合は、ステップS305にて、元テンプレートソースのメソッド内部のテキストとS301で生成した新テンプレートソースのメソッド内部のテキストとを比較して、メソッド内部行の確認を行う。メソッド内部行の確認のステップは図4で説明する。
存在する場合は、ステップS305にて、元テンプレートソースのメソッド内部のテキストとS301で生成した新テンプレートソースのメソッド内部のテキストとを比較して、メソッド内部行の確認を行う。メソッド内部行の確認のステップは図4で説明する。
S304において、元テンプレートソース内に新テンプレートソースに含まれるメソッドと同等のメソッドが存在しない場合、テンプレートソース変換部1031は、ステップS306にて、アプリケーションカスタマイズ対象部分かどうかの確認を行う。
これは、アプリケーションカスタマイズ対象部分であるかどうかをテンプレートソース編集者に問合せ、テンプレートソース編集者からの回答に従って、判断する。
これは、アプリケーションカスタマイズ対象部分であるかどうかをテンプレートソース編集者に問合せ、テンプレートソース編集者からの回答に従って、判断する。
アプリケーションカスタマイズ対象部分の場合(S306で“はい”)、テンプレートソース変換部1031は、メソッドにアプリケーションカスタマイズ対象部分であることを示すコメントを付加する。
一方、アプリケーションカスタマイズ対象部分でない場合(S306で“いいえ”)、テンプレートソース変換部1031は、元となるテンプレートソースからは当該部分のテンプレートは生成できないことを示すため、S307において、元となるテンプレートソースの改修が必要なことを通知する。
一方、アプリケーションカスタマイズ対象部分でない場合(S306で“いいえ”)、テンプレートソース変換部1031は、元となるテンプレートソースからは当該部分のテンプレートは生成できないことを示すため、S307において、元となるテンプレートソースの改修が必要なことを通知する。
次に、ステップS305の処理の詳細を図4を参照して説明する。
まず、ステップS401にて、テンプレートソース変換部1031は、新テンプレートソースであるサンプルテキストのメソッド内のテキストに、元テンプレートソースの固定テキスト部分が含まれるかどうかを判断する。
固定テキスト部分が含まれない場合は、テンプレートソース変換部1031は、ステップS402にて、元となるテンプレートソースの改修が必要なことを通知して終了する。
固定テキスト部分が含まれる場合は、テンプレートソース変換部1031は、ステップS403にて、新テンプレートソースであるサンプルテキストの固定テキスト部分以外のテキスト部分をループで処理する。
固定テキスト部分が含まれない場合は、テンプレートソース変換部1031は、ステップS402にて、元となるテンプレートソースの改修が必要なことを通知して終了する。
固定テキスト部分が含まれる場合は、テンプレートソース変換部1031は、ステップS403にて、新テンプレートソースであるサンプルテキストの固定テキスト部分以外のテキスト部分をループで処理する。
次に、テンプレートソース変換部1031は、ステップS403にて、該当するテキスト部分がテンプレート変換可能かどうかを判断する。具体的には、テンプレートソース変換部1031は、後述するステップS407で取得したデータモデルが存在する場合は、データモデルと当該テキスト部分とを比較し、データモデルが存在しない場合又は当該テキスト部分と一致するデータモデルが存在ない場合は、当該テキスト部分と元テンプレートソースのテンプレート生成対象部分と比較し、いずれかのテンプレート生成対象部分との一致点を解析して、当該テキスト部分がテンプレート変換可能かを判断する。
テンプレート変換できない場合(S404で“いいえ”)は、さらにステップS408にて、テンプレートソース変換部1031は、アプリケーションカスタマイズ対象部分かを判断する。
これは、アプリケーションカスタマイズ対象部分であるかどうかをテンプレートソース編集者に問合せ、テンプレートソース編集者からの回答に従って、判断する。
アプリケーションカスタマイズ対象部分ではない場合(S408で“いいえ”)は、ステップS402でテンプレートソースの改修が必要なことを通知し終了する。
当該部分がアプリケーションカスタマイズ対象部分の場合(S408で“はい”)、当該部分をリファクタリングの技術を用いてステップS409にて別メソッド化する。
続いてステップS410にて、テンプレートソース変換部1031は、元となるテンプレートソースにも別メソッドを追加し、ループの先頭に戻る。
テンプレート変換できない場合(S404で“いいえ”)は、さらにステップS408にて、テンプレートソース変換部1031は、アプリケーションカスタマイズ対象部分かを判断する。
これは、アプリケーションカスタマイズ対象部分であるかどうかをテンプレートソース編集者に問合せ、テンプレートソース編集者からの回答に従って、判断する。
アプリケーションカスタマイズ対象部分ではない場合(S408で“いいえ”)は、ステップS402でテンプレートソースの改修が必要なことを通知し終了する。
当該部分がアプリケーションカスタマイズ対象部分の場合(S408で“はい”)、当該部分をリファクタリングの技術を用いてステップS409にて別メソッド化する。
続いてステップS410にて、テンプレートソース変換部1031は、元となるテンプレートソースにも別メソッドを追加し、ループの先頭に戻る。
当該部分がテンプレート変換可能な場合(S404で“はい”)、テンプレートソース変換部1031は、ステップS405にて、当該部分のテキストの前後にテンプレート生成対象部分であることを示すコメントを挿入する。
次に、ステップS406にて、テンプレートソース変換部1031は、テンプレート制御情報を当該部分の上の行にコメント形式で挿入する。このテンプレート制御情報は、元テンプレートソースに含まれているテンプレート制御情報と同じものである。
次に、ステップS407にて、テンプレートソース変換部1031は、ソースコードの変換に適用したデータモデルを保持しておく。以降保持した情報はステップS404のテンプレート変換かどうかの判断時に用いる。
ステップS407において保持するデータモデルとは、テンプレート制御情報に含まれる変数とテンプレート生成対象部分との対応付けあり、図10の例では、テンプレート生成対象部分「SampleForm」とテンプレート制御情報の「FORM」とを対応付け、また、テンプレート生成対象部分「getId」とテンプレート制御情報の「getId」とを対応付ける。
そして、ステップS404においては、新テンプレートソース中に「SampleForm」や「getId」が含まれている場合に、データモデルに「SampleForm」や「getId」が含まれていれば、テンプレート変換可能と判断する。
次に、ステップS406にて、テンプレートソース変換部1031は、テンプレート制御情報を当該部分の上の行にコメント形式で挿入する。このテンプレート制御情報は、元テンプレートソースに含まれているテンプレート制御情報と同じものである。
次に、ステップS407にて、テンプレートソース変換部1031は、ソースコードの変換に適用したデータモデルを保持しておく。以降保持した情報はステップS404のテンプレート変換かどうかの判断時に用いる。
ステップS407において保持するデータモデルとは、テンプレート制御情報に含まれる変数とテンプレート生成対象部分との対応付けあり、図10の例では、テンプレート生成対象部分「SampleForm」とテンプレート制御情報の「FORM」とを対応付け、また、テンプレート生成対象部分「getId」とテンプレート制御情報の「getId」とを対応付ける。
そして、ステップS404においては、新テンプレートソース中に「SampleForm」や「getId」が含まれている場合に、データモデルに「SampleForm」や「getId」が含まれていれば、テンプレート変換可能と判断する。
このように、複数のサンプルテキストを用いて同種のテンプレートソースを複数生成するので、複雑なテンプレート制御情報の部分については別のテンプレートソースにて動作確認をすることも可能であり、テンプレートによる動作確認を容易に行うことができる。
また、テンプレートソースのいずれかのテンプレート制御情報において繰り返し制御文や条件分岐文が含まれる場合、テンプレートソース生成部1032は該当するテンプレートソース中のテンプレート制御情報に別のモデルデータを適用した別のテンプレートソースの生成を試みる。
図12は、テンプレート制御情報に条件分岐文が含まれるテンプレートの例を示す。
図12において、801〜805の各々はテンプレート制御情報である。テンプレート制御情報802では条件分岐文であるif文が含まれている。
図12に示すテンプレートの生成過程において、図12のテンプレートに対応するテンプレートソースが生成されるが、図12のテンプレートに対応するテンプレートソースでは、801〜805のテンプレート制御情報がコメント形式で挿入されている。
図12に示すテンプレートを用いてテンプレートエンジンがソースコードを生成する場合に、行802の${FROM}の変数値としてMapが適用されれば、テンプレートエンジンは、「map.put(“USER_ID”,form.get(“ID”));」が含まれるソースコードを生成し、一方、${FROM}の変数値がMap以外であれば、「map.put(“USER_ID”,)」が含まれるソースコードを生成する。
このように、条件により、テンプレートから生成されるソースコードが異なるため、テンプレート生成装置100では、テンプレートソースのコメント化されたテンプレート制御情報に条件分岐が含まれている場合には、分岐先の各々における動作検証を行う必要がある。同様に、テンプレートソースのテンプレート制御情報に繰り返し制御が含まれている場合には、ループ中及びループ完了後における動作検証を行う必要がある。
以降では、このようなテンプレート制御情報に繰り返し制御や条件判断が含まれる場合に、繰り返し制御、条件分岐の各々における動作検証を可能にする複数のテンプレートソースを生成する方法を説明する。
図12において、801〜805の各々はテンプレート制御情報である。テンプレート制御情報802では条件分岐文であるif文が含まれている。
図12に示すテンプレートの生成過程において、図12のテンプレートに対応するテンプレートソースが生成されるが、図12のテンプレートに対応するテンプレートソースでは、801〜805のテンプレート制御情報がコメント形式で挿入されている。
図12に示すテンプレートを用いてテンプレートエンジンがソースコードを生成する場合に、行802の${FROM}の変数値としてMapが適用されれば、テンプレートエンジンは、「map.put(“USER_ID”,form.get(“ID”));」が含まれるソースコードを生成し、一方、${FROM}の変数値がMap以外であれば、「map.put(“USER_ID”,)」が含まれるソースコードを生成する。
このように、条件により、テンプレートから生成されるソースコードが異なるため、テンプレート生成装置100では、テンプレートソースのコメント化されたテンプレート制御情報に条件分岐が含まれている場合には、分岐先の各々における動作検証を行う必要がある。同様に、テンプレートソースのテンプレート制御情報に繰り返し制御が含まれている場合には、ループ中及びループ完了後における動作検証を行う必要がある。
以降では、このようなテンプレート制御情報に繰り返し制御や条件判断が含まれる場合に、繰り返し制御、条件分岐の各々における動作検証を可能にする複数のテンプレートソースを生成する方法を説明する。
図5は、このような場合のテンプレートソース生成部の動作を示すフローチャートである。
まず、ステップS501にて、テンプレートソース生成部1032は、テンプレートソースに入っているテンプレート制御情報から、参照しているデータモデルと、データモデルに対する条件を抽出する。データモデルとは、テンプレート制御情報に適用する変数値であり、データモデルに対する条件とは、テンプレート制御情報の繰り返し制御条件又は分岐条件である。図12のテンプレートに対応するテンプレートソースにおいて、データモデルは、行802に示すFORMであり、データモデルに対する条件とは、行802に示す「if(${FORM}=‘Map’)」である。
次にステップS502で、抽出したデータモデルでループする。
すべてのデータモデルに対して処理が完了していなければ、ステップS503において、抽出したデータモデルに対する条件に対応する値を生成してデータモデルへの適用値として保持する。
具体的には、図12に示す「map.put(“USER_ID”,form.get(“ID”));」(条件が真のときの値)及び「map.put(“USER_ID”,)」(条件が偽のときの値)を生成する。
次にステップS502で、抽出したデータモデルでループする。
すべてのデータモデルに対して処理が完了していなければ、ステップS503において、抽出したデータモデルに対する条件に対応する値を生成してデータモデルへの適用値として保持する。
具体的には、図12に示す「map.put(“USER_ID”,form.get(“ID”));」(条件が真のときの値)及び「map.put(“USER_ID”,)」(条件が偽のときの値)を生成する。
なお、条件に該当する値が自動で生成できない場合は、テンプレートソース編集者にデータモデルと条件を示すことでテンプレートソース編集者に作成させてもよい。
図12の例では、条件が真のときの値は、サンプルテキストに含まれるテンプレート生成対象部分の記述からテンプレートソース生成部1032が生成できるが、条件が偽のときの値は、テンプレート生成装置100を利用するテンプレートソース編集者がユーザ入力部107を介して入力しなければならない。
また、同様に、図13に示すテンプレートに対応するテンプレートソースでは、条件文「if(${FORM}=‘Map’)」に対する条件が真の時の値「map.put(“USER_ID”,form.get(“ID”));」及び条件文「elseif(${FORM}=‘Form’)に対する条件が真のときの値「map.put(“USER_ID”)」はサンプルテキストに含まれるテンプレート生成対象部分の記述からテンプレートソース生成部1032が生成できるが、条件が偽のときの値「form.${getId}()」は、テンプレート生成装置100を利用するテンプレートソース編集者がユーザ入力部107を介して入力しなければならない。
図12の例では、条件が真のときの値は、サンプルテキストに含まれるテンプレート生成対象部分の記述からテンプレートソース生成部1032が生成できるが、条件が偽のときの値は、テンプレート生成装置100を利用するテンプレートソース編集者がユーザ入力部107を介して入力しなければならない。
また、同様に、図13に示すテンプレートに対応するテンプレートソースでは、条件文「if(${FORM}=‘Map’)」に対する条件が真の時の値「map.put(“USER_ID”,form.get(“ID”));」及び条件文「elseif(${FORM}=‘Form’)に対する条件が真のときの値「map.put(“USER_ID”)」はサンプルテキストに含まれるテンプレート生成対象部分の記述からテンプレートソース生成部1032が生成できるが、条件が偽のときの値「form.${getId}()」は、テンプレート生成装置100を利用するテンプレートソース編集者がユーザ入力部107を介して入力しなければならない。
また、すべてのデータモデルに対して値が決定されたら、次に、ステップS504にてそのデータモデルの変数値をテンプレート制御条件に適用し生成されたソースコードと既存のテンプレートソースのテンプレート生成対象部分のコードを置換し新しいテンプレートソースとしてテンプレートソース格納部104に保存する。
テンプレート生成部105は、テンプレートソース格納部104からテンプレートソースを取り出し、テンプレートを生成する。
なお、テンプレート生成部105がテンプレートを生成する段階では、テンプレートソース格納部104に格納されている各テンプレートソースに対して既に動作検証が行われており、各テンプレートソースから生成されるテンプレートは正確に動作する(正確にソースコードを生成できる)ことが確認されている。
なお、テンプレート生成部105がテンプレートを生成する段階では、テンプレートソース格納部104に格納されている各テンプレートソースに対して既に動作検証が行われており、各テンプレートソースから生成されるテンプレートは正確に動作する(正確にソースコードを生成できる)ことが確認されている。
図6は、テンプレート生成部105の動作を示すフローチャートである。
テンプレート生成部105は、ステップS601にてテンプレートソース格納部104から生成する対象のテンプレートに対応するテンプレートソース(テンプレートに対応するテンプレートソースが複数有る場合は、そのうちの一つ)を取り出す。
次に、ステップS602にてテンプレートソースを一行毎に読み込む。
ステップS603にてテンプレートソースを最後まで読み終えた場合、終了する。
まだ読み終えていない場合は、テンプレート生成部105は、ステップS604にて読み込んだ行の内容ごとに処理を変更して実施する。
テンプレート制御情報をあらわすコメントの場合、ステップS605にて、テンプレート制御情報からコメントをはずす。
また、テンプレート生成対象部分の場合は、ステップS606にて、テンプレート生成対象部分の終了を表すコメントを読み込むまで削除する。
アプリケーションカスタマイズ対象部分の場合は、ステップS607にて、メソッドの内部行を削除する。
その他(固定テキスト部分)の場合は、ステップS608にて、読み込んだ内容をそのままテンプレートに出力する。
図6の処理が終了すると、テンプレートソースからテンプレートが生成されたことになる。
次に、ステップS602にてテンプレートソースを一行毎に読み込む。
ステップS603にてテンプレートソースを最後まで読み終えた場合、終了する。
まだ読み終えていない場合は、テンプレート生成部105は、ステップS604にて読み込んだ行の内容ごとに処理を変更して実施する。
テンプレート制御情報をあらわすコメントの場合、ステップS605にて、テンプレート制御情報からコメントをはずす。
また、テンプレート生成対象部分の場合は、ステップS606にて、テンプレート生成対象部分の終了を表すコメントを読み込むまで削除する。
アプリケーションカスタマイズ対象部分の場合は、ステップS607にて、メソッドの内部行を削除する。
その他(固定テキスト部分)の場合は、ステップS608にて、読み込んだ内容をそのままテンプレートに出力する。
図6の処理が終了すると、テンプレートソースからテンプレートが生成されたことになる。
なお、上述では、既存のサンプルテキストをサンプルテキスト入力部101から入力するように構成したが、既存のサンプルテキストを入力するかわりに、テンプレートソース編集者がユーザ入力部107によりコード文を順次入力してプログラミング作業を行い、新規のサンプルテキスト(ソースコード)を生成しながら、テンプレートソースを編集するようにしてもよい。この場合には、ユーザ入力部107が、サンプルテキスト入力部の例となる。
以上のように、本実施の形態に示すテンプレート生成装置では、サンプルコードからテンプレートに変換するテンプレート制御情報を含みかつ、コンパイルすることによりアプリケーションとして動作可能となるようなテンプレートソースを用意し、また複雑なテンプレート制御情報の部分について別のテンプレートソースを生成して動作確認できるようにするので、テンプレートによる動作確認を容易に行うことができる。
また、アプリケーションカスタマイズ対象部分は別メソッドに分離・抽出することにより、テンプレートの開発をテンプレート制御情報を挿入する部分と固定テキスト部分とテンプレート生成対象部分に絞ることができるようになるので、以降のテンプレートの開発が容易になる。
また、アプリケーションカスタマイズ対象部分は別メソッドに分離・抽出することにより、テンプレートの開発をテンプレート制御情報を挿入する部分と固定テキスト部分とテンプレート生成対象部分に絞ることができるようになるので、以降のテンプレートの開発が容易になる。
以上、本実施の形態では、サンプルテキストからテンプレートを生成する際に、テンプレート制御情報をコメント化し、テンプレートの制御情報から生成されるテキストをテンプレート生成対象部分として保持するテンプレートソースを合わせて生成し、テンプレートソースを用いてテンプレートの動作確認を行えるテンプレート生成方式について説明した。
また、本実施の形態では、テンプレートソースに対してアプリケーションカスタマイズ対象部分を追加すると、追加されたコードを別メソッドとして抽出することにより、アプリケーションカスタマイズ対象部分を分離するテンプレート生成方式について説明した。
実施の形態2.
以上の実施の形態1では、サンプルテキストを基にしてテンプレートソースを生成するようにしたものであるが、本実施の形態では、既存の方式でテンプレートを開発した場合などテンプレートソースが存在せずテンプレートが既に存在する場合に、既存のテンプレートからテンプレートソースを生成する方式を説明する。
以上の実施の形態1では、サンプルテキストを基にしてテンプレートソースを生成するようにしたものであるが、本実施の形態では、既存の方式でテンプレートを開発した場合などテンプレートソースが存在せずテンプレートが既に存在する場合に、既存のテンプレートからテンプレートソースを生成する方式を説明する。
図7は、本実施の形態に係るテンプレート生成装置(情報処理装置)の構成例を示す。
図7では、図1に比べ、テンプレートソース編集部701が異なり、また、サンプルテンプレート入力部702が追加されている。
テンプレートソース編集部701内のテンプレートソース変換部7011は、実施の形態1のテンプレートソース変換部1031と異なり、テンプレートをもとにテンプレートソースを生成する。
図7では、図1に比べ、テンプレートソース編集部701が異なり、また、サンプルテンプレート入力部702が追加されている。
テンプレートソース編集部701内のテンプレートソース変換部7011は、実施の形態1のテンプレートソース変換部1031と異なり、テンプレートをもとにテンプレートソースを生成する。
本実施の形態では、サンプルテンプレート入力部702は、テキストデータ(プログラムコード)を生成することができるテンプレートを新たなテンプレート生成の雛形となるサンプルテンプレートとして入力する。入力するテンプレートは、テンプレート生成部105で生成されたテンプレートでもよいし、外部装置で生成されたテンプレートでもよい。なお、入力するサンプルテンプレートには、実施の形態1で説明したテンプレート制御情報が含まれる。サンプルテンプレートに含まれるテンプレート制御情報を部分テンプレートともいう。
テンプレートソース編集部701は、部分テンプレートごとに、部分テンプレートを用いてテキストデータを生成し、生成したテキストデータをサンプルテンプレートの他の部分とともにプログラムコードとして実行可能な状態でサンプルテンプレートに挿入する。テキストデータの挿入位置は、当該部分テンプレートの直前又は直後である。
また、テンプレートソース編集部701は、テキストデータが生成されたデータ生成部分テンプレートをサンプルテンプレートの他の部分から区別する処理を行う。具体的には、データ生成部分テンプレートをコメント化することで、サンプルテンプレートの他の部分から区別する。
このようにして、テンプレートソース編集部701は、新たなテンプレートの原型となるテンプレートソースを生成する。
また、テンプレートソース編集部701は、テキストデータが生成されたデータ生成部分テンプレートをサンプルテンプレートの他の部分から区別する処理を行う。具体的には、データ生成部分テンプレートをコメント化することで、サンプルテンプレートの他の部分から区別する。
このようにして、テンプレートソース編集部701は、新たなテンプレートの原型となるテンプレートソースを生成する。
そして、テンプレート生成部105は、テンプレートソースから、生成テキストデータを削除するとともに、テキストデータ生成部分テンプレートに付加されているコメント符号を削除する。
なお、本実施の形態では、テンプレートソース編集部701は、テキストデータ生成部及びテキストデータ挿入部の例である。
次に、テンプレートからテンプレートソースを作成するテンプレートソース変換部7011の動作を説明する。
テンプレートソース変換部7011は、テンプレート106のデータ生成部分テンプレート(テンプレート制御情報)をコメント化し、データモデルの値を適用して生成したソースコードおよび、アプリケーションカスタマイズ対象部分を追加することにより、テンプレートソースを生成する。
図8は、テンプレートソース変換部7011の動作を説明するフローチャートである。
テンプレートソース変換部7011は、テンプレート106のデータ生成部分テンプレート(テンプレート制御情報)をコメント化し、データモデルの値を適用して生成したソースコードおよび、アプリケーションカスタマイズ対象部分を追加することにより、テンプレートソースを生成する。
図8は、テンプレートソース変換部7011の動作を説明するフローチャートである。
テンプレートソース変換部7011は、まず、ステップS801にて既存のテンプレート106をテンプレートソースとしてコピーする。
次に、テンプレートソース変換部7011は、ステップS802にて、テンプレート内のテンプレート制御条件から、データモデルと条件を抽出する。
次に、テンプレートソース変換部7011は、ステップS803にて、抽出したデータモデルを元にループし、ステップS804にてデータモデルに対する条件に対応する値を作成する。データモデル及びデータモデルに対する条件は、実施の形態1で説明した通りである。
自動で条件に対応する値が生成できない場合は、テンプレート開発者にデータモデルと条件を示して適用する値を作成してもらっても良い。
すべてのデータモデルに対応する値を設定し終えたら、ステップS805にて、値をテンプレート制御情報に適用してソースコードを生成する。テンプレート制御情報(部分テンプレート)ごとに、テンプレート制御情報とS804で生成した値からソースコードを生成する。
生成されたソースコードは、実施の形態1で示したテンプレート生成対象部分として、テンプレートソースのテンプレート制御情報の下行にソースコードを示すコメントとともに挿入する。
次に、テンプレートソース変換部7011は、ステップS806にて、テンプレート制御情報(部分テンプレート)をコメント化する。
続いて、ステップS807にて、テンプレートソース編集者は、アプリケーションカスタマイズ対象部分を入力する。入力されたアプリケーションカスタマイズ対象部分はステップS808にて別メソッドとして抽出される。
次に、テンプレートソース変換部7011は、ステップS802にて、テンプレート内のテンプレート制御条件から、データモデルと条件を抽出する。
次に、テンプレートソース変換部7011は、ステップS803にて、抽出したデータモデルを元にループし、ステップS804にてデータモデルに対する条件に対応する値を作成する。データモデル及びデータモデルに対する条件は、実施の形態1で説明した通りである。
自動で条件に対応する値が生成できない場合は、テンプレート開発者にデータモデルと条件を示して適用する値を作成してもらっても良い。
すべてのデータモデルに対応する値を設定し終えたら、ステップS805にて、値をテンプレート制御情報に適用してソースコードを生成する。テンプレート制御情報(部分テンプレート)ごとに、テンプレート制御情報とS804で生成した値からソースコードを生成する。
生成されたソースコードは、実施の形態1で示したテンプレート生成対象部分として、テンプレートソースのテンプレート制御情報の下行にソースコードを示すコメントとともに挿入する。
次に、テンプレートソース変換部7011は、ステップS806にて、テンプレート制御情報(部分テンプレート)をコメント化する。
続いて、ステップS807にて、テンプレートソース編集者は、アプリケーションカスタマイズ対象部分を入力する。入力されたアプリケーションカスタマイズ対象部分はステップS808にて別メソッドとして抽出される。
このように、本実施の形態では、テンプレートソース変換部7011は、サンプルテンプレートに、テンプレート制御情報から生成されるソースコードを挿入し、また、テンプレート制御情報をコメント化する。
このため、テンプレートソースは、コンパイルすることによりアプリケーションとして動作させることが可能であり、テンプレートソースを用いて、テンプレートとしての動作確認が可能である。
このため、テンプレートソースは、コンパイルすることによりアプリケーションとして動作させることが可能であり、テンプレートソースを用いて、テンプレートとしての動作確認が可能である。
図8の処理の後、テンプレート生成部105が、ソースコード及びテンプレート制御情報に付加されているコメント符号を削除して、テンプレートを生成する。具体的には、図6に示す処理を行う。
以上のように、テンプレートからテンプレートソースに変換することにより本システムを使わずに開発したテンプレートについても、本システムを利用してテンプレート開発を行えるようになり、以降テンプレートのカスタマイズを用意に実施できる。
以上、本実施の形態では、テンプレートソースの存在しない既存のテンプレートに対して、テンプレート制御情報をコメント化し、テンプレートの制御情報から生成されるテキストをテンプレート生成対象部分として保持するテンプレートソースを生成するテンプレート生成方式を説明した。
最後に、実施の形態1及び2に示したテンプレート生成装置100及び700のハードウェア構成例について説明する。
図14は、実施の形態1及び2に示すテンプレート生成装置100及び700のハードウェア資源の一例を示す図である。
なお、図14の構成は、あくまでもテンプレート生成装置100及び700のハードウェア構成の一例を示すものであり、テンプレート生成装置100及び700のハードウェア構成は図14に記載の構成に限らず、他の構成であってもよい。
図14は、実施の形態1及び2に示すテンプレート生成装置100及び700のハードウェア資源の一例を示す図である。
なお、図14の構成は、あくまでもテンプレート生成装置100及び700のハードウェア構成の一例を示すものであり、テンプレート生成装置100及び700のハードウェア構成は図14に記載の構成に限らず、他の構成であってもよい。
図14において、テンプレート生成装置100及び700は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続されていても構わない。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
テンプレート生成装置100及び700の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
テンプレート生成装置100及び700の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1及び2の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1及び2の説明において、「〜の判断」、「〜の生成」、「〜の抽出」、「〜の確認」、「〜の比較」、「〜の挿入」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の追加」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1及び2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1及び2の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1及び2の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1及び2の「〜部」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1及び2に示すテンプレート生成装置100及び700は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
100 テンプレート生成装置、101 サンプルテキスト入力部、102 サンプルテキスト格納部、103 テンプレートソース編集部、104 テンプレートソース格納部、105 テンプレート生成部、106 テンプレート、107 ユーザ入力部、700 テンプレート生成装置、701 テンプレートソース編集部、702 サンプルテンプレート入力部、1031 テンプレートソース変換部、1032 テンプレートソース生成部、7011 テンプレートソース変換部。
Claims (13)
- 複数の部分データに区分されるテキストデータをテンプレート生成の雛形となるサンプルテキストとして入力するサンプルテキスト入力部と、
前記サンプルテキストの複数の部分データのうちテンプレートの生成対象として指定されたテンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記テンプレート生成部分データに対するテンプレートを部分テンプレートとして前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入するテンプレート挿入部とを有することを特徴とする情報処理装置。 - 前記サンプルテキスト入力部は、
プログラムコードを前記サンプルテキストとして入力し、
前記テンプレート挿入部は、
サンプルテキストごとにカスタマイズされるカスタマイズ対象部分以外の部分データとともに前記テンプレート生成部分データがプログラムコードとして実行可能な状態で前記テンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記部分テンプレートをコメント化して前記サンプルテキストに挿入することを特徴とする請求項1に記載の情報処理装置。 - 前記テンプレート挿入部は、
前記テンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記部分テンプレートにコメント符号を付加して前記部分テンプレートをコメント化して前記サンプルテキストに挿入し、テンプレートの原型となるテンプレートソースを生成し、
前記情報処理装置は、更に、
前記テンプレートソースから、前記テンプレート生成部分データを削除するとともに、前記部分テンプレートに付加されているコメント符号を削除するテンプレート生成部を有することを特徴とする請求項2に記載の情報処理装置。 - 前記テンプレート挿入部は、
前記テンプレート生成部分データの直前及び直後のいずれかの位置に前記部分テンプレートを挿入することを特徴とする請求項1〜3のいずれかに記載の情報処理装置。 - 前記テンプレート挿入部は、
前記テンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記部分テンプレートを前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入し、テンプレートの原型となるテンプレートソースを生成し、
前記情報処理装置は、更に、
前記テンプレート挿入部による前記テンプレートソースの生成に用いられたサンプルテキスト以外の新たなサンプルテキストを用いて、前記テンプレート挿入部により生成されたテンプレートソースを解析し、前記テンプレートソースの改修の要否を判断するテンプレートソース解析部を有することを特徴とする請求項1〜4のいずれかに記載の情報処理装置。 - 前記テンプレートソース解析部は、
前記新たなサンプルテキストに、サンプルテキストごとにカスタマイズされるカスタマイズ対象部分が存在する場合に、前記テンプレート挿入部により生成されたテンプレートソースに当該カスタマイズ対象部分に対応させるための処置を行うことを特徴とする請求項5に記載の情報処理装置。 - 前記テンプレート挿入部は、
繰り返し制御文及び条件分岐文の少なくともいずれかが含まれる部分テンプレートを前記サンプルテキストに挿入し、テンプレートの原型となるテンプレートソースを生成し、当該部分テンプレートに含まれる繰り返し制御文の動作検証が可能なテンプレートソース及び条件分岐文の動作検証が可能なテンプレートソースの少なくともいずれかを、生成したテンプレートソースから生成することを特徴とする請求項1〜6のいずれかに記載の情報処理装置。 - 各々がテキストデータを生成することができる複数の部分テンプレートが含まれるテンプレートを新たなテンプレート生成の雛形となるサンプルテンプレートとして入力するサンプルテンプレート入力部と、
部分テンプレートごとに、部分テンプレートを用いてテキストデータを生成するテキストデータ生成部と、
前記テキストデータ生成部により生成されたテキストデータをサンプルテンプレートに挿入するとともに、テキストデータが生成されたデータ生成部分テンプレートをサンプルテンプレートの他の部分から区別する処理を行うテキストデータ挿入部とを有することを特徴とする情報処理装置。 - 前記テキストデータ生成部は、
プログラムコードを前記テキストデータとして生成し、
前記テキストデータ挿入部は、
前記テキストデータ生成部により生成されたテキストデータをサンプルテンプレートの他の部分とともにプログラムコードとして実行可能な状態でサンプルテンプレートに挿入するとともに、前記データ生成部分テンプレートをコメント化する処理を行うことを特徴とする請求項8に記載の情報処理装置。 - 前記テキストデータ挿入部は、
前記テキストデータ生成部により生成されたテキストデータをプログラムコードとして実行可能な状態でサンプルテンプレートに挿入するとともに、前記データ生成部分テンプレートにコメント符号を付加して前記データ生成部分テンプレートをコメント化し、新たなテンプレートの原型となるテンプレートソースを生成し、
前記情報処理装置は、更に、
前記テンプレートソースから、テキストデータを削除するとともに、前記データ生成部分テンプレートに付加されているコメント符号を削除するテンプレート生成部を有することを特徴とする請求項9に記載の情報処理装置。 - 前記テキストデータ挿入部は、
前記データ生成部分テンプレートの直前及び直後のいずれかの位置にテキストデータを挿入することを特徴とする請求項8〜10のいずれかに記載の情報処理装置。 - 複数の部分データに区分されるテキストデータをテンプレート生成の雛形となるサンプルテキストとして入力するサンプルテキスト入力処理と、
前記サンプルテキストの複数の部分データのうちテンプレートの生成対象として指定されたテンプレート生成部分データを前記サンプルテキスト内に存置させたままで、前記テンプレート生成部分データに対するテンプレートを部分テンプレートとして前記サンプルテキストの各部分データから区別して前記サンプルテキストに挿入するテンプレート挿入処理とをコンピュータに実行させることを特徴とするプログラム。 - 各々がテキストデータを生成することができる複数の部分テンプレートが含まれるテンプレートを新たなテンプレート生成の雛形となるサンプルテンプレートとして入力するサンプルテンプレート入力処理と、
部分テンプレートごとに、部分テンプレートを用いてテキストデータを生成するテキストデータ生成処理と、
前記テキストデータ生成処理により生成されたテキストデータをサンプルテンプレートに挿入するとともに、テキストデータが生成されたデータ生成部分テンプレートをサンプルテンプレートの他の部分から区別するテキストデータ挿入処理とをコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008182615A JP2010020680A (ja) | 2008-07-14 | 2008-07-14 | 情報処理装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008182615A JP2010020680A (ja) | 2008-07-14 | 2008-07-14 | 情報処理装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010020680A true JP2010020680A (ja) | 2010-01-28 |
Family
ID=41705482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008182615A Pending JP2010020680A (ja) | 2008-07-14 | 2008-07-14 | 情報処理装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010020680A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013214218A (ja) * | 2012-04-03 | 2013-10-17 | Mitsubishi Electric Corp | プログラム作成支援装置及びプログラム作成支援方法 |
JP2020119053A (ja) * | 2019-01-21 | 2020-08-06 | キヤノンマーケティングジャパン株式会社 | プログラム、情報処理装置及び処理方法 |
-
2008
- 2008-07-14 JP JP2008182615A patent/JP2010020680A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013214218A (ja) * | 2012-04-03 | 2013-10-17 | Mitsubishi Electric Corp | プログラム作成支援装置及びプログラム作成支援方法 |
CN103365649A (zh) * | 2012-04-03 | 2013-10-23 | 三菱电机株式会社 | 程序创建支持装置及程序创建支持方法 |
CN103365649B (zh) * | 2012-04-03 | 2016-06-22 | 三菱电机株式会社 | 程序创建支持装置及程序创建支持方法 |
JP2020119053A (ja) * | 2019-01-21 | 2020-08-06 | キヤノンマーケティングジャパン株式会社 | プログラム、情報処理装置及び処理方法 |
JP7280475B2 (ja) | 2019-01-21 | 2023-05-24 | キヤノンマーケティングジャパン株式会社 | 情報処理装置及びその制御方法、プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Karsai et al. | Design guidelines for domain specific languages | |
JP2006350686A (ja) | 命令セット・シミュレータ生成装置及びシミュレータ生成方法 | |
JP2010003008A (ja) | 検出プログラム、検出装置および検出方法 | |
US20090187892A1 (en) | Apparatus and program for test case generation | |
JP2007034584A (ja) | 高位合成装置、自動高位合成方法、高位合成プログラム及びゲートネットリスト自動検証方法 | |
CN113051011A (zh) | 一种结合rpa和ai的图像信息提取方法及装置 | |
CN104797993A (zh) | 系统构建辅助装置 | |
JP5164920B2 (ja) | テストデータ生成方法及び装置及びプログラム | |
JP5164919B2 (ja) | テストデータ生成方法及び装置及びプログラム | |
JP2008276735A (ja) | プログラムコード変換装置及びプログラムコード変換方法 | |
JP2010020680A (ja) | 情報処理装置及びプログラム | |
JP2006065675A (ja) | データ検索方法および装置 | |
JP5718166B2 (ja) | 設計検証方法及びプログラム | |
Preeyanon et al. | Reproducible bioinformatics research for biologists | |
Autili et al. | Towards a graphical tool for refining user to system requirements | |
JP2006338399A (ja) | プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体 | |
US10345378B2 (en) | Apparatus and method for performing a scalability check on a hardware description language representation of a circuit | |
JP4894602B2 (ja) | 修正対象ファイル検索装置と修正対象ファイル検索方法および修正対象ファイル検索プログラム | |
JP2006107025A (ja) | ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体 | |
JP2018049492A (ja) | 解析装置、解析プログラムおよび解析方法 | |
JP6818568B2 (ja) | 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム | |
Sontag | Recording Feature Mappings During Evolution of Cloned Variants | |
JP2006178013A (ja) | データベース作成装置及び方法 | |
JP2013228780A (ja) | 情報処理装置及び情報処理方法及びプログラム | |
JP4371000B2 (ja) | Idlコンパイル装置、idlコンパイル方法及びidlコンパイラ |