テンプレートエンジン

ソフトウェアまたはソフトウェアコンポーネントの一つ

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

テンプレートエンジンの処理フロー

構成要素編集

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

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

データモデル編集

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

ソーステンプレート編集

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

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

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

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

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

成果ドキュメント編集

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

用途編集

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

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

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

ドキュメント生成編集

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

コード生成編集

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

利点編集

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

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

関連項目編集