ちゃっとCE作ってたのが17年前か〜と、自分でビックリした @incmplt です。
仕事ではC言語(MS-C/Visual C)からはじまり、Java,perl,python,PHPと時代に合わせて開発してきました。
#個人だとBASICとZ80 ASMから始まり…何年前だろ?? 確実に30年以上前かな??
Table of Contents
HTML::Templateって何?
最近、昔のプログラム(perl)をPHPに焼き直したり、Java/Tomcatに焼き直したりすることが多くあります。
perlの時代、CGIでデザインとロジックを分離するために重宝していたのが HTML::Template というライブラリ。
1 2 3 4 5 6 7 8 | <html> <head><title>Test Template</title></head> <body> My Home Directory is <TMPL_VAR NAME=HOME> <p> My Path is set to <TMPL_VAR NAME=PATH> </body> </html> |
こんな感じのHTMLファイルと、次のようなperlプログラムを用意します。
1 2 3 4 5 6 7 8 9 10 11 12 | #!/usr/bin/perl -w use HTML::Template; # open the html template my $template = HTML::Template->new(filename => 'test.tmpl'); # fill in some parameters $template->param(HOME => $ENV{HOME}); $template->param(PATH => $ENV{PATH}); # send the obligatory Content-Type and print the template output print "Content-Type: text/html\n\n", $template->output; |
これで簡単に次のような出力が作れます。
1 2 | My Home Directory is /home/some/directory My Path is set to /bin;/usr/bin |
もう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じゃなくても良いのですが、書けるとなったら書いちゃいますからね。