コネクト株式会社 技術情報コンテンツ | ||
[[PHPアプリケーション/Smarty]] テンプレートエンジンは本当に必要か?実は賛否両論PHPでWebアプリケーションを開発する際、テンプレートエンジンの使用について意見が分かれるケースがある。
反対を主張する方々にはある共通点がある。 SSI*1的なプログラミング・スタイルで開発を行っているために、テンプレートエンジンを使用したスタイルへの転換に要する時間やノウハウが足りない、という点だ。 テンプレートエンジンを推奨するエンジニアも、かつては同じ経験をしてきたはずである。テンプレートエンジンを採用するには、納得できるだけの理由が存在するはずである。 テンプレートエンジンの魅力テンプレートエンジンを使ったプログラミングに一度でも馴染んでしまえば、テンプレートエンジン無しでは考えられなくなるであろう。 テンプレートエンジンの魅力は、何と言ってもデザインとロジックの完全な分離であろう。 HTMLの中に特定の変数を埋め込むだけであれば、テンプレートエンジンを使う必要は無い。それこそ、<?=$var?>のように、記述してしまえば良い。 しかし、それではテンプレートエンジンの存在意義がない事になる。 では、テンプレートエンジンには、どのようなメリットがあるのだろうか。 デザインの分離Webアプリケーション開発において、デザインの分離は重要な意味を持っている。 Webアプリケーションの特徴として、アプリケーション設計フェーズの仕様がそのまま永続するという事は有り得ない。 ユーザのニーズやトレンドに応じて、比較的短期間で機能拡張する事も珍しくない。 要求される仕様追加の約半数は、デザインの変更やリンクの追加などである。 ロジックには直接関係の無い箇所であるため、HTMLを変更するだけで済みそうなのだが、デザインとロジックの分離がなされていないと、予期せぬバグが生じてしまう可能性が考えられる。 また、あちこちにスクリプトが点在しているがために、デザイン変更が容易ではないケースも考えられる。 プログラミングスタイルを理由にして、デザイン変更に多くの工数を費やしてしまっては、本末転倒ではないだろうか。 組み込み関数やマクロ言語の充実テンプレートエンジンの大半は、テンプレートに記述するだけで様々な表現を可能にする、組み込み関数やマクロ言語を実装している。 一般的な組み込み関数として、サニタイズ*2やワードラップ*3などが挙げられる。 また、DBMSから取得したデータを格納した配列変数を使って、表組みを行うための制御関数なども用意されている。 これらの関数を組み合わせるだけで、スクリプトに一切手を加えることなくデザインの変更が可能になる。 また、万が一バグが発生したとしても、デザインが崩れる等の軽度なバグで済むため、Webアプリケーション全体に影響を及ぼすようなバグには発展しない、というメリットがる。 サンプルの充実メジャーなテンプレートエンジンであれば、先人達が築き上げてきた豊富なライブラリがインターネット上で公開されている。 メーリングリストで活発な情報交換が行われているテンプレートエンジンもあるので、調べてみると良いかも知れない。 |