Java/PHPでperlのHTML::Template互換ライブラリ

投稿日: 2014年10月19日

Pocket

ちゃっとCE作ってたのが17年前か〜と、自分でビックリした @incmplt です。
仕事ではC言語(MS-C/Visual C)からはじまり、Java,perl,python,PHPと時代に合わせて開発してきました。
#個人だとBASICとZ80 ASMから始まり…何年前だろ?? 確実に30年以上前かな??

HTML::Templateって何?

最近、昔のプログラム(perl)をPHPに焼き直したり、Java/Tomcatに焼き直したりすることが多くあります。
perlの時代、CGIでデザインとロジックを分離するために重宝していたのが HTML::Template というライブラリ。

こんな感じのHTMLファイルと、次のようなperlプログラムを用意します。

これで簡単に次のような出力が作れます。

もう2000年くらいは、これで色々なCGIプログラムを作っていました。
今もかなりの割合で使っています。

なぜレガシーなテンプレートシステムを使うのか?

HTML::Templateが便利だったのは「テンプレート側にロジックを作りたくても作る方法がない」こと。
最近のテンプレートシステムは便利なのですが、テンプレートにロジックを書き込めるのがデメリットになることがあります。

ロジック開発とデザインの両方を少人数でやっていると、どうしても「ちょっと直したいからViewに処理を追加」をやってしまいます。これをやってしまうと、どんどん分離が出来なくなり最終的に破綻してしまうというケースを良く見てきました。
何回もこれで泣いてます。テンプレートとロジック(最近だとViewとModel/Controllerですかね)の分離が出来ない。

ということで、ロジックをテンプレートに書きたくても書けない HTML::Template互換のテンプレートライブラリが重宝しています。

Java と PHP の HTML::Template互換ライブラリ

Java と PHP の HTML::Template互換ライブラリには、次のものがあります。

Java: HtmlTemplateクラス
http://www.k-nextage.co.jp/product/htmltemplate/htmltemplate.html
PHP: HTML::Templateクラス
http://phphtmltemplate.sourceforge.net

これで開発とデザインの分離ができるので、まだまだ当分 HTML::Templateの記述方法でプログラムを作っていきそうです。
テンプレにロジックを書き込む悪いクセがなくなれば、HTML::Templateじゃなくても良いのですが、書けるとなったら書いちゃいますからね。


Pocket