スクリプトレットバッシングの時代にズダボロに引き裂かれたStrutsと、グングン成長したRails

ちょっと古いエントリだけど、これは言及しておかねばなるまい。

スクリプトレットパッシングの猛吹雪の中にいたのは、Struts(JSP)だけではない。

Rails(eRuby)もいた、そしてRailsは、バッシングをくぐり抜けた。

過酷な時代だった。

スクリプトレットで、メンテ不能になったJSPが、世間にあふれたことで、開発者は、JSPを信用しなくなり、HTMLベースのテンプレートエンジンがもてはやされた。

スクリプトレットバッシングの時代にズダボロに引き裂かれたStrutsと、グングン成長したRails - yvsu pron. yas

そうなのかな。Java ではわりと早い段階から scriptlet を排除して custom tag を使うという流れになっていたと思うけど。
またメンテ不能になるような JSP は scriptlet のせいではなく、単に view layer とそれ以外の layer との分離ができてないだけ。scriptlet を custom tag で書き換えても、view layer が分離できていないならメンテ不能になるのは同じ。scriptlet のあるなしは本質ではない。
あと、Java では HTML ベースの template engine はほとんど流行ってないけど、どの engine のことをいっているんだろうか。

問題は、スクリプトレットに何でもロジックを書いてしまうという、開発者の姿勢なのに、なぜか、みんな、JSPまで否定してしまった。

JSP は否定されているとは思わないな。未だに Velocity より JSP のほうがよく使われているし。

つまり、このJSPへの過度なバッシングは、単なる不運ではなく人災だった。

「誰の責任でもない」というのは嘘だ。

この惨劇の責任を負うべき人たちは、たしかにいる。

それが誰なのかを明言してほしいっす。
scriptlet が custom tag になったところで、HTML template に logic を埋め込んでいる点ではまったく同じなんだけど、それに気づかず、とにかく scriptlet を攻撃している人は多い。そういう人たちのことを指しているならうれしい。

Javaの世界も例外ではなかった。

叩かれるのを承知で正直に告白すると、ぼくは、いつもろくにJSPは使わずに、HTMLベースのテンプレートエンジンを開発していた。僕のHTMLテンプレートエンジンに対するノウハウはグングン伸びていった。それに比例して、はぶさんの体重も肥え太った。

Seasar の temlate engine って Mayaa しかなかったと思うけど、ひがさんのは公開されていないのかな。

Railsも要領よくババを交わした。
すべてRubyで記述することがいいことなんだという方針を打ち出すことで、スクリプトレットを善に変えてしまった。

これはちょっと誤解を招く表現かも。
Rails が肯定したのは、template engine 独自の言語や custom tag を使う必要はなく、Ruby をそのまま使えばいいということ。でも template file に logic を直接埋め込むことについては、Rails 界隈でも嫌っている人がけっこう多い。
だって eRuby ファイルだと Dreamweaver とか使えないじゃん。

あれから、4年がたった。HTMLベースのテンプレートエンジンのノウハウもたまり、その長所も短所も見えるようになってきた。

今から思うと、JSPは過剰にバッシングされてきた。その原因の一端は、ほかならぬ私自身にある。

きれいなHTML(Viewテンプレート)が、重要だという気持ちは、今も変わらない。ただし、きれいなHTMLがコストを生むことも十分に理解できた。

コストというのは、Teedaにおける規約だったり、他のフレームワークにおけるView用の設定ファイルなどだ。

今の私がしなければいけないことは、HTMLベースのテンプレートエンジンのメリット・デメリットをきちんと明らかにして、人々が選択する際の情報を増やすことだろう。

おお、これは期待大だ。

また、JSPに対する誤解をきちんと解くことだろう。

JSPは、きれいなHTMLが、それほど重要でない局面では、多分一番よい選択肢だと思う。

ELやファンクションを組み合わせると、すごく手軽にサーバサイドの情報をViewの中に埋め込める。パフォーマンスは良いし、いざとなれば、スクリプトレットもかける。

スクリプトレットはJSPに直接記述できる手軽なファンクションとして使えば、JSPがスパゲティーになる危険は少ない。

これだと、Velocity や FreeMarker に対する advantage はない。Velocity や FreeMarker だとメソッド呼び出しが使えるし、servlet container なしでも使えるし、パフォーマンスも JSP より優れている。
あと、EL と scriptlet って相性悪いんじゃなかったっけ? EL で設定した変数を scriptlet で使えなかったような気が。