テンプレートエンジン

テンプレートエンジンはテンプレートと呼ばれる雛形と、あるデータモデルで表現される入力データを合成し、成果ドキュメントを出力するソフトウェアまたはソフトウェアコンポーネントである。テンプレートおよび成果ドキュメントは複数のこともある。成果ドキュメントには様々なフォーマットのものがあり、文書・ウェブページ・ソースコードなどがその例で、ドキュメント全体ではなく、その一部を出力することもある。

 構成要素 
テンプレートエンジンは少なくとも以下の要素から成る。
 関連したデータモデル
 1つ以上のソーステンプレート
 処理系であるテンプレートエンジン
 フォーマットされた出力である成果ドキュメント

 データモデル 
データモデルとしては、関係データベース・XML・フラットファイルデータベース（例えばCSV）・スプレッドシートなど様々な形式のものが考えられる。複数のデータモデルに対応した柔軟なテンプレートエンジンもある。

 ソーステンプレート 
ソーステンプレートの記述形式（仕様）は一般的に以下のようなものがある。
 既存のプログラミング言語
 特別に設計されたテンプレート言語
 ホストアプリケーションの機能に規定されるもの
 以上の組み合わせ

 テンプレートエンジン 
テンプレートエンジンの役割は以下である。
 データモデルを受け取る
 ソーステンプレートに記述されたコードを処理する
 処理結果をテキストファイルまたはパイプ、ストリームに出力する

テンプレートエンジンによってはその他のオプションが設定できるものもある。

 成果ドキュメント 
出力である成果ドキュメントはドキュメントの全体または一部を構成する。

 用途 

 ウェブテンプレートエンジン 
ウェブテンプレートエンジンは「ウェブテンプレート」とソースデータ（典型的には関係データベースから）を処理してウェブページ（またはその一部）を生成する。ウェブアプリケーション・ウェブサイトの開発においてはテンプレートエンジンの使用が標準的になっており、ウェブアプリケーションフレームワークの一部に含まれていることが多い。

テンプレートエンジンには独自のテンプレート言語を採用しているものと汎用のプログラミング言語上に構築されているものがある。前者の例はVelocity・Template Toolkit・FreeMarker・Smartyなどで、後者の例はJSP・eRubyなどである。

 ドキュメント生成 

Javadocのようなソースコード埋め込みドキュメントからHTMLを生成するシステムもテンプレートエンジンの一種である。

 コード生成 
ソースコード生成は成果ドキュメントとしてソースコードを出力するテンプレートエンジン処理である。その場合のデータモデルはUML、リレーショナルデータおよびアプリケーションドメインに応じた特別なデータストアなどがある。

 利点 
テンプレートエンジンを利用することでいくつかの恩恵が受けられる。
 見た目 (View) とロジックが分離できる
 例えばMVCのようなモジュール化を容易にする
 デザイナーとプログラマーなど、作業の分担ができ、チームでの開発がやりやすくなる
 ドキュメント生成のための同じようなコードの重複が避けられる

 関連項目 
 ソースコード生成
 プリプロセッサ
 ドメイン特化言語
 モデル変換

*
てんふれとえんしん