JP2005234959A - テンプレート作成装置、プログラム、および方法 - Google Patents

テンプレート作成装置、プログラム、および方法 Download PDF

Info

Publication number
JP2005234959A
JP2005234959A JP2004044493A JP2004044493A JP2005234959A JP 2005234959 A JP2005234959 A JP 2005234959A JP 2004044493 A JP2004044493 A JP 2004044493A JP 2004044493 A JP2004044493 A JP 2004044493A JP 2005234959 A JP2005234959 A JP 2005234959A
Authority
JP
Japan
Prior art keywords
template
text
data model
insertion section
section
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
Application number
JP2004044493A
Other languages
English (en)
Inventor
Akihiro Shibata
晃宏 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2004044493A priority Critical patent/JP2005234959A/ja
Priority to US11/056,248 priority patent/US20050188323A1/en
Publication of JP2005234959A publication Critical patent/JP2005234959A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)

Abstract

【課題】 テンプレートの仕様の定義およびレビューと、テンプレートのデバックおよびテストとが容易なテンプレートを作成する装置を提供する。
【解決手段】 テキスト入力手段1は、テンプレートを用いて生成可能としようとするテキストのサンプルとなるサンプルテキストを入力する。区画情報入力手段3は、サンプルテキストに対応して、テンプレートにおいて文字列の置換を可能とする挿入区画の範囲および構造を示す区画情報を入力する。データモデル入力手段5は、サンプルテキストの挿入区画の文字列の基となるデータモデルを入力する。生成規則入力手段7は、データモデルから、サンプルテキストの挿入区画の文字列を生成するための生成規則を入力する。テンプレート生成手段9は、サンプルテキストにおける挿入区画の範囲を置換可能とし、生成規則により生成した文字列を挿入区画に挿入してテンプレートを生成する。
【選択図】 図1

Description

