Velocity,微妙・・・
Velocityを初体験してみた。SQLのCREATE TABLE文を出力するためのテンプレートを書いてみたのだが,これがなかなかうまく書けない。
テンプレート内の記述は,基本的にそのまま結果となる。もちろん,改行もそのまま反映される。単純な文字列置換ならVelocityは非常に便利だと感じた。でも,条件によって置換する文字列を変更したりしだすと,途端にテンプレートが汚くなる。しかも可読性をあげようと改行を入れたりインデントしたりすることができない(それが結果に反映されてしまうから)。
もちろん見た目にこだわらずに,最低限機能を満たす出力であれば問題はない。ぶっちゃけCREATE TABLE文が1行になってしまっても,自動生成されたものだからという理由で問題にはならない。
でも,でも,でも。やっぱり見た目にはこだわりたいし,最低限のレベルが存在するのだ。
テンプレートの可読性を確保し,しかも置換結果の見た目もそこそこのものにするには,ちょっとしたテクニックが必要かも。例えば,「#* *#」というコメントを使ってインデントしたり,「#if - #end」の直後の改行は結果に反映されないことを利用して複数行にしたり,といった技だ。
特に「#* *#」は,Eclipseのプラグインの Veloeclipseに搭載されているエディタで灰色に色づけされるため,あたかもインデントされたように見える。なかなかこれはいい感じ。
あと,配列の長さを,例えば「columns.length」で参照することはできないらしい。#foreachができるんだから,配列の長さ取得くらいサポートしてくれてもおかしくないと思うのだが。。。かゆいところに手がなかなか届かない。
Velocity,JSP並みにいろいろ記述できると勝手に想像していたのだが,意外とあっさりしているのには拍子抜けしてしまった。単純なだけに,慣れるまでには少し時間がかかりそうだ。