テンプレートエンジン

出典: フリー百科事典『ウィキペディア(Wikipedia)』
テンプレートエンジンの処理フロー

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

構成要素[編集]

テンプレートエンジンは少なくとも以下の要素から成る。

  • 関連したデータモデル
  • 1つ以上のソーステンプレート
  • 処理系であるテンプレートエンジン
  • フォーマットされた出力である成果ドキュメント

データモデル[編集]

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

ソーステンプレート[編集]

ソーステンプレートの記述形式(仕様)は一般的に以下のようなものがある。

テンプレートエンジン[編集]

テンプレートエンジンの役割は以下である。

  1. データモデルを受け取る
  2. ソーステンプレートに記述されたコードを処理する
  3. 処理結果をテキストファイルまたはパイプストリームに出力する

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

成果ドキュメント[編集]

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

用途[編集]

ウェブテンプレートエンジン[編集]

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

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

ドキュメント生成[編集]

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

コード生成[編集]

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

利点[編集]

テンプレートエンジンを利用することでいくつかの恩恵が受けられる。

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

関連項目[編集]