Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
隆行 神戸
PPTX, PDF
2,767 views
テンプレート・エンジンVelocity
Java ツール勉強会資料。テンプレートエンジンVelocityの紹介。
Software
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 16
2
/ 16
3
/ 16
4
/ 16
5
/ 16
6
/ 16
7
/ 16
8
/ 16
9
/ 16
10
/ 16
11
/ 16
12
/ 16
13
/ 16
14
/ 16
15
/ 16
16
/ 16
More Related Content
PPTX
XMPPクライアント・プログラミング
by
隆行 神戸
PPTX
JMeterをWebでしか設定できないサーバの設定自動化に使う
by
隆行 神戸
PPTX
XMPPの紹介
by
隆行 神戸
PDF
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
by
Shohei Hido
PPTX
Antプログラミング(1) - プラグイン
by
隆行 神戸
PDF
Tensor flow勉強会 (ayashiminagaranotensorflow)
by
tak9029
PPTX
Pythonによる画像処理について
by
Yasutomo Kawanishi
PDF
言語処理するのに Python でいいの? #PyDataTokyo
by
Shuyo Nakatani
XMPPクライアント・プログラミング
by
隆行 神戸
JMeterをWebでしか設定できないサーバの設定自動化に使う
by
隆行 神戸
XMPPの紹介
by
隆行 神戸
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
by
Shohei Hido
Antプログラミング(1) - プラグイン
by
隆行 神戸
Tensor flow勉強会 (ayashiminagaranotensorflow)
by
tak9029
Pythonによる画像処理について
by
Yasutomo Kawanishi
言語処理するのに Python でいいの? #PyDataTokyo
by
Shuyo Nakatani
What's hot
PDF
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
by
Toshinori Sato
PDF
Development and Experiment of Deep Learning with Caffe and maf
by
Kenta Oono
PDF
High performance python computing for data science
by
Takami Sato
PPTX
fastTextの実装を見てみた
by
Yoshihiko Shiraki
PPT
14対話bot発表資料
by
Keiichirou Miyamoto
PDF
Pyconjp2016 pyftplib
by
Shinya Okano
PDF
人工知能ハンズオン
by
yaju88
PPTX
Tensor flow勉強会3
by
tak9029
PDF
実社会・実環境におけるロボットの機械学習
by
Kuniyuki Takahashi
PDF
S18 t0 introduction
by
Takeshi Akutsu
PDF
PHP でファイルシステムを作ろう
by
shinjiigarashi
PDF
TensorFlowによるFizz Buzz
by
yaju88
PPTX
形態素解析器の比較できるPythonパッケージつくった話
by
Kensuke Mitsuzawa
PDF
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
by
順也 山口
PDF
S15 t0 introduction
by
Takeshi Akutsu
PDF
bottle.pyをつかったチャットアプリ作成チュートリアル
by
Satoshi Yamada
PDF
Pythonで業務改善をしたときにあった問題(ライト版)
by
Satoshi Yamada
PDF
プログラミング言語とシステムデザイン
by
Tsutomu Yano
PDF
画像処理でのPythonの利用
by
Yasutomo Kawanishi
PDF
S16 t1 python学習奮闘記#6
by
Takeshi Akutsu
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
by
Toshinori Sato
Development and Experiment of Deep Learning with Caffe and maf
by
Kenta Oono
High performance python computing for data science
by
Takami Sato
fastTextの実装を見てみた
by
Yoshihiko Shiraki
14対話bot発表資料
by
Keiichirou Miyamoto
Pyconjp2016 pyftplib
by
Shinya Okano
人工知能ハンズオン
by
yaju88
Tensor flow勉強会3
by
tak9029
実社会・実環境におけるロボットの機械学習
by
Kuniyuki Takahashi
S18 t0 introduction
by
Takeshi Akutsu
PHP でファイルシステムを作ろう
by
shinjiigarashi
TensorFlowによるFizz Buzz
by
yaju88
形態素解析器の比較できるPythonパッケージつくった話
by
Kensuke Mitsuzawa
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
by
順也 山口
S15 t0 introduction
by
Takeshi Akutsu
bottle.pyをつかったチャットアプリ作成チュートリアル
by
Satoshi Yamada
Pythonで業務改善をしたときにあった問題(ライト版)
by
Satoshi Yamada
プログラミング言語とシステムデザイン
by
Tsutomu Yano
画像処理でのPythonの利用
by
Yasutomo Kawanishi
S16 t1 python学習奮闘記#6
by
Takeshi Akutsu
Viewers also liked
PDF
テンプレートエンジンの話 #jjug
by
Yusuke Yamamoto
PPTX
オレオレ言語実装に役立つプル型ASTウォーカーAPI
by
隆行 神戸
PPTX
ゲームマップのためのグラフAPIの設計
by
隆行 神戸
PDF
Mustache入門
by
ina job
PPT
Thymeleafでハマったこと
by
eiryu
PDF
Thymeleafのすすめ
by
eiryu
PDF
Kancolle
by
givemegohan
テンプレートエンジンの話 #jjug
by
Yusuke Yamamoto
オレオレ言語実装に役立つプル型ASTウォーカーAPI
by
隆行 神戸
ゲームマップのためのグラフAPIの設計
by
隆行 神戸
Mustache入門
by
ina job
Thymeleafでハマったこと
by
eiryu
Thymeleafのすすめ
by
eiryu
Kancolle
by
givemegohan
テンプレート・エンジンVelocity
1.
テンプレート・エンジンVelocity 2016/04/22 Javaツール勉強会資料 QTS /
ISIT 神戸隆行(かんど たかゆき)
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ファイルの生成
4.
本日のお題 4 テンプレート・エンジンの位置づけと使いどころ Velocityの紹介
サンプル Ant(XML)ファイルの生成 テンプレートをリソース内に同梱する パラメータの受け渡し パラメータの埋め込み 初期化シェルスクリプトの生成 制御命令の使用例 Velocityの構文の紹介 嵌りどころ 2016/04/22Javaツール勉強会
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)
7.
ファイルの生成の方式(2) 2016/04/22Javaツール勉強会7 前頁の組み合わせもある ツリー構造の出力の実装にイベント投入方式や微小なテンプ レート方式を利用するようなこともある
String.format()は微小なテンプレートと見ることもできる
8.
代表的なファイルの生成の方式と得失 ツリー構造とプリティプリンタ テンプレート・エンジン 8 プログラム内のデータが持 つオブジェクトのツリー構造 とそれを構造化文書として 整形出力する出力ルーチン (プリティプリンタ)
得失 ツリー構造がある場合 様々な構造をガッツリ作る場 合に利点 ツリー構造を組み立てるのが 結構手間 「テンプレート」となる文書の 一部に値を埋め込んだり、 条件分岐や反復を埋め込 んで文書の一部を条件に応 じて変形して出力する 得失 ツリー構造がない場合でも利 用し易い パラメタの埋め込みなど一部 だけを改変する場合に特に便 利 生成するごとに構造が大きく 変わる場合には却って手間 2016/04/22Javaツール勉強会
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ツール勉強会
10.
Velocity Engine Velocityの処理の流れ 2016/04/22Javaツール勉強会10 VTLで記述される テンプレート VelocityContex t (実態は <名前→オブ ジェクト>マッ プ) Template (コンパイル済 テンプレート) マージ処理 出力 テンプレート コンパイラ プログラムから データ供給
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ツール勉強会 • #~(改行)は処理命令(制御文など) • ##~(改行)と#*~*#はコメント • $名前、${名前}はオブジェクト参照 • 処理命令と参照以外はそのまま出力される
12.
サンプル1 Ant(XML)ファイルの生成 2016/04/22Javaツール勉強会12 Gist: https://gist.github.com/TakayukiKando/e6a49a4c5ea7e6 95a5eb03757ef2458d
利用機能 テンプレートをリソース内に同梱する パラメータの受け渡し パラメータの埋め込み 利用動機 極一部のパラメタしか置き変えない 将来置き換えるパラメタは増えるかも
13.
サンプル2 初期化シェルスクリプトの生成 2016/04/22Javaツール勉強会13 Gist: https://gist.github.com/TakayukiKando/cc504de4e81b273af12 59ed2ea6fb3b4
利用機能 行コメント## 制御命令(#set, #parse, #if, #foreach) 参照オブジェクトのメソッド呼び出し 利用動機 パラメータが変っても変わらない決まり切った構文が結構多い 最初は自前でスクリプト生成Factory Objectパターンで実装していたが メンテナンスが全然楽でなかったので移行 OS固有の仕組みをテンプレートにカプセル化 テンプレート差し替えで複数のOSに対応できる 最初はFactory Objectのパラメタにしようと思っていたがパラメタだけで 済まなかった
14.
Velocityハマりポイント 14 Apache Commonsライブラリに依存している
collectionsとlang 変数はVelocityContextを通じて明示的に渡す必要があ る 渡し忘れに注意 オブジェクトのプロパティ参照構文がオブジェクトのフィー ルド参照に見えるが実際はgetter呼び出しの略記 構文が似ているので油断しているとついフィールドを参照しよ うとしてしまう 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ツール勉強会
Download