本発明は、利用者の所望するテンプレートを作成するテンプレート作成装置に関する。
WebページのHTMLソースやプログラムのソースコードなどのテキストを生成するのにテンプレート(雛型)が用いられる。テンプレートは、テキストの汎用的なデータ構造やアルゴリズムを利用しやすい形でまとめたものであり、これを雛型として用いるとテキストの生成が容易となる。
また、テンプレートを用いて利用者の所望するテキストを作成するテンプレートエンジンと呼ばれる仕組みがある。WebページのHTMLソースを生成するときにテンプレートエンジンを用いれば、実際のコンテンツの表示イメージを意識しながらHTMLソースを生成することができる。
一般的なテンプレートエンジンは、テンプレートを記述するための言語を持っている。その言語には、データモデルから生成する文字列を定型テキスト中の所定の位置へ挿入することを示す表記法や、モデル内の繰返し構造や再帰構造をテキストへ展開するための制御構文が備えられている。そのため、単純な構造の定型テキストを生成する場合だけなく、プログラムソースコードのような複雑な構造をもつファイルの生成にも適用可能とされている。テンプレートエンジンの例としては、VelocityやJSP(Java Server Pages)がある。
非特許文献1には、従来のテンプレートエンジンの一例が示されている。非特許文献1に示されているテンプレートエンジンはVelocityである。Velocityは、テンプレートを記述する言語としてVTL(Velocity Template Language)を備えている。VTLには、VTLのコンテキストからデータモデルを参照し、それを編集または加工した結果を固定のテキスト中へ挿入する操作を記述した制御構文や、データモデル内の繰返し構造を文字列へと展開する操作を記述した制御構文など、様々な制御構文が備えられている。そのため、VTLは、WebページのHTMLソースの自動生成や、より複雑なプログラム・ソースコードの自動生成に用いることができる。
また、非特許文献2には、Velocityと同様な機能を持った従来の他のテンプレートエンジンの例が示されている。非特許文献2に示されているテンプレートエンジンはJSPである。JSPによってもHTMLソースの自動生成等を行うことができる。
また、特許文献1には、従来のテンプレート自動生成システムの一例が示されている。特許文献1の図1に示されているように、この従来のテンプレート自動生成システムは、サンプルページ記憶部およびテンプレート抽出手段を備えている。
サンプルページ記憶部には、利用者の好みに合った複数のサンプルページが格納される。
テンプレート抽出手段は、サンプルページ記憶部に格納されているサンプルページの内の、複数のサンプルページにおいてほぼ同一位置に配置され、かつ内容が同一の構成要素を内容一致構成要素として抽出し、また、これら複数のサンプルページにおいてほぼ同一位置に配置され、内容が異なる構成要素を内容不一致構成要素として抽出する。そして、テンプレート抽出手段は、抽出した内容一致構成要素を、その内容一致構成要素のサンプルページ上の配置位置に応じた位置に配置し、利用者の所望により入力可能な内容不一致構成要素の記入欄を、内容不一致構成要素のサンプルページ上における配置位置に応じた位置に配置したテンプレートを生成する。
これにより、従来のテンプレート自動生成システムは、複数のサンプルページの共通部分を内容一致構成要素とし、個別部分を内容不一致構成要素として利用者が所望の構成要素を記入できるようなテンプレートを生成する。このテンプレートを用いれば、利用者は、共通部分は自動的に生成され、個別部分は自分の所望の内容にしたテキストを容易に作成することができる。
"The apache vacarta project"、[online]、Apache Software Foundation、[平成16年2月13日検索]、インターネット<URL : http://jakarta.apache.org/velocity/user-guide.html>(日本語訳:http://www.jajakarta.org/velocity/velocity-1.2/docs-ja/user-guide.html) "Java Technology Java 2 Platform, Enterprise Edition (J2EE)"、[online]、Sun Microsystems, Inc、[平成16年2月13日検索]、インターネット、<URL : http://java.sun.com/j2ee/index.jsp > 特開2001−312490号公報
従来、テンプレートエンジンの主な用途は、データベースから定型的なWebページを生成するような、生成規則が比較的単純なテキストの生成であった。このような用途ではテンプレートの構造も比較的単純であるため、テンプレートの生成にさしたる困難はなかった。
しかし、テンプレートエンジンによりプログラムのソースコードを生成する場合、テキストの生成規則が複雑である。テキストの生成規則が複雑となれば、そのテキスト生成に用いるテンプレートの構造も複雑となる。
そのため、非特許文献1または非特許文献2に記載されたテンプレートエンジンによれば、複雑なプログラム・ソースコードを自動生成は可能であるが、作成しようとするテンプレートの仕様を定義し、またその仕様をレビューするのが困難であるという問題があった。また、テンプレートの作成においてテンプレートのデバッグの生産性が低いという問題があった。さらに、作成されたテンプレートのテストを行なうことが困難であるという問題があった。
また、特許文献1に記載されたテンプレート自動生成システムによれば、複雑なプログラム・ソースコードの生成に用いるテンプレートを作成することができるが、類似性を有する複雑なサンプルを複数集めるのは容易でなく、また作成されるテンプレートの仕様の特定も困難であった。
本発明の目的は、テンプレートの仕様の定義およびレビューを容易にし、またテンプレートのデバックおよびテストを容易にするテンプレート作成装置を提供することである。
上記目的を達成するために、本発明のテンプレート作成装置は、文字列を含むテキストを生成するときに雛型として用いられるテンプレートを作成するテンプレート作成装置であって、
前記テンプレートを用いて生成可能としようとするテキストのサンプルとなるサンプルテキストを入力するテキスト入力手段と、
前記テキスト入力手段により入力された前記サンプルテキストに対応して、前記テンプレートにおいて文字列の置換を可能とする挿入区画の範囲および構造を示す区画情報を入力する区画情報入力手段と、
前記サンプルテキストの前記挿入区画の文字列の基となるデータモデルを入力するデータモデル入力手段と、
前記データモデルから、前記サンプルテキストの前記挿入区画の文字列を生成するための生成規則を入力する生成規則入力手段と、
前記サンプルテキストにおける前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した前記文字列を、置換可能な前記挿入区画に挿入して前記テンプレートを生成するテンプレート生成手段とを有している。
したがって、本発明によれば、テキスト入力手段がサンプルテキストを入力し、区画情報入力手段がそのサンプルテキストの区画情報を入力し、データモデル入力手段が各区画のデータモデルを入力し、生成規則入力手段がデータモデルから各区画の内容の文字列を生成する生成規則を入力し、テンプレート生成手段が、生成規則に従ってテンプレートにおいて置換可能な各区画の内容の文字列を生成しつつ、要素区画間およびテキスト間の重複を取り除くことができる。
また、本発明によれば、サンプルテキストに対して区画情報、データモデルおよび生成規則を照らし合わせることでテンプレートの仕様のレビューを行なうことができる。
また、本発明によれば、テンプレートを利用者が直接に編集することがなく、与えられた仕様に従ってテンプレート作成装置が機械的にテンプレートを作成するので、テンプレートに文法のエラーは発生しえず、また、テンプレートを用いてテキスト生成を行なうことなく、サンプルテキスト、区画情報、データモデル、または生成規則を編集するだけでデバッグを行なうことができる。
また、本発明によれば、テンプレートの仕様が事例で与えられるため、要求された仕様と現実に作成されたテンプレートとの乖離が原理的に生じない。
また、本発明のテンプレート作成装置は、前記区画情報入力手段が、前記挿入区画内にさらに挿入区画を階層的に設定し、
前記生成規則入力手段が、前記挿入区画内に階層的に設定された挿入区画の生成規則を入力し、
前記テンプレート生成手段が、前記サンプルテキストにおける各階層の前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した文字列を置換可能な前記挿入区画に挿入して、階層的に挿入区画が設定されたテンプレートを生成することとしてもよい。
また、本発明のテンプレート作成装置は、前記区画情報入力手段が、前記テキストの構造に従って、前記挿入区画内を複数の要素区画を有する繰り返し構造に設定し、
前記生成規則入力手段が、前記挿入区画の生成規則と共に、該挿入区画内の前記要素区画の生成規則を入力し、
前記テンプレート生成手段が、前記サンプルテキストにおける前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した前記挿入区画内の前記要素区画の文字列が共通であれば、前記要素区画の文字列を代表する文字列を前記挿入区画に挿入し、前記挿入区画内の前記要素区画の文字列が共通でなければ、前記要素区画の文字列をif-then-else構文で結合した文字列を前記挿入区画に挿入して、前記テンプレートを生成することとしてもよい。
また、本発明のテンプレート作成装置は、前記テキスト入力手段が、前記テンプレートを用いて生成可能としようとするテキストのサンプルとなる複数の前記サンプルテキストを入力し、
前記区画情報入力手段が、前記サンプルテキストの各々に対応して、前記テンプレートにおいて文字列の置換を可能とする前記挿入区画の範囲および構造を示す前記区画情報を入力し、
前記生成規則入力手段が、前記データモデルから、前記サンプルテキストの前記挿入区画の文字列を生成するための前記生成規則を前記サンプルテキストの各々について入力し、
前記テンプレート生成手段が、前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した、同じ前記挿入区画に関する前記サンプル毎の文字列が共通であれば、前記サンプル毎の文字列を代表する文字列を前記挿入区画に挿入し、同じ前記挿入区画に関する前記サンプル毎の文字列が共通でなければ、前記サンプル毎の文字列をif-then-else構文で結合した文字列を前記挿入区画に挿入して、前記テンプレートを生成することとしてもよい。
また、本発明のテンプレート作成装置は、前記テンプレート生成手段は、作成したテンプレート内に共通した前記挿入区画があれば、それら共通した前記挿入区画を代表する文字列を該挿入区画に挿入することにより前記テンプレートを簡単化することとしてもよい。
また、本発明のテンプレート作成装置は、前記サンプルテキスト間、前記挿入区画間、または前記要素区画間で前記データモデルが共通のものがあればそれを検出し、共通する前記データモデルの文字列を代表する文字列のデータモデルにまとめる汎化手段をさらに有することとしてもよい。
したがって、本発明によれば、汎化手段が重複するデータモデルをマージすることによりデータモデルおよび生成規則を汎化することができる。
また、本発明のテンプレート作成装置は、前記汎化手段は、前記テンプレート生成手段により生成された前記テンプレートにif-then-else構文の部分があり、前記if-then-else構文で結合された文字列に互いに共通する複数の文字列があれば、前記複数の文字列を、前記複数の文字列を代表する文字列にまとめることとしてもよい。
したがって、本発明によれば、テンプレート生成手段が生成したテンプレート内のif−then−else構文内の重複を汎化手段により除去することができる。
また、本発明のテンプレート作成装置は、前記サンプルテキスト、前記データモデル、および前記生成規則が相互に整合性が取れているか否か検証する整合性検証手段と、
前記データモデルの変更が要求されると、変更内容を定めて前記整合性検証手段に前記変更内容で前記サンプルテキスト、前記データモデル、および前記生成規則が相互に整合性が取れているか否かの検証を指示し、前記整合性が取れていれば前記変更内容で前記データモデルを変更し、前記整合性が取れていなければ前記データモデルの変更をキャンセルするデータモデル修正手段と、
前記生成規則の変更が要求されると、変更内容を定めて前記整合性検証手段に前記変更内容で前記サンプルテキスト、前記データモデル、および前記生成規則が相互に整合性が取れているか否かの検証を指示し、前記整合性が取れていれば前記変更内容で前記生成規則を変更し、前記整合性が取れていなければ前記生成規則の変更をキャンセルする生成規則修正手段とをさらに有することとしてもよい。
したがって、本発明によれば、データモデル修正手段または生成規則修正手段が内容の変更を入力すると、整合性検証手段がその変更内容においてデータモデル、区画情報およびテキストの整合性が取れているか否か判定し、整合性が取れているときだけ、データモデル修正手段または生成規則修正手段が変更を行なうので、事例の内容を変更しても各情報が相互に矛盾することが無い。
また、本発明のテンプレート作成装置は、前記テキスト入力手段が入力した前記サンプルテキストを利用者の任意に変更するテキスト修正手段と、
前記テキスト修正手段が前記サンプルテキストを変更したとき、その変更内容に応じて前記区画情報を変更し、また前記区画情報入力手段が入力した前記区画情報を前記利用者の任意に変更する区画情報修正手段とをさらに有し、
前記データモデル修正手段は、前記テキスト修正手段が前記テキストを変更したとき、または前記区画情報修正手段が前記区画情報を変更したとき、その変更内容に応じて前記データモデルを変更し、また前記利用者の任意に前記データモデルを変更し、
前記生成規則修正手段は、前記区画情報修正手段が前記区画情報を変更したとき、その変更内容に応じて前記生成規則を変更し、また前記利用者の任意に前記生成規則を変更することとしてもよい。
本発明によれば、テキスト入力手段がサンプルテキストを入力し、区画情報入力手段がそのサンプルテキストの区画情報を入力し、データモデル入力手段が各区画のデータモデルを入力し、生成規則入力手段がデータモデルから各区画の内容の文字列を生成する生成規則を入力し、テンプレート生成手段が、生成規則に従ってテンプレートにおいて置換可能な各区画の内容の文字列を生成しつつ、要素区画間およびテキスト間の重複を取り除くので、内容の把握が容易なサンプルテキストとそれに関する区画情報、データモデルおよび生成規則により、複雑なテンプレートの仕様を容易に定義することができる。
また、サンプルテキストに対して区画情報、データモデルおよび生成規則を照らし合わせることでテンプレートの仕様のレビューを行なうことができるので、複雑なテンプレートを直接チェックする必要がなく、テンプレートの仕様のレビューが容易である。
また、テンプレートを利用者が直接に編集することがなく、与えられた仕様に従ってテンプレート作成装置が機械的にテンプレートを作成するので、テンプレートに文法のエラーは発生しえず、また、テンプレートを用いてテキスト生成を行なうことなく、サンプルテキスト、区画情報、データモデル、または生成規則を編集するだけでデバッグを行なうことができ、コンパイルエラーに対する対処が容易であり、デバッグを効率的に行うことができる。
また、テンプレートの仕様が事例で与えられるため、要求された仕様と現実に作成されたテンプレートとの乖離が原理的に生じないので、仕様自体が妥当であるかどうかのみを検証すれば、仕様とテンプレートとの一致を検証する必要が無く、テンプレートのテストの効率が向上する。
また、汎化手段が重複するデータモデルをマージすることによりデータモデルおよび生成規則を汎化するので、それらの情報から作成されるテンプレートの冗長性が軽減される。
また、テンプレート生成手段が生成したテンプレート内のif−then−else構文内の重複を汎化手段が除去するので、テンプレートの冗長性が軽減される。
また、データモデル修正手段または生成規則修正手段が内容の変更を入力すると、整合性検証手段がその変更内容においてデータモデル、区画情報およびテキストの整合性が取れているか否か判定し、整合性が取れているときだけ、データモデル修正手段または生成規則修正手段が変更を行なうので、事例の内容を変更しても各情報が相互に矛盾することが無く、適切に仕様の修正を行なうことができる。
本発明の一実施形態について図面を参照して詳細に説明する。本発明のテンプレート作成装置はコンピュータで構成されており、テンプレートから生成されるべきテキストを基にして、そのテキストの生成に適したテンプレートを生成するものである。そのため、テンプレートの生成には、サンプルとして少なくとも1つのテキストが必要とされる。
図1は、本発明の第1の実施形態によるテンプレート作成装置の構成を示すブロック図である。図1を参照すると、第1の実施形態のテンプレート作成装置は、テキスト入力部1、テキスト格納部2、区画情報入力部3、区画情報格納部4、データモデル入力部5、データモデル格納部6、生成規則入力部7、生成規則格納部8、およびテンプレート生成部9を有している。
テキスト入力部1は、テンプレートから生成されるべきテキストのサンプルとして用いられるテキストを少なくとも1つ入力し、テキスト格納部2に送る。テキストは文字列で表現されている。
テキスト格納部2は、テキスト入力部1により入力された少なくとも1つのテキストを格納する。テキスト格納部2は、作成の目的である1つのテンプレートに関して、サンプルのテキストを少なくとも1つ格納するものとし、複数個格納することもできる。
区画情報入力部3は、テキスト格納部2に格納されたテキストの各々について、テンプレートエンジンにより文字列を置換可能とする範囲、およびその範囲の中の繰返し構造を明示する情報として区画情報を入力し、区画情報格納部4に送る。
区画情報格納部4は、区画情報入力部3により入力された区画情報を、テキスト格納部2に格納されているテキストとの対応関係とともに格納する。
データモデル入力部5は、区画情報格納部4に格納された区画情報の各々に対応したデータモデルを入力し、データモデル格納部6に送る。データモデルとは、入れ子構造や繰り返し構造のような区画の構造に従って、各区画の内容に応じた情報である。データモデルにある生成規則を適用すると、区画の内容の文字列を得ることができる。
データモデル格納部6は、データモデル入力部5により入力されたデータモデルを、区画情報格納部4に格納されている区画情報との対応関係とともに格納する。
生成規則入力部7は、各区画内の文字列の生成規則を入力し、生成規則格納部8に送る。生成規則とは、各区画内の文字列を生成する方法を規定する規則である。そして、生成規則は、テキスト格納部2に格納されているテキストと、そのテキストに対応して区画情報格納部4に格納されている区画情報と、その区画情報に対応してデータモデル格納部6に格納されているデータモデルとに基づいて定められ、どのデータモデルにどのような加工処理を行うと、どの区画内の文字列が生成されるかを規定した情報である。
生成規則格納部8は、生成規則入力部7によって入力された生成規則を、処理結果が挿入される区画の区画情報に対応付けて格納する。
このようにして入力されたテキスト、区画情報、データモデル、および生成規則のセットが1つの事例となる。テンプレートの生成には、少なくとも1つの事例が入力される必要があり、複数の事例が入力されてもよい。これら事例として入力されたテキスト、区画情報、データモデル、および生成規則が、どのようなテンプレートを生成すべきかの情報、すなわちテンプレートの仕様を表している。
テンプレート生成部9は、事前に入力された事例、すなわちテキスト格納部2に格納されたテキスト、そのテキストに関連付けられて区画情報格納部4に格納された区画情報、その区画情報に関連付けられてデータモデル格納部6に格納されたデータモデル、および同じく区画情報に関連付けられて生成規則格納部8に格納された生成規則に基いてテンプレートを生成する。その際、テンプレート生成部9は、テキストにおける挿入区画の範囲を置換可能とし、データモデルに生成規則を適用して生成した文字列を置換可能な挿入区画に挿入することにより、テンプレートを生成する。また、挿入区画に要素区画があれば、テンプレート生成部9はその要素区画間の重複を取り除く。また、テキスト間で挿入区画に重複があれば、テンプレート生成部9はその挿入区画の重複を取り除く。
図2は、第1の実施形態のテンプレート作成装置の動作を示すフローチャートである。(a)はメインルーチンであり、(b)はサブルーチンである。
図2(a)のメインルーチンを参照すると、テンプレート作成装置は、まず、入力すべき事例(サンプル)が存在するか否か判定する(ステップA1)。ここでは、事例として用いるべきテキストがあるか否か判定することとなる。また、事例として用いるテキストは、作成すべきテンプレートを用いて生成されるテキストの例である。良いテンプレートを生成するために適切なテキストを予め選択しておくことが望ましい。
入力すべき事例が存在すれば、テンプレート作成装置は図2(b)のサブルーチンを呼び出し、サブルーチンの処理が終了するとステップA1の処理に戻る(ステップA2)。ステップA1〜A2を繰り返すことにより、テンプレート作成装置は、入力すべき1つ以上の事例を入力する。
入力すべき事例を全て入力すると、テンプレート生成装置は、ステップA1の判定において入力すべき事例がなくなるので、次にテンプレートを作成する(ステップA25)。
上述したステップA2にて呼び出される図2(b)のサブルーチンを参照すると、まず、テキスト入力部1は、利用者の所望に従って事例のテキストを入力し、テキスト格納部2に格納する(ステップA21)。図9は、事例として入力されるテキストの一例を示す図である。図9では、テキストの一例としてプログラムのソースコードを用いているが、本発明はそれに限定されるものではない。本発明のテキストは、文字列で表現されたテキスト全般を広く含み、他の例としてWebページのHTMLソースであってもよい。
次に、区画情報入力部3は、テキスト格納部2に格納されているテキストを利用者に提示し、利用者の操作に従って、そのテキスト内で区画とするべき範囲を区画情報として指定し、区画情報格納部4に格納する(ステップA22)。図10は、事例として入力される区画情報の区切り方の一例を示す図である。ここでいう区画情報は、図10に例示されているようにテキスト内の部分文字列を区切ることによりできた区画を明示する情報である。
区画情報は少なくとも1つの挿入区画を含んでいる。挿入区画とは、テンプレート中において、データモデルから生成された文字列が挿入されるべき区画である。図10の例では、Block[0]、Block[1]、Block[2]が挿入区画である。
挿入区画には、複数の要素区画からなる繰り返し構造を持ったものと、繰り返し構造を持たないものとがある。要素区画とは、繰り返し構造を持った挿入区画内で繰り返される要素の区画である。図10の例では、挿入区画Block[1]は要素区画Block[1][0]〜Block[1][2]からなる繰り返し構造を持ち、挿入区画Block[2]は要素区画Block[2][0]〜Block[2][2]からなる繰り返し構造を持っている。これに対して、挿入区画Block[0]は繰り返し構造を持っていない。
また、繰り返し構造には、要素区画を区切る区切り区画を持つものと、持たないものとがある。区切り区画とは、繰り返し構造を持った挿入区画から要素区画を除外すると残る区画であり、要素区画間を区切る区画である。図10では、挿入区画Block[2]の繰り返し構造は区切り区画(文字列“,”)を持っており、挿入区画Block[1]の繰り返し構造は区切り区画を持っていない。
そして、区画情報には、対応するテキストの表示と、挿入区画、要素区画、および区切り区画の各々の開始位置および終了位置とを示す情報が含まれている。
作成しようとする1つのテンプレートに対して複数の事例のテキストが入力された場合、各テキストに対して区画情報が入力される。その場合、全ての事例のテキストについて、区画以外の部分文字列が互いに一致し、かつ区画の配置および名称が互いに重なるように区画を定義する。
なお、図10において、挿入区画に付与されたBlock[0]、Block[1]や、要素区画に付与されたBlock[0][0]、Block[0][1]、Block[0][2]は区画名の例である。本実施形態では、この区画名の他にもテキスト、区画情報、データモデル、生成規則およびテンプレートの各々に名称を付与する。
図11は、第1の実施形態において用いる事例集合の構成と、各情報に付与する名称の例と、その表記法を記載した図である。図11の上段には、複数の事例を含む事例集合の構成と、その事例集合に含まれる各情報名称の例が示されている。下段には、その名称の基となっている表記法の一覧が示されている。
図11の例では、事例集合がCaseと称している。その事例集合に含まれる複数の事例をCase[k]としている。kは事例番号であり、“0”から始まるものとする。k+1番目の事例がCase[k]という名称となる。
区画情報はBlockと称されている。その中で挿入区画はBlock[j]とされている。jは挿入区画番号であり、これも“0”から始まるものとする。事例Case[k]の中のj+1番目の挿入区画はCase[k].Block[j]となる。
挿入区画Block[j]内の要素区画はBlock[j][i]とされている。iは挿入区画内の要素区画番号であり、これも“0”から始まるものとする。
区切り文字列はBreakerと称されている。そして、j番の区画とj+1番の区画の間の区切り区画はBreak[j]である。
データモデルはPartと称されており、生成規則はRuleと称されている。
図11において事例の中にテンプレートが含まれているが、これは本テンプレート作成装置が最終的な作成の目的とするテンプレートではなく、作成目的のテンプレートを作成する過程において各事例の中に生成されるテンプレートである。
図12は、第1の実施形態における各情報の内容例を示す図である。図12の区画情報を参照すると、挿入区画、要素区画、および区切り区画の各々の開始位置および終了位置を示す情報が含まれている。例えば、挿入区画Block[0]の開始位置はテキスト内の第1行の第14列であり、終了位置は同じく第1行の第16列である。
次に、データモデル入力部5は、区画情報格納部4に格納されている区画情報の各々の区画に対するデータモデルを利用者の所望に従って入力し、データモデル格納部6に格納する(ステップA23)。例えば、データモデル入力部5は、その区画情報が囲む範囲のテキストを利用者に提示し、その中の挿入区画および/または要素区画に対応するデータモデルを利用者の操作に従って入力すればよい。
データモデルは、テキストにおける区画情報が囲んでいる部分文字列に対応している。このデータモデルに対して生成規則に従った加工処理を行うと、テキストの各区画の部分文字列が生成される関係にある。
図11において、データモデルはPart[j]とされている。jは対応する区画の番号である。データモデルPart[j]が持っている部分的なテキストは、Part[j].Textとされている。データモデルPart[j]が持っている区画はPart[j].Block[i]とされている。ここでiは区画の番号であり、“0”から始まる。
図12では、区画情報に示された挿入区画Block[0]〜Block[2]に対応してデータモデルPart[0]〜Part[2]が示されている。また、各データモデルPart[0]〜Part[2]内には各要素区画の文字列がそのまま示されている。
次に、生成規則入力部7は、区画情報格納部4に格納されている区画情報とデータモデル格納部6に格納されているデータモデルとの関係を示す関数関係式を生成規則として利用者の操作に従って入力し、生成規則格納部8に格納する(ステップA24)。
図11において、各挿入区画Block[j]の生成規則は、生成規則Block[j].Ruleとされている。jは対応する区画の番号である。
図12の例では、生成規則Block[0].Ruleは、データモデルPart[0]に関数firstUpper(Part[0])を適用した結果を挿入区画Block[0]に挿入することを表現している。また、生成規則Block[1].Ruleは、データモデルPart[1][0]を要素区画Block[1][0]へ、データモデルPart[1][1]をそのまま要素区画Block[1][1]へ、データモデルPart[1][2]をそのまま要素区画Block[1][2]へ挿入することを表現している。
以上のステップA21〜A24が図2(b)のサブルーチンの処理であり、これを終了すると、テンプレート作成装置は図2(a)に示されたメインルーチンのステップA1の判定に戻る。
図3は、図2(b)に示したステップA22における詳細な動作を示すフローチャートである。図3を参照すると、区画情報入力部3は、まず、ステップA21で入力された、テンプレート作成の事例となるテキストを利用者に提示する(ステップA2201)。
次に、区画情報入力部3は、提示したテキストに挿入区画を定義すべき文字列があるか否かを利用者に確認することで判定する(ステップA2202)。例えば、テンプレートを用いて生成するテキストのサンプルを複数入力しておき、それら複数のテキストに共通の部分を不変部分として挿入区画に含めず、他の部分を可変部分として挿入区画とすればよい。なお、ここでは一例として利用者に確認することで挿入区画とする部分の有無を判断することとしたが、本発明はそれに限定されず、例えば、上述の判断に従ってテンプレート作成装置が自動的に判断することとしてもよい。
挿入区画として定義すべき文字列が未だあれば、区画情報入力部3は、利用者の所望に従って挿入区画として定義すべき文字列の範囲を入力する(ステップA2203)。例えば図12の挿入区画Block[0]であれば、文字列“XXX”を囲む範囲(第1行第14列〜第16列)の情報が入力される。
次に、区画情報入力部3は、ステップA2203で入力された範囲の区画名を利用者の所望に従って入力する(ステップA2204)。例えば、図12における最初の挿入区画であれば、区画名として“block[0]”が入力される。
次に、区画情報入力部3は、ステップA2203で入力された挿入区画内に繰り返し構造があるか否かを利用者に確認する(ステップA2205)。
挿入区画に繰り返し構造が無ければ、区画情報入力部3はステップA2202の処理に戻る。例えば、図12における挿入区画Block[0]には繰り返し構造がないので、区画情報入力部3はステップA2202の処理に戻る。
挿入区画に繰り返し構造があれば、区画情報入力部3は、繰り返し構造に区切り区画となる文字列があるか否か利用者に確認することで判定する(ステップA2206)。区切り区画となる文字列があれば、区画情報入力部3は、区切りの文字列と区切り区画の範囲を利用者の所望に従って入力する(ステップA2207)。例えば、図12における区画情報の挿入区画Block[2]では、区切りの文字列として“,”が入力される。また、1番目の要素区画Block[2][0]と2番目の要素区画Block[2][1]を区切る区切り区画Break[2][1]の範囲は第9行第18列〜第19列と入力され、2番目の要素区画block[2][1]と3番目の要素区画Block[2][2]を区切る区切り区画Break[2][2]の範囲は第9行第31列〜第32列と入力される。
ステップA2207の処理が終了したら、またはステップA2206の判定で区切り区画となる文字列ばなければ、区画情報入力部3は、挿入区画内の繰返し構造にある要素区画の範囲を利用者の所望に従って入力し(ステップA2208)、ステップA2202の処理に戻る(ステップA2202)。テキストの中に挿入区画を定義すべき文字列があれば、ステップA2202〜A2208の処理が繰り返される。なお、挿入区画は互いに並列の関係にある必要は無く、挿入区画の中に、さらに小さな挿入区画を定義することも可能である。
例えば、図12における挿入区画Block[2]であれば、繰返し構造内に3つの要素区画Block[2][0]〜Block[2][2]の各々の範囲が第9行第7列〜第17列、第9行第20列〜第30列、第9行第33列〜第43列と入力される。
ステップA2202の判定において、挿入区画として定義すべき文字列がなければ、区画情報入力部3は一連の処理を終了する。例えば、図12において挿入区画Block[0]〜Block[2]までの全ての区画情報の入力が終われば、区画を定義する文字列が無いこととなる。
図4は、図2(b)に示したステップA23における詳細な動作を示すフローチャートである。図4を参照すると、データモデル入力部5は、ステップA2301とステップA2302の間にある処理を反復し、区画情報の各挿入区画についてデータモデルを入力する。例えば、図12の区画情報において、挿入区画Block[0]、Block[1]、Block[2]の各々についてステップA2301〜A2302の間の処理を行う。
その際、データモデル入力部5は、まず、区画情報の中から1つの挿入区画を選択し(ステップA2301)、その挿入区画に要素区画があるか否か判定する(ステップA2303)。
要素区画が無ければ、データモデル入力部5は、挿入区画内にさらに小さな挿入区画を定義するか否か利用者に確認することで判定する(ステップA2304)。小さな挿入区画を定義すべき文字列があれば、データモデル入力部5は、小さな挿入区画を定義しようとする文字列を引数として図2(b)のサブルーチンを実行する(ステップA2306)。そして、データモデル入力部5は、ステップA2306の処理の引数と実行結果として得られた事例をデータモデルとして登録する(ステップA2307)。この事例には、テキストに相当する引数の文字列と、サブルーチン実行結果の戻り値である区画情報、データモデル、生成規則およびテンプレートとの組合せが含まれ、データモデルの中にさらに事例が存在するという階層構造が構成される。これで1つの挿入区画のデータモデルの入力が終了し、次の挿入区画のステップA2301からの処理に移行する。
ステップA2304の判定で、小さな挿入区画を定義すべき文字列がなければ、データモデル入力部5は、利用者の操作に従ってデータモデルを入力する(ステップA2305)。その際、データモデル入力部5は、挿入区画の構造に従ってデータモデルを作成し、挿入区画の文字列をデータモデルの内容のデフォルト値として利用者に提示し、利用者の所望に従ってデータモデルの内容の文字列をデータモデル格納部6に格納する。また他の例として、データモデル入力部5は、利用者の介在無しでデフォルト値をデータモデルの内容の文字列として自動入力してもよい。これで1つの挿入区画のデータモデルの入力が終了し、次の挿入区画のステップA2301からの処理に移行する。
また、ステップA2303の判定で、挿入区画に要素区画があれば、ステップA2308とステップA2309の間にある処理を反復し、各要素区画についてデータモデルを入力する。例えば、図12に示した挿入区画Block[2]は繰り返し構造を持つので、要素区画Block[2][0]〜Block[2][2]の3回の反復が行われる。
その際、データモデル入力部5は、まず、要素区画内にさらに小さな挿入区画を定義するか否か利用者に確認することにより判定する(ステップA2310)。小さな挿入区画を定義すべき文字列があれば、データモデル入力部5は、小さな挿入区画を定義しようとする文字列を引数として図2(b)のサブルーチンを実行する(ステップA2312)。そして、データモデル入力部5は、ステップA2312の処理の引数と実行結果として得られた事例をデータモデルとして登録する(ステップA2313)。この事例には、テキストに相当する引数の文字列と、サブルーチン実行結果の戻り値である区画情報、データモデル、生成規則およびテンプレートとの組合せが含まれるので、データモデルの中にさらに事例が存在するという階層構造が構成される。これで1つの要素区画のデータモデルの入力が終了し、次の要素区画のステップA2308からの処理に移行する。
ステップA2310の判定で、小さな挿入区画を定義すべき文字列がなければ、データモデル入力部5は、利用者の所望に従ってデータモデルを入力する(ステップA2311)。その際、データモデル入力部5は、要素区画の構造に従ってデータモデルの構造を作成し、要素区画の文字列をデータモデルの内容のデフォルト値として利用者に提示し、利用者の所望に従ってデータモデルの内容の文字列をデータモデル格納部6に格納する。また他の例として、データモデル入力部5は、利用者の介在無しでデフォルト値をデータモデルの内容の文字列として自動入力してもよい。
図13は、図9に示したテキストに対して図2(b)の処理を実行して得られる事例の情報セットを示す図である。図2(b)の処理は再帰構造を有するので、テキストに対して図2の一連の処理を行うと、テキスト全体に関する事例に加えて、そのテキスト内に階層構造で存在する区画に関する事例が得られる。図13は、元のTextに対して区画のデータモデルPart[1]およびPart[2]の事例が存在するという、2段階の再帰処理が行われた例であるが、一般的には何段階となってもよい。
図5は、図2(b)に示したステップA24における詳細な動作を示すフローチャートである。図5を参照すると、生成規則入力部7は、ステップA2401とステップA2406の間にある処理を各挿入区画について反復し、区画情報に含まれている各挿入区画の生成規則を入力する。
その際、生成規則入力部7は、まず、区画情報にある1つの挿入区画を選択する(ステップA2401)。そして、生成規則入力部7は、選択した挿入区画のデータモデルが加工処理なしでそのままその挿入区画に挿入されるような生成規則をデフォルトとして利用者に提示した後、その挿入区画の生成規則を利用者の所望に従って入力する(ステップA2402)。また、他の例として、生成規則入力部7は、上述したデフォルトの生成規則を自動入力することとしてもよい。
次に、生成規則入力部7は、ステップA2403とステップA2405の間にある処理を各要素区画について反復し、各要素区画の生成規則を入力する。
その際、生成規則入力部7は、まず、挿入区画内の1つの要素区画を選択する(ステップA2403)。そして、生成規則入力部7は、選択した要素区画のデータモデルが加工処理なしでそのままその要素区画に挿入されるような生成規則をデフォルトとして利用者に提示した後、その要素区画の生成規則を利用者の操作に従って入力する(ステップA2404)。また、他の例として、生成規則入力部7は、上述したデフォルトの生成規則を自動入力することとしてもよい。
生成規則入力部7は、要素区画および挿入区間の数だけ処理を反復し、未選択の挿入区間がなくなると一連の処理を終了する。
図2(b)のサブルーチンの一連の処理のより図13の最右列に示したような生成規則が得られる。
図6は、図2(b)に示したステップA25における動作のメインルーチンを示すフローチャートである。図7、8は、図2(b)に示したステップA25における動作のサブルーチンを示すフローチャートである。サブルーチンは便宜上図7、8に分割して示されているが、これらは一連の処理である。
図6のメインルーチンを参照すると、テンプレート生成部9は、テンプレートの作成に用いられるテキストと、そのテキストに関する区画情報および生成規則とを引数として、図7のサブルーチンを呼び出す(ステップA250)。1つのテンプレートの生成に用いるテキストは1つであってもよく、また複数であってもよい。複数のテキストが用いられる場合には、それらに対応する複数の事例が引数となる。サブルーチンの引数となるテキスト、区画情報、および生成規則の各々はテキスト格納部2、区画情報格納部4、および生成規則格納部8から取込むことができる。
図7、8のサブルーチンを参照すると、テンプレート生成部9は、まず、区画情報が挿入区画を有するか否か判定する(ステップA2501)。区画情報が挿入区画を有しなければ、テンプレート生成部9は、テキストをそのままテンプレートとして出力し(ステップA2502)、サブルーチンの処理を終了する。
区画情報が挿入区画を有していれば、テンプレート生成部9は、区画情報に含まれている各挿入区画に対して、ステップA2503とステップA2504の間の処理を反復し、全ての挿入区画に対する処理が終了すると、その結果として得られたテキストをテンプレートとして出力し(ステップA2518)、サブルーチンの処理を終了する。
ステップA2503からステップA2504までの間の処理として、テンプレート生成部9は、まず、区画情報の中から1つの挿入区画を選択し(ステップA2503)、1つのテンプレートの生成に複数のテキストが用いられているか、または、選択した挿入区画に要素区画があるか否か判定する(ステップA2505)。
1つのテキストしか用いられておらず、かつ、挿入区画に要素区画が無ければ、テンプレート生成部9は、挿入区画内のテキストと、そのテキストに関する区画情報および生成規則とを引数として図6(b)のサブルーチンを再帰的に実行し、戻り値であるテンプレートをデータモデルとして扱い、そのデータモデルに生成規則を適用して文字列を獲得する(ステップA2506)。次に、テンプレート生成部9は、選択中の挿入区画の内容をステップA2506で得られた文字列で置換し(ステップA2507)、その挿入区画に対する処理を終えてさらに反復が必要であればステップA2503に戻る(ステップA2504)。
図14は、第1の実施形態のテンプレート生成部9による処理の概略を説明するための図である。図14のP3からP4への処理において、挿入区画Block[1]に着目すると、その中にテキストPart[1][k].Textがある。ここでk=0,1,2である。テキストPart[1][k].Textと、区画情報Part[1][k].Block[0]と、データモデルPart[1][k].Part[0]と、生成規則Block[1][k].Rule[0]を引数として再帰的にサブルーチンを実行することにより、テンプレートPart[1][k].Template(k=0,1,2)が得られ、それが挿入区画Block[1]の内容となる。
ステップA2505の判定において、テキストが複数であるか、あるいは要素区画があれば、テンプレート生成部9は、繰り返し構造を表現するループ構文を挿入区画の前後に挿入する(ステップA2508)。例えば、図14におけるP2からP3への処理において、挿入区画Block[1]の前後にループ構文が挿入されている。
次に、テンプレート生成部9は、作業変数リストを用意し、その内容を空に初期化する(ステップA2509)。作業変数リストとは、リスト構造を有する変数であり、リストを構成する要素をテンプレートに含めて保持することができる。1つの挿入区画に挿入すべき文字列を生成するために、複数のテキストあるいは複数の要素区画から得られた文字列が作業変数リストにリストアップされる。1つの作業変数リストにリストアップされる文字列は、例えば1つの挿入区画に関する文字列である。
次に、テンプレート生成部9は、ステップA2510とステップA2511の間にある処理を各要素区画に対して反復する。その際、テンプレート生成部9は、複数のテキストの中から1つを選択し、ステップA2512とステップA2513の間にある処理を各要素区画に対して反復する。なお、テキストが1つであれば、テンプレート生成部9は、ステップA2512とステップA2513の間の処理を1回だけ行えばよい。
テンプレート生成部9は、まず、挿入区画の中から1つの区画を選択し(ステップA2512)、区画内のテキストと、そのテキストに関する区画情報および生成規則を引数として図6(b)のサブルーチンを再帰的に呼び出して実行し、戻り値のテンプレートをデータモデルとして扱い、そのデータモデルに生成規則を適用して得た文字列を作業変数リストに追加する(ステップA2514)。なお、ステップA2505の判定において、要素区画が有るかテキストが複数かの少なくとも一方に該当すれば、ステップA2512〜A2513の処理が行われることとなる。挿入区画に要素区画がある場合には、ステップA2512で選択される区画は各要素区画である。テキストが複数であるが、挿入区画に要素区画が無い場合には、ステップA2512で選択される区画は、各テキストにおける挿入区画そのものである。
図14のP3は、区画情報Part[1]の要素区画についてステップA2512の処理を行った結果を示している。挿入区画Block[1]に対応するデータモデルPart[1]の有するテキストPart[1].text[0]、Part[1].text[1]、およびPart[1].text[2]に対して、図6(b)のサブルーチンの処理を行うと、テンプレートPart[1][k].Template(k=0,1,2)が得られる。
各要素区画分の反復を終え、未選択の要素区画が無くなると、テンプレート生成部9は、次に、作業変数リスト内の各テンプレートの構造が共通であるか否かを判定する(ステップA2515)。
作業変数リスト内のテンプレートの構造が全て共通であれば、テンプレート生成部9は、選択中の挿入区画の内容を、作業変数リスト内の各テンプレートを代表する文字列で置換し(ステップA2516)、その挿入区画に対する処理を終えてさらに反復が必要であればステップA2503に戻る(ステップA2504)。各テンプレートを代表する文字列とは、テンプレート間で異なる部分を変数とすることにより、各テンプレートの表現を共通化した文字列を指す。例えば、テンプレート間で、区画の番号のみが異なれば、その部分を変数とすることで、それらテンプレートを共通化した表現にすることができる。
図14のP4は、作業変数リスト内の3つのテンプレートPart[1][k].Template(k=0,1,2)を代表する文字列を、挿入区画Block[1]に埋め込んだ状態を示している。変数${item,Block[1]}を用いて、テンプレートを共通化している。同様に、図14のP5からP6への処理は、Part[2]に関する処理結果の作業変数リストから、3つのテンプレートを代表する文字列を挿入区画Block[2]に埋め込むものである。
ステップA2515の判定において、作業変数リスト内のテンプレートの構造が共通でなければ、テンプレート生成部9は、選択中の挿入区画の内容を、作業変数リスト内の各テンプレートをif−then−else構文で結合した文字列で置換し(ステップA2517)、その挿入区画に対する処理を終えてさらに反復が必要であればステップA2503に戻る(ステップA2504)。
図15は、図6(b)のステップA2517の処理の具体例を示す図である。図15を参照すると、挿入区画Block[1]は4つの要素区画Block[1][0]〜Block[1][3]を有している。そして、要素区画Block[1][0]〜Block[1][3]の各々に対応するテンプレートPart[1][0].Part[0].Template〜Part[1][3].Part[0].Templateの構造が互いに異なる。そのため、これらのテンプレートはif−else構文で結合されている。
各挿入区画の反復を終え、未選択の挿入区画が無くなると、テンプレート生成部9は、次に、得られたテキストをテンプレートとして出力し、サブルーチンを終了する(ステップA2518)。図14のP6は、出力されたテンプレートの例を示している。
以上説明した第1の実施形態のテンプレート作成装置によれば、テキスト入力部1が事例のテキストを入力し、区画情報入力部3がそのテキストの区画情報を入力し、データモデル入力部5が各区画のデータモデルを入力し、生成規則入力部7がデータモデルから各区画の内容の文字列を生成する生成規則を入力し、テンプレート生成部9が、テンプレートにおいて置換可能な部分である各区画の内容の文字列を生成規則に従って生成しつつ、要素区画間およびテキスト間の重複を取り除くので、テンプレートの仕様が、事例としたテキストとそれに関する区画情報、データモデルおよび生成規則で容易に定まる。
内容の把握が容易なテキスト、区画情報、データモデルおよび生成規則を入力することでテンプレートの仕様を定義することができるので、複雑なテンプレートの仕様を直感的かつ容易に定義することができる。
また、事例のテキストに対して区画情報、データモデルおよび生成規則を照らし合わせることでテンプレートの仕様のレビューを行なうことができるので、複雑なテンプレートを直接チェックする必要がなく、テンプレートの仕様のレビューが格段に容易となる。
また、直接にテンプレートを編集する従来のデバッグ方法では、デバッグ中のテンプレートをテンプレートエンジンにかけてテキスト生成結果を得た上で、生成時のエラーや生成結果のコンパイルエラーを調べて除去する必要があった。しかし、本実施形態のテンプレート作成装置によれば、テンプレートを利用者が直接に編集することがなく、与えられた仕様に従ってテンプレート作成装置が機械的にテンプレートを作成するので、テンプレートに文法のエラーは発生しえず、また、テンプレートを用いてテキスト生成を行なうことなく、事例を編集するだけでデバッグを行なうことができ、コンパイルエラーに対する対処が容易であり、デバッグを効率的に行うことができる。
また、テンプレートの仕様が事例で与えられるため、要求された仕様と現実に作成されたテンプレートとの乖離が原理的に生じないので、仕様自体が妥当であるかどうかのみを検証すれば、仕様とテンプレートとの一致を検証する必要が無く、テンプレートのテストの効率が向上する。
なお、本実施形態では、テンプレート生成部9は、テンプレートを生成するとき、複数テキスト間および挿入区画内の要素区画間の重複を取り除くが、テンプレート内の挿入区画間の重複に対して何らの処理を行わないこととしたが、本発明はそれに限定されるものではない。テンプレート生成部9は、テンプレート内の挿入区画間に重複があれば、それを共通化したテンプレートを生成することとしてもよい。例えば、テンプレート生成部9は、区画番号に対応する部分以外に違いの無い、共通した挿入区画がテンプレート内に有れば、それらを代表する新たな挿入区画でそれらを置き換えればよい。
本発明の第2の実施形態について図面を参照して説明する。
図16は、本発明の第2の実施形態によるテンプレート作成装置の構成を示すブロック図である。図16を参照すると、第2の実施形態のテンプレート作成装置は、テキスト入力部1、テキスト格納部2、区画情報入力部3、区画情報格納部4、データモデル入力部5、データモデル格納部6、生成規則入力部7、生成規則格納部8、テンプレート生成部9、および事例汎化部10を有している。
テキスト入力部1、テキスト格納部2、区画情報入力部3、区画情報格納部4、データモデル入力部5、データモデル格納部6、生成規則入力部7、生成規則格納部8、およびテンプレート生成部9は図1に示された第1の実施形態のものと同様のものである。
事例汎化部10は、データモデル格納部6に格納されたデータモデルおよび生成規則格納部8に格納された生成規則の冗長性を削減するとともに、テンプレート生成部9の生成したテンプレートの冗長性を削減する。その際、事例汎化手段10は、挿入区画間でデータモデルが共通のものが有ればそれを検出し、共通する挿入区画のデータモデルの文字列を代表する文字列を、それら挿入区画に共通のデータモデルとする。また、事例汎化部10は、要素区画間でデータモデルが共通のものが有ればそれを検出し、共通する要素区画のデータモデルの文字列を代表する文字列を、それら要素区画に共通のデータモデルとする。また、事例汎化部10は、テンプレート生成部9により生成されたテンプレートにif-then-else構文の部分があり、if-then-else構文で結合された文字列に互いに共通する複数の文字列があれば、その複数の文字列をif-then-else構文から取り除き、その代わりに複数の文字列を代表する文字列をif-then-else構文に含める。
図17は、第2の実施形態のテンプレート作成装置の動作を示すフローチャートである。図17にはメインルーチンのみが示されており、サブルーチンは図2(b)と同じものである。また、図17のメインルーチンの中で、図2(a)のメインルーチンと同じ符号を付与したものは同じ処理である。
図17を参照すると、テンプレート作成装置は、まず、ステップA1〜A2を繰り返すことにより所望数の事例を入力する。
次に、事例汎化部10が生成規則を汎化する(ステップB1)。次に、テンプレート生成部9が、上述した第1の実施形態と同様に事例に基づいてテンプレートを作成する(ステップA25)。最後に、事例汎化部10が、テンプレート生成部9によって生成されたテンプレートを汎化する(ステップB2)。
図18は、図17に示したステップB1における動作のメインルーチンを示すフローチャートである。図19、20は、図17に示したステップB1における動作のサブルーチンを示すフローチャートである。サブルーチンは便宜上図7、8に分割して示されているが、これらは一連の処理である。
図18のメインルーチンを参照すると、事例汎化部10は、トップレベルの事例集合を引数として図19、20のサブルーチンを実行する(ステップB10)。トップレベルの事例集合とは、サンプルとしてテキスト入力部1により入力されたテキスト内の階層構造の1段目に関する事例の集合である。事例集合に含まれる事例の数は1つであってもよく、複数であってもよい。
図19、20のサブルーチンを参照すると、事例汎化部10は、まず、引数として与えられた事例集合全体にわたってデータモデルの重複を検出する(ステップB101)。事例集合に含まれるデータモデルの中に共通するものがあれば、これにより検出される。
次に、事例汎化部10は、ステップB101で検出した重複するデータモデル同士をマージし、新たなデータモデルを作成する(ステップB102)。次に、事例汎化部10は、ステップB102で作成された新たなデータモデルの名称を生成規則に反映させる。
図22は、図19のステップB102〜B103の処理の具体例を示す図である。図22を参照すると、2つのデータモデルPart[1]とPart[2]は重複している。テンプレートの構成を簡単化するために、事例汎化部10は、それらをマージして新たなデータモデルPartNewを作成し、生成規則Part[j][k].Block[0].Rule(j=0,1,k=0,1,2)に新たなデータモデルの名称を反映させている。
次に、事例汎化部10は、図20のステップB104〜ステップB105の処理を各挿入区画について反復する。
その際、事例汎化部10は、まず、区画情報の中から1つの挿入区画を選択する(ステップB104)。次に、事例汎化部10は、その挿入区画に要素区画があるか否か判定する(ステップB106)。要素区画があれば、事例汎化部10は、挿入区画内の各要素区画の構造が共通か否か判定する(ステップB107)。
全ての要素区画の構造が共通であれば、事例汎化部10は、全ての要素区画を1つのグループにグループ化する(ステップB108)。構造の異なる要素区画があれば、事例汎化部10は、共通の構造を有する要素区画同士を1つのグループにグループ化する(ステップB109)。これにより要素区画は複数のグループにグループ化されることもありうる。
次に、事例汎化部10は、ステップB110とステップB111の間にある処理を各グループについて反復する。その際、事例汎化部10は、まず、1つのグループを選択する(ステップB110)。次に、事例汎化部10は、そのグループ内の各要素区画に対応したデータモデルを集め、処理対象の事例集合とする(ステップB112)。次に、事例汎化部10は、ステップB112で作成された事例集合を引数として、図19、20の本サブルーチンを再帰的に呼び出して実行する(ステップB113)。これで1つのグループに対する処理が終了する。
事例汎化部10は、未選択のグループがあれば次のグループにステップB110〜B111の間の処理を行い、未選択のグループが無くなると、その挿入区画の各グループについての反復を終える(ステップB111)。これで1つの挿入区画に対する処理が終了する。
事例汎化部10は、未選択の挿入区画があれば次の挿入区画にステップB104〜B105の処理を行い、未選択の挿入区画が無くなると、区画情報の各挿入区画についての反復を終えて、サブルーチンの処理を終了する(ステップB105)。
図21は、図17に示したステップB2における詳細な動作を示すフローチャートである。なお、ステップB2の処理は、図17に示したように、ステップA25の処理によってテンプレートが生成された後に行われる。
図21を参照すると、事例汎化部10は、作成されたテンプレートがif−else構文で結合された節(if−else節)を持っているか否か判定する(ステップB201)。テンプレートがif−else節を持っていなければ、事例汎化部10はそのまま処理を終了する。
テンンプレートがif−else節を持っていれば、事例汎化部10は、そのif−else節に対してステップB202〜ステップB203の処理を反復する。その際、事例汎化部10は、各if−else節において、内容が共通する区画をマージする(ステップB204)。事例汎化部10は、全てのif−else節に対して反復処理を終え、未処理のif−else節が無くなると、処理を終了する。図23は、図21の処理の具体例を示す図である。図23参照すると、テンプレートTemplateには、if−else節があり、さらにその中に重複する区画があるので、事例汎化部10は、その中の重複する区画をマージすることにより、if−else節を汎化している。
上述した第1の実施形態において、例えばステップA2305、ステップA2311、ステップA2402、ステップA2404において利用者を介在さず、テンプレート作成装置が自動的にデフォルト値を入力することとすれば、利用者はテンプレートをより容易に作成することができる。しかし、その場合、複数の事例間でデータモデルの内容に重複があれば、それに伴って生成規則に冗長性が生じうる。また、第1の実施形態では、テンプレート生成部9によるステップA2515の処理において、if−else構文を含む区画の内容に重複のあるテンプレートが生成されうる。
これに対して、第2の実施形態のテンプレート作成装置によれば、事例汎化部10が事例間、挿入区画間、および要素区画間のデータモデルの重複があれば、そのデータモデルをマージすることによりデータモデルおよび生成規則を汎化し、さらに、テンプレート内のif−else構文内の重複を除去するので、データモデル、生成規則、およびテンプレートの冗長性を軽減することができる。
なお、図19、20およびその説明では、説明の簡単化のため、要素区画間の共通化に着目しているが、本発明はそれに限定されるものではない。第1の実施形態と同様に、複数のテキストが入力されれば、複数テキスト間の挿入区画の共通化も同様に行うことができる。
本発明の第3の実施形態について図面を参照して説明する。図24は、本発明の第3の実施形態によるテンプレート作成装置の構成を示すブロック部である。図24を参照すると、第3の実施形態のテンプレート作成装置は、テキスト入力部1、テキスト格納部2、区画情報入力部3、区画情報格納部4、データモデル入力部5、データモデル格納部6、生成規則入力部7、生成規則格納部8、テンプレート生成部9、テキスト修正部11、区画情報修正部12、データモデル修正部13、生成規則修正部14、および整合性検証部15を有している。
テキスト入力部1、テキスト格納部2、区画情報入力部3、区画情報格納部4、データモデル入力部5、データモデル格納部6、生成規則入力部7、生成規則格納部8、およびテンプレート生成部9は図1に示された第1の実施形態のものと同じである。
テキスト修正部11は、テキスト格納部2に格納されているテキストを利用者の所望に従って修正する。そして、テキスト修正部11は、修正内容を区画情報修正部12およびデータモデル修正部13に通知して区画情報およびデータモデルの修正を指示する。
区画情報修正部12は、テキスト修正部11からテキストに関する修正内容を通知されると、それを反映させるように区画情報を修正する。また、区画情報修正部12は利用者の所望に従って区画情報を修正する。そして、区画情報修正部12は、区画情報の修正内容をデータモデル修正部13および生成規則修正部14に通知してデータモデルおよび生成規則の修正を指示する。
データモデル修正部13は、テキスト修正部11からテキストの修正内容を通知され、データモデルの修正を指示されると、その指示に従ってテキストの修正内容を反映するようにデータモデルの変更内容を入力する。また、データモデル修正部13は、区画情報修正部12から区画情報の修正内容を通知され、データモデルの修正を指示されると、その指示に従って区画情報の修正内容を反映するようにデータモデルの変更内容を入力する。さらに、データモデル修正部13は、利用者の所望に従ってデータモデルの変更内容を入力する。データモデルの変更内容は、一旦、例えばデータモデル格納部6に蓄積される。
そして、データモデル修正部13は、データモデルの変更内容を整合性検証部15に通知し、その変更内容が生成規則およびテキストと整合性の取れたものであるか否かの判定を指示する。整合性検証部15から整合性が取れている旨の判定結果が戻れば、データモデル修正部13は、その変更内容に従ってデータモデル格納部6のデータモデルを変更する。整合性が取れていない旨の判定結果が戻れば、データモデル修正部13は、データモデル格納部6のデータモデルの変更をキャンセルし、データモデルを元のままに維持する。
生成規則修正部14は、区画情報修正部12から区画情報の修正内容を通知され、生成規則の修正を指示されると、その指示に従って区画情報の修正内容を反映するように生成規則の変更内容を入力する。さらに、生成規則修正部14は、利用者の所望に従って生成規則の変更内容を入力する。生成規則の変更内容は、一旦、例えば生成規則格納部8に蓄積される。
そして、生成規則修正部14は、生成規則の変更内容を整合性検証部15に通知し、その変更内容がデータモデルおよびテキストと整合性が取れたものであるか否かの判定を指示する。整合性検証部15から整合性が取れている旨の判定結果が戻れば、生成規則修正部14は、その変更内容に従って生成規則格納部8の生成規則を変更する。整合性が取れていない旨の判定結果が戻れば、生成規則修正部14は、生成規則格納部8の生成規則の変更をキャンセルする。
整合性検証部15は、データモデル修正部13または生成規則修正部14から通知された変更内容を適用した場合、テキスト、データモデルおよび生成規則に相互に整合性が取れているか否か判定し、その判定結果を戻す。整合性が取れているか否かは、テキスト、データモデルおよび生成規則が互いに矛盾の無い状態となるか否かで判定される。
図25、26は、第3の実施形態に特有の動作を示すフローチャートである。図25を参照すると、テンプレート作成装置は、まず、修正すべき対象がテキストか否か判定する(ステップC101)。
修正対象がテキストであれば、テキスト修正部11は、そのテキストにおける全階層の区画情報の中から、修正部分の文字列を囲む区画を選択する(ステップC102)。次に、テキスト修正部11は、選択した区画が区切り区画か否か判定する(ステップC103)。
選択した区画が区切り区画であれば、テキスト修正部11は、その区切り区画の文字列を修正する(ステップC104)。選択した区画が区切り区画でなければ、テキスト修正部11は、その選択した区画の文字列を変更する(ステップC105)。
ステップC104またはステップC105の処理の後、テキスト修正部11からの指示に従って、区画情報修正部12は、文字列の変更によりずれた区画の範囲を修正(シフト)する(ステップC106)。次に、データモデル修正部13は、テキスト修正部11からの指示に従って、変更された区画に対応するデータモデルの文字列を更新し(ステップC107)、処理を終了する。
ステップC101の判定において修正対象がテキストでなければ、次に、テンプレート作成装置は、修正対象が区画情報か否か判定する(ステップC108)。
修正対象が区画情報であれば、区画情報修正部12は、修正は区画の範囲を変更するものか否か判定する(ステップC109)。修正が区画の範囲を変更するものであれば、区画情報修正部12は、それに従って区画の範囲を変更する(ステップC110)。そして、データモデル修正部13は、区画情報修正部12からの指示に従って、変更された区画に対応するデータモデルの文字列を更新する(ステップC111)。
ステップC109の判定において、修正が区画の範囲を変更するものでなければ、区画情報修正部12は、修正が区画の追加または削除を行なうものであるか否か判定する(ステップC112)。修正が区画の追加または削除を行なうものであれば、区画情報修正部12が区画の追加または削除を行なった後、生成規則修正部14は、その区画に対応する生成規則の追加または削除を行ない(ステップC113)、処理を終了する。ステップC112の判定において、修正が区画を追加または削除するものでなければ、生成規則に変更をせず、そのまま処理を終了する。
ステップC108の判定において修正対象が区画情報でなければ、テンプレート作成装置は、図26に示すように、修正対象がデータモデルか否か判定する(ステップC114)。修正対象がデータモデルであれば、データモデル修正部13は、データモデルの変更内容を入力する(ステップC115)。そして、整合性検証部15は、その変更内容がデータモデル、生成規則およびテキストの整合性を保つものであるか否かを判定する(ステップC116)。整合性が保たれる変更内容であれば、データモデル修正部13は、その変更内容でデータモデルを変更する(ステップC117)。修正内容が整合性の保たれないものであれば、データモデル修正部13は、その変更をキャンセルし、処理を終了する。
ステップC114の判定で修正対象がデータモデルでなければ、テンプレート作成装置は、修正対象が生成規則であるか否か判定する(ステップC118)。修正対象が生成規則であれば、生成規則修正部14は、修正が生成規則の追加または削除を行なうものであるか否か判定する(ステップC119)。修正が生成規則の追加または削除を行なうものであれば、生成規則修正部14は、生成規則を追加または削除する(ステップC120)。
ステップC119の判定において修正が生成規則を追加または削除するものでなければ、生成規則修正部14は、その修正が生成規則の内容を変更するものか否か判定する(ステップC121)。修正が生成規則の内容を変更するものであれば、生成規則修正部14は、それに従って生成規則の変更内容を入力する(ステップC122)。そして、整合性検証部15は、その変更内容がデータモデル、生成規則およびテキストの相互の整合性を保つものであるか否か判定する(ステップC123)。整合性が保たれる変更内容であれば、生成規則修正部14は、その変更内容で生成規則を変更する(ステップC124)。変更内容が整合性の保たれないものであれば、生成規則修正部14は、その変更をキャンセルし、処理を終了する。
以上説明した第3の実施形態のテンプレート作成装置によれば、テキスト修正部11、区画情報修正部12、データモデル修正部13および生成規則修正部14から事例の内容の変更が可能であり、データモデル修正部13または生成規則修正部14が内容の変更を入力すると、整合性検証部15がその変更内容においてデータモデル、区画情報およびテキストの整合性が取れているか否か判定し、整合性が取れているときだけ、データモデル修正部13または生成規則修正部14が変更を行なうので、事例の内容を変更しても各情報が相互に矛盾することが無く、適切に仕様の修正を行なうことができる。
本発明は、例えば、「表記法」のみに限定した「統一モデリング言語」であるUML(Unified Modeling Language)のソフトウェアモデルからソースコードを生成する際に、テンプレートエンジンにて用いられるテンプレートを作成するために利用できる。また、本発明は、Webページを生成するのに用いられるテンプレートの作成に利用できる。
本発明の第1の実施形態によるテンプレート作成装置の構成を示すブロック図である。 第1の実施形態のテンプレート作成装置の動作を示すフローチャートである。 図2(b)に示したステップA22における詳細な動作を示すフローチャートである。 図2(b)に示したステップA23における詳細な動作を示すフローチャートである。 図2(b)に示したステップA24における詳細な動作を示すフローチャートである。 図2(b)に示したステップA25における動作のメインルーチンを示すフローチャートである。 図2(b)に示したステップA25における動作のサブルーチンの一部を示すフローチャートである。 図2(b)に示したステップA25における動作のサブルーチンの他の一部を示すフローチャートである。 事例として入力されるテキストの一例を示す図である。 事例として入力される区画情報の区切り方の一例を示す図である。 第1の実施形態において用いる事例集合の構成と、各情報に付与する名称の例と、その表記法を記載した図である。 第1の実施形態における各情報の内容例を示す図である。 図9に示したテキストに対して図2(b)の処理を実行して得られる事例の情報セットを示す図である。 第1の実施形態のテンプレート生成部9による処理の概略を説明するための図である。 図6(b)のステップA2517の処理の具体例を示す図である。 本発明の第2の実施形態によるテンプレート作成装置の構成を示すブロック図である。 第2の実施形態のテンプレート作成装置の動作を示すフローチャートである。 図17に示したステップB1における動作のメインルーチンを示すフローチャートである。 図17に示したステップB1における動作のサブルーチンの一部を示すフローチャートである。 図17に示したステップB1における動作のサブルーチンの他の一部を示すフローチャートである。 図17に示したステップB2における詳細な動作を示すフローチャートである。 図19のステップB102〜B103の処理の具体例を示す図である。 図21の処理の具体例を示す図である。 本発明の第3の実施形態によるテンプレート作成装置の構成を示すブロック部である。 第3の実施形態に特有の動作を示すフローチャートの一部である。 第3の実施形態に特有の動作を示すフローチャートの他の一部である。
符号の説明
1 テキスト入力部
2 テキスト格納部
3 区画情報入力部
4 区画情報格納部
5 データモデル入力部
6 データモデル格納部
7 生成規則入力部
8 生成規則格納部
9 テンプレート生成部
10 事例汎化部
11 テキスト修正部
12 区画情報修正部
13 データモデル修正部
14 生成規則修正部
15 整合性検証部
A1、A2、A21〜25、A2201〜2208、A2301〜2313、A2401〜2406、A250、A2501〜2518 ステップ
B1、B10、B101〜10113、B2、B201〜204 ステップ
C101〜124 ステップ

