Mais conteúdo relacionado
Semelhante a テンプレート・エンジンVelocity (20)
テンプレート・エンジンVelocity
- 2. 自己紹介 - 全般
2016/04/22Javaツール勉強会2
九州先端科学技術研究所(ISIT)の方から来ました
職場はそこだけど所属はQuoliarc Technology Solutions Ltd.
チーフソフトウェアエンジニア(…といっても従業員は1人、院の指導教官
がCTO)
数学ソフトウェア(数値解析、数式処理)、プログラム最適化、動的再構
成可能プロセッサ向けコンパイラと来て今はPTaaSを作っています
連絡先:
Twitter: @ChihiroShiiji
Facebook: takayuki_kando
mail: kando@nerimadors.or.jp
趣味プロジェクト: TRPGオンラインセッションツールの開発
趣味: イラスト描き、コスプレ?
- 3. 自己紹介 - Velocityとの関わり
2016/04/22Javaツール勉強会3
PTaaS (Platform for TaaS)
開発ツールをネットワークのサービスとして提供する(Tool as
a Service)ためのプラットフォーム
技術的には「XMPPベースのマルチユーザ遠隔分散ビルド」
システム
Velocityの用途
分散ビルドシステムがツールのために動的に起動するVM設
定用シェルスクリプトの生成
テスト環境用Antファイルの生成
- 5. テキスト・ファイルの生成
5
プログラムの持つデータからテキストファイルを作る
用途
データ受け渡しや保存のため
テキストにしておくと検証やテストデータの作成が簡単
様々な環境の間でデータ交換ができる
可視化のため人間可読な形式で出力する
例:
近年のWebアプリケーションで生成する機会は多い
HTML、CSS、XML、YAML、JSON
伝統的には言語処理系の出力段で必要とされてきた
コンパイラ(アセンブリ・コード出力)
トランスレータ(変換後ソースコードの出力)
マクロ・プロセッサ(TeXやCプリプロセッサの展開後出力)
2016/04/22Javaツール勉強会
- 6. ファイルの生成の方式(1)
2016/04/22Javaツール勉強会6
ツリー構造とプリティプリンタ
適用局面:
構造が前もってできている
例:
XML/HTML文書のDOMとプリティプリンタ
MapやListによるオブジェクト・ツリーとYAMLやJSONライブラリの出力メソッド
イベント投入方式(仮名)
適用局面:
構造は有るがファイルの全貌が見えない
例:
各種ロガー
XML Pull parserのプリティプリンタ
テンプレート方式
適用局面:
構造は気にせずテンプレートとなる文書の部分改変で作成できる
例:
Velocity
JSP(Java Server Page)
- 9. Apache Velocity
9
Javaで割と古参の汎用テンプレートエンジン
公式サイト
Apache Velocity Site - The Apache Velocity Project
http://velocity.apache.org/
2016/04/21現在、最新版は1.7(2010年)
Java SE 8でももちろん動く
明記されてないようだがJava SE 4以上が動作条件ではないか?
依存ライブラリ
Apache Commons
Collections
https://commons.apache.org/proper/commons-collections/
Lang
https://commons.apache.org/proper/commons-lang/
2016/04/22Javaツール勉強会
- 11. VTL(Velocity Template Language)の例
11
<HTML>
<BODY>
Hello $customer.Name!
<table>
#foreach( $mud in $mudsOnSpecial )
#if ( $customer.hasPurchased($mud) )
<tr>
<td>
$flogger.getPromo( $mud )
</td>
</tr>
#end
#end
</table>
<!-- 後略 -->
Apache Velocity User Guide
http://velocity.apache.org/engine/devel/user-guide.html#What_is_Velocity より
2016/04/22Javaツール勉強会
• #~(改行)は処理命令(制御文など)
• ##~(改行)と#*~*#はコメント
• $名前、${名前}はオブジェクト参照
• 処理命令と参照以外はそのまま出力される
- 15. まとめ
15
テンプレート・エンジンの位置づけと使いどころ
構造がない文書
構造がある範囲で一定している文書
改変が一部だけに限られる文書
Velocityの紹介
サンプル
1. Ant(XML)ファイルの生成
テンプレートをリソース内に同梱する
パラメータの受け渡し
パラメータの埋め込み
2. 初期化シェルスクリプトの生成
制御命令の使用例
Velocityの構文の紹介
ハマりどころ
2016/04/22Javaツール勉強会
- 16. 参考文献
16
User Guide(Ver.1.7)
http://velocity.apache.org/engine/devel/user-guide.html
VTL Reference(Ver.1.7)
http://velocity.apache.org/engine/devel/vtl-reference-guide.html
Velocity | TECHSCORE(テックスコア)
http://www.techscore.com/tech/Java/ApacheJakarta/Velocity/in
dex/
ユーザ・ガイド(Ver.1.4)日本語訳
http://www.jajakarta.org/velocity/velocity-1.4/docs-ja/user-
guide.html
VTLリファレンス(Ver.1.4)日本語訳
http://www.jajakarta.org/velocity/velocity-1.4/docs-ja/vtl-
reference-guide.html
2016/04/22Javaツール勉強会