テンプレートエンジンはテンプレートとなる部分とデータモデルで表現される入力データを合成し、成果ドキュメントを出力するソフトウェアです。簡単にいうならばデータとテンプレートを合わせて、文字列を作る仕組みのことを言います。この記事ではテンプレートエンジンを理解するために初心者でも分かる構成、メリットなどの基礎知識から総勢12種類について紹介していきます。
テンプレートエンジンとはテンプレートとなる部分とデータモデルで表現される入力データを合成し、成果ドキュメントを出力するソフトウェアです。デザイン部分とロジック部分を切り離して作業できるといった利点があることから重宝されております。テンプレートエンジンの主な構成要素として『データモデル』『ソーステンプレート』『成果ドキュメント』が挙げられます。
テンプレートエンジンの主な構成要素である『データモデル』『ソーステンプレート』『成果ドキュメント』について見ていきましょう。
データモデルは「DBMS」「XML」「フラットファイルデータベース」「スプレッドシート」など様々な形式のものが挙げられます。
ソーステンプレートの記述形式はいくつかの仕様が存在します。
主に「既存のプログミング言語」「特別に設計されたテンプレート言語」「ホストアプリケケーションに規定されるもの」などの組み合わせから成り立ちます。
成果ドキュメントは「文書」「Web ページ(HTML)」「ソースコード」など様々な形式があります。
テンプレートエンジンのメリットを見ていきましょう。
テンプレートエンジンはデザインとロジックを分離できるというメリットがあります。
「デザイン」 =「画面(UI)」 「ロジック」 = 「プログラム」を分離できることでデザイナー、プログラマー間での作業分担が効率よく実施することができます。
テンプレートエンジンはコードの重複を避けられるというメリットがあります。ドキュメント生成のための同じようなコード(プログラム)の重複が避けられます。
テンプレートエンジンは豊富な種類があるというメリットがあります。主に「PHP」や「JavaScript」の環境にて多数存在します。
主要なテンプレートエンジン11種類をご紹介させていただきます。
Smartyとは主にPHPで使用されるテンプレートエンジンです。Smartyを利用することでプログラム(ロジック)と画面(デザイン)を分離して管理することができます。2001年に誕生し、数あるテンプレートの中でも一番長い歴史を持っております。そのため多くの開発実績があり、日本においてもドキュメントが揃っていることから重宝されております。Smartyは画面を表示する前にコンパイルキャッシュを行い、表示を高速化させることができます。特徴として『プログラムとデザインを分けられる』『処理速度が早い』『拡張性が高い』などが挙げられます。
Twigとは主にPHPで使用されるテンプレートエンジンです。Twngはセキュリティ対策やデバッグがしやすいと人気を集めております。Twigの構文はPython向けWebアプリケーションフレームワーク『Django』と近しいものです。Twigを利用することでHTMLにPHPを直接書き込むよりも、短くコーディングすることができ、よりテンプレートが読みやすい記述になります。『Symfony』フレームワークでは デフォルトのテンプレートエンジンとして採用されております。Twigの特徴として『セキュリティが高い』『処理速度が早い』『柔軟性が高い』などが挙げられます。
Hamlとは「HTML avstraction markup langage」の略称で直訳すると『HTMLを抽象化したマークアップ言語』となっております。HalmはRubyで実装されており、PHP、ASP、JSPなどの他のWeb言語と同様にプログラム実行時に実行されるコードを埋め込み、動的コンテンツを提供するためにHTMLコードを生成します。特徴として『綺麗に、無駄なく、分かりやすく、効率的』『Rubyで使用できる』『タグ閉じ不要』などが挙げられます。よってHamlはより簡単で綺麗にHTMLを生成できるように作られたテンプレートエンジンとなります。
Echo(エコー)とはGo言語に活用されるLabStackによって管理される軽量なWebアプリケーションフレームワークです。同じくGo言語に使用される『Gin』をモデルに誕生したフレームワークとして小規模から中規模のWebアプリケーション開発に向いており、軽量フレームワークとして最も注目を集めている一つです。高性能でいて、豊富な拡張機能、そして軽量のフレームワークであることが人気の理由となっております。またRESTの原則に従って設計されたAPIを持つことも特徴の一つです。Echoで記述されたソースコードの読みやすさには定評があり開発効率の面でも高い評価を集めております。
EJSとは主にJavaScriptで使用されるテンプレートエンジンです。EJSを利用することでHTMLをヘッダーやフッターで分割して管理することやHTML内でループ処理を書いて簡単に記述できるなどを実現できます。JavaScriptを使用してHTMLマークアップを生成できるシンプルなテンプレート言語と捉えると分かりやすいでしょう。特徴として『JavaScriptのようにHTMLを書ける』『シンプルで分かりやすい』『レイアウト機能がある』などが挙げられます。
Edge.jsとは主にJavaScriptで使用されるテンプレートエンジンです。Edge.jsを使用することでHTMLを効率よくコーディングすることができます。また「Node.js」と「.NET」の各プラットフォームにて相互に使用できる環境を実現します。C#からでもNode.js経由で使用できるなど汎用性が高いです。特徴として『レイアウト機能の完備』『Node.js で.NETライブラリが使用できる』『学習コストが低い』などが挙げられます。
Edge.jsの公式サイトはこちら>>
Edge.jsの特徴や画像輪郭の指定などの基礎知識について解説された記事はこちら>>
Nunjucksとは主にJavaScriptで使用されるテンプレートエンジンです。NunjucksはEJSと同じHTMLベースの構文であり、JinjaというPython向けテンプレートエンジンに影響を受けております。それもありNunjucksはPythonで記述することも可能です。FireFoxブラウザを開発、運営するMozilla製であることでも知られております。特徴として『高性能で高速』『強力な機能』『シンプルな記述』などが挙げられます。
Nunjucksの公式サイトはこちら>>
Nunjucksの特徴や名前の由来などの基礎知識について解説された記事はこちら>>
JsRenderとは主にJavaScriptで使用されるテンプレートエンジンです。JsRenderを使用することでブラウザ側で動的にテキストやHTMLを生成することできます。jQueryやDOMの依存関係なしに、軽量で強力な拡張可能なテンプレートエンジンとして人気を集めております。開発者は『jQuery Templates』を手掛けた「BorisMoore氏」であり、同サービスの後継としてJsRenderが誕生しました。特徴として『直感的で分かりやすい』『ビューとロジックが分離しやすい』『柔軟性が高い』などが挙げられます。
JsRenderの公式サイトはこちら>>
JsRenderの特徴やJsViewsとの関係性などの基礎知識について解説された記事はこちら>>
Handlebars.jsとは主にJavaScriptで使用されるテンプレートエンジンです。Handlebars.jsを使用することでJavaScriptの値を参照し、HTMLを生成することができます。特徴として『高速な実行環境』『学習コストが低い』『クライアントサーバ、サーバサイドの両方で対応』などが挙げられます。
Handlebars.jsの公式サイトはこちら>>
Handlebars.jsの概要や特徴などの基礎知識について解説された記事はこちら>>
Mustache.jsとは主にJavaScriptで使用されるテンプレートエンジンです。MustacheのJavaScript版です。MustacheはRuby、PHP、Perlなど様々な言語で開発されているテンプレートエンジンのため数多くの環境で使用することができます。仕組みはテンプレートとなるファイルとデータを記述したファイルをそれぞれ用意し、それらをテンプレートエンジンに潜らせることで目的のファイルを出力するプログラムとなっております。特徴として『ロジックレス』『様々な言語で使用できる』『Handlebars.jsとの互換性』などが挙げられます。
Mustache.jsの公式サイトはこちら>>
Mustache.jsの特徴や名前の由来などの基礎知識について解説された記事はこちら>>
Markoとは主にJavaScriptで使用されるテンプレートエンジンです。動的でレスポンスの速いユーザーインターフェイスを構築するためのツールとして再考されました。MarkoはHTML言語を拡張し、宣言型を用いて最新のアプリケーションの構築を実現します。数あるJavaScript向けテンプレートエンジンの中でも最も実用的であると高い人気を集めております。特徴として『軽量』『非常に早い』『簡潔な構文』などが挙げられます。
Pugとは主にJavaScriptで使用されるテンプレートエンジンです。Pugを使用することでHTMLを効率よくコーディングすることができます。Hamlの影響を強く受けてJavaScriptやNode.jsで使用することを目的に誕生しました。特徴として『閉じタグが不要』『少ない記述』『ファイルの分割管理』などが挙げられます。閉じタグが不要となるため記述にインデントの使用が重要となります。Pugを使用することでHTMLのコード量を大幅に減らせることができるという点でも高い人気を集めております。
テンプレートエンジンを理解するために初心者でも分かる構成、メリットなどの基礎知識から総勢12種類について簡単に解説させていただきました。テンプレートエンジンを一言で表すと『テンプレートとなる部分とデータモデルで表現される入力データを合成し、成果ドキュメントを出力するソフトウェア』です。主な構成要素として『データモデル』『ソーステンプレート』『成果ドキュメント』が挙げられます。テンプレートエンジンについてこの記事に書かれている最低限の内容は理解をしておくようにしましょう。