Claims (11)

  1. 文字列を含むテキストを生成するときに雛型として用いられるテンプレートを作成するテンプレート作成装置であって、
    前記テンプレートを用いて生成可能としようとするテキストのサンプルとなるサンプルテキストを入力するテキスト入力手段と、
    前記テキスト入力手段により入力された前記サンプルテキストに対応して、前記テンプレートにおいて文字列の置換を可能とする挿入区画の範囲および構造を示す区画情報を入力する区画情報入力手段と、
    前記サンプルテキストの前記挿入区画の文字列の基となるデータモデルを入力するデータモデル入力手段と、
    前記データモデルから、前記サンプルテキストの前記挿入区画の文字列を生成するための生成規則を入力する生成規則入力手段と、
    前記サンプルテキストにおける前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した前記文字列を、置換可能な前記挿入区画に挿入して前記テンプレートを生成するテンプレート生成手段とを有するテンプレート作成装置。
  2. 前記区画情報入力手段が、前記挿入区画内にさらに挿入区画を階層的に設定し、
    前記生成規則入力手段が、前記挿入区画内に階層的に設定された挿入区画の生成規則を入力し、
    前記テンプレート生成手段が、前記サンプルテキストにおける各階層の前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した文字列を置換可能な前記挿入区画に挿入して、階層的に挿入区画が設定されたテンプレートを生成する、請求項1記載のテンプレート作成装置。
  3. 前記区画情報入力手段が、前記テキストの構造に従って、前記挿入区画内を複数の要素区画を有する繰り返し構造に設定し、
    前記生成規則入力手段が、前記挿入区画の生成規則と共に、該挿入区画内の前記要素区画の生成規則を入力し、
    前記テンプレート生成手段が、前記サンプルテキストにおける前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した前記挿入区画内の前記要素区画の文字列が共通であれば、前記要素区画の文字列を代表する文字列を前記挿入区画に挿入し、前記挿入区画内の前記要素区画の文字列が共通でなければ、前記要素区画の文字列をif-then-else構文で結合した文字列を前記挿入区画に挿入して、前記テンプレートを生成する、請求項1または2に記載のテンプレート作成装置。
  4. 前記テキスト入力手段が、前記テンプレートを用いて生成可能としようとするテキストのサンプルとなる複数の前記サンプルテキストを入力し、
    前記区画情報入力手段が、前記サンプルテキストの各々に対応して、前記テンプレートにおいて文字列の置換を可能とする前記挿入区画の範囲および構造を示す前記区画情報を入力し、
    前記生成規則入力手段が、前記データモデルから、前記サンプルテキストの前記挿入区画の文字列を生成するための前記生成規則を前記サンプルテキストの各々について入力し、
    前記テンプレート生成手段が、前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した、同じ前記挿入区画に関する前記サンプル毎の文字列が共通であれば、前記サンプル毎の文字列を代表する文字列を前記挿入区画に挿入し、同じ前記挿入区画に関する前記サンプル毎の文字列が共通でなければ、前記サンプル毎の文字列をif-then-else構文で結合した文字列を前記挿入区画に挿入して、前記テンプレートを生成する、請求項1〜3のいずれか1項に記載のテンプレート作成装置。
  5. 前記テンプレート生成手段は、作成したテンプレート内に共通した前記挿入区画があれば、それら共通した前記挿入区画を代表する文字列を該挿入区画に挿入することにより前記テンプレートを簡単化する、請求項1〜4のいずれか1項に記載のテンプレート作成装置。
  6. 前記サンプルテキスト間、前記挿入区画間、または前記要素区画間で前記データモデルが共通のものが有ればそれを検出し、共通する前記データモデルの文字列を代表する文字列のデータモデルにまとめる汎化手段をさらに有する、請求項1〜5のいずれか1項に記載のテンプレート作成装置。
  7. 前記汎化手段は、前記テンプレート生成手段により生成された前記テンプレートにif-then-else構文の部分があり、前記if-then-else構文で結合された文字列に互いに共通する複数の文字列があれば、前記複数の文字列を、前記複数の文字列を代表する文字列にまとめる、請求項6記載のテンプレート作成装置。
  8. 前記サンプルテキスト、前記データモデル、および前記生成規則が相互に整合性が取れているか否か検証する整合性検証手段と、
    前記データモデルの変更が要求されると、変更内容を定めて前記整合性検証手段に前記変更内容で前記サンプルテキスト、前記データモデル、および前記生成規則が相互に整合性が取れているか否かの検証を指示し、前記整合性が取れていれば前記変更内容で前記データモデルを変更し、前記整合性が取れていなければ前記データモデルの変更をキャンセルするデータモデル修正手段と、
    前記生成規則の変更が要求されると、変更内容を定めて前記整合性検証手段に前記変更内容で前記サンプルテキスト、前記データモデル、および前記生成規則が相互に整合性が取れているか否かの検証を指示し、前記整合性が取れていれば前記変更内容で前記生成規則を変更し、前記整合性が取れていなければ前記生成規則の変更をキャンセルする生成規則修正手段とをさらに有する、請求項1〜7いずれか1項に記載のテンプレート作成装置。
  9. 前記テキスト入力手段が入力した前記サンプルテキストを利用者の任意に変更するテキスト修正手段と、
    前記テキスト修正手段が前記サンプルテキストを変更したとき、その変更内容に応じて前記区画情報を変更し、また前記区画情報入力手段が入力した前記区画情報を前記利用者の任意に変更する区画情報修正手段とをさらに有し、
    前記データモデル修正手段は、前記テキスト修正手段が前記テキストを変更したとき、または前記区画情報修正手段が前記区画情報を変更したとき、その変更内容に応じて前記データモデルを変更し、また前記利用者の任意に前記データモデルを変更し、
    前記生成規則修正手段は、前記区画情報修正手段が前記区画情報を変更したとき、その変更内容に応じて前記生成規則を変更し、また前記利用者の任意に前記生成規則を変更する、請求項8記載のテンプレート作成装置。
  10. 文字列を含むテキストを生成するときに雛型として用いられるテンプレートを作成するためのテンプレート作成プログラムであって、
    前記テンプレートを用いて生成可能としようとするテキストのサンプルとなるサンプルテキストを入力するテキスト入力手段と、
    前記テキスト入力手段により入力された前記サンプルテキストに対応して、前記テンプレートにおいて文字列の置換を可能とする挿入区画の範囲および構造を示す区画情報を入力する区画情報入力手段と、
    前記サンプルテキストの前記挿入区画の文字列の基となるデータモデルを入力するデータモデル入力手段と、
    前記データモデルから、前記サンプルテキストの前記挿入区画の文字列を生成するための生成規則を入力する生成規則入力手段と、
    前記サンプルテキストにおける前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した前記文字列を、置換可能な前記挿入区画に挿入して前記テンプレートを生成するテンプレート生成手段としてコンピュータを機能させるためのテンプレート作成プログラム。
  11. 文字列を含むテキストを生成するときに雛型として用いられるテンプレートをコンピュータにより作成するためのテンプレート作成方法であって、
    前記コンピュータのテキスト入力手段が、前記テンプレートを用いて生成可能としようとするテキストのサンプルとなるサンプルテキストを入力する第1のステップと、
    前記コンピュータの区画情報入力手段が、前記テキスト入力手段により入力された前記サンプルテキストに対応して、前記テンプレートにおいて文字列の置換を可能とする挿入区画の範囲および構造を示す区画情報を入力する第2のステップと、
    前記コンピュータのデータモデル入力手段が、前記サンプルテキストの前記挿入区画の文字列の基となるデータモデルを入力する第3のステップと、
    前記コンピュータの生成規則入力手段が、前記データモデルから、前記サンプルテキストの前記挿入区画の文字列を生成するための生成規則を入力する第4のステップと、
    前記コンピュータのテンプレート生成手段が、前記サンプルテキストにおける前記挿入区画の前記範囲を置換可能とし、前記生成規則により生成した前記文字列を、置換可能な前記挿入区画に挿入して前記テンプレートを生成する第5のステップとを有するテンプレート作成方法。
JP2004044493A 2004-02-20 2004-02-20 テンプレート作成装置、プログラム、および方法 Pending JP2005234959A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004044493A JP2005234959A (ja) 2004-02-20 2004-02-20 テンプレート作成装置、プログラム、および方法
US11/056,248 US20050188323A1 (en) 2004-02-20 2005-02-14 Template creation apparatus and creation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004044493A JP2005234959A (ja) 2004-02-20 2004-02-20 テンプレート作成装置、プログラム、および方法

Publications (1)

Publication Number Publication Date
JP2005234959A true JP2005234959A (ja) 2005-09-02

Family

ID=34858060

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004044493A Pending JP2005234959A (ja) 2004-02-20 2004-02-20 テンプレート作成装置、プログラム、および方法

Country Status (2)

Country Link
US (1) US20050188323A1 (ja)
JP (1) JP2005234959A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008114461A (ja) * 2006-11-02 2008-05-22 Brother Ind Ltd 印刷装置
JP2008217292A (ja) * 2007-03-02 2008-09-18 Hitachi Software Eng Co Ltd ソフトウェア部品テンプレート管理システム
JP2009230606A (ja) * 2008-03-25 2009-10-08 Hitachi Software Eng Co Ltd ソースコードテンプレート生成装置
CN103942184A (zh) * 2013-12-30 2014-07-23 远光软件股份有限公司 具有附加项汇总报表的配置方法、生成方法及系统

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8349262B2 (en) * 2007-10-30 2013-01-08 The Invention Science Fund I, Llc Nitric oxide permeable housings
US9152740B1 (en) * 2012-01-18 2015-10-06 Msc.Software Corporation Interactive simulation and solver for mechanical, fluid, and electro-mechanical systems
CN103034496B (zh) * 2012-12-13 2016-06-01 海南电网公司 基于模板的门户局部静态化生成方法
US10380239B2 (en) * 2013-12-03 2019-08-13 Sharethrough Inc. Dynamic native advertisment insertion
US9912767B1 (en) 2013-12-30 2018-03-06 Sharethrough Inc. Third-party cross-site data sharing
US9514118B2 (en) * 2014-06-18 2016-12-06 Yokogawa Electric Corporation Method, system and computer program for generating electronic checklists
CN109582286B (zh) * 2018-07-04 2021-11-26 福州震旦计算机技术有限公司 基于Freemarker技术的数据规范性校验方法及其装置
US11775748B1 (en) * 2022-05-09 2023-10-03 Prezent Inc. Systems and methods for content creation based on audience preference and contextual factors

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7152229B2 (en) * 2002-01-18 2006-12-19 Symbol Technologies, Inc Workflow code generator
US7650590B2 (en) * 2004-01-13 2010-01-19 Sap Ag Flexible code generation

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008114461A (ja) * 2006-11-02 2008-05-22 Brother Ind Ltd 印刷装置
JP4743083B2 (ja) * 2006-11-02 2011-08-10 ブラザー工業株式会社 印刷装置
JP2008217292A (ja) * 2007-03-02 2008-09-18 Hitachi Software Eng Co Ltd ソフトウェア部品テンプレート管理システム
JP2009230606A (ja) * 2008-03-25 2009-10-08 Hitachi Software Eng Co Ltd ソースコードテンプレート生成装置
CN103942184A (zh) * 2013-12-30 2014-07-23 远光软件股份有限公司 具有附加项汇总报表的配置方法、生成方法及系统

Also Published As

Publication number Publication date
US20050188323A1 (en) 2005-08-25

Similar Documents

Publication Publication Date Title
US20050188323A1 (en) Template creation apparatus and creation method
JP3879350B2 (ja) 構造化文書処理システム及び構造化文書処理方法
KR100661393B1 (ko) 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법
US9575939B2 (en) Linked code generation report
JP5005510B2 (ja) ソフトウェアの設計支援方法、設計支援装置及び設計支援プログラム
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
JP5567682B2 (ja) グラフィカル状態遷移図モデルにおける再利用候補の正規化バージョン
JP2012190219A (ja) 情報処理装置、およびトレースログ取得方法
JP2009181446A (ja) プログラム生成装置およびブロック線図生成装置
Dolog et al. Using UML and XMI for generating adaptive navigation sequences in web-based systems
Zhang et al. Automated Extraction of Grammar Optimization Rule Configurations for Metamodel-Grammar Co-evolution
Pereira et al. An IOPT-net state-space generator tool
JP2008293382A (ja) テスト仕様自動生成方式
JP5041990B2 (ja) ソフトウェア部品抽出支援装置
Gonçalves et al. ReFlO: An interactive tool for pipe-and-filter domain specification and program generation
JP5275087B2 (ja) プログラム生成装置およびブロック線図生成装置
Bernardi et al. Web applications design evolution with UWA
JP4207992B2 (ja) 構造化文書処理システム及び構造化文書処理方法
Straszak et al. Model-driven acceptance test automation based on use cases
JPH0667871A (ja) プログラム自動更新方式
JP2010165205A (ja) モデルのテンプレート自動生成システム、方法及びプログラム
JP3857576B2 (ja) 高分子材料設計システムおよび高分子材料設計プログラム
Hautaviita Developing a web application on the MEVN stack: the architecture of a full-stack JavaScript application
JP3194372B2 (ja) パーザ生成器プリプロセッサシステム、パーザ生成器用プリプロセス方法
Colantoni et al. Towards blended modeling and simulation of DevOps processes: the Keptn case study

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071228

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080220