SlideShare a Scribd company logo
Webデザイナーと
Webエンジニアの
チームワークを
加速させる
テンプレートエンジン
Mixer2	

er2	
Mix

Devlove現場甲子園
2013-11-09
by @nabedge
http://mixer2.org/
自己紹介	

•  わたなべ
•  SI屋の技術屋さん
•  @nabedge
•  http://nabedge.blogspot.jp

2
Mixer2	

http://mixer2.org	

JavaでWebアプリを作るための
テンプレートエンジン	
3
ごめんなさい	
•  コッテコテにJavaの話です
– PHPerな方、Rubyistな方、ごめんなさい。

•  コッテコテにサーバサイドの話です
– 「いまどきのビューはクライアントサイドで
Backbone.jsでしょ プギャーm9(^Д^)」
とか...

•  Webサービスのビューのテンプレートを
100%pureなXHTMLとCSSで書きたい!
ってところは共感してもらえるかも?	
4
ところで、Javaの世界で
テンプレートエンジンと言えば?	

5
テンプレートエンジン	
JSP:一番身近なテンプレートエンジン	
こんにちは
<% if (name == null) { %>
ゲストさん
<% } else { %>
<%= name %>さん
<% } %>	
通常のJava言語、EL式、カスタムタグで書く	
6
テンプレートエンジン	
Velocity:老舗	
こんにちは
#if (name == null) {
ゲストさん
#else
${name}さん
#end	
VTL = Velocity Template

Languageで書く	
7
要するに?	

たいていのテンプレートエンジンは、
何らかの

テンプレート記述言語(っぽいもの)
の文法、記法を覚えなければならな
い。	
8
デザイナーとエンジニアの共通言語は?	
1.  Webデザイナは*.jspも書けるべき?
2.  Webデザイナは*.vmも書けるべき?
3.  Webデザイナは*.ftlも書けるべき?
4.  Webデザイナは*.erbも書けるべき?
5.  Webデザイナは*.phpも書けるべき?
6.  Webデザイナは*.mdも書けるべき?
すべて、エンジニアの都合をデザイナに
押しつけてるだけじゃん!	
9
ビューにロジックが埋まってるのもNG	
これをWebデザイナがメンテする?できる?	
こんにちは
<% if (name == null) { %>
ゲストさん
<% } else { %>
<%= name %>さん
<% } %>	
10
Webエンジニアと
Webデザイナの
共通言語は
htmlとcssだけだと思う	
11
Mixer2	
Mixer2のテンプレートは純粋なXHTMLとCSS	
こんにちは<span id=“name”>ゲスト</span>さん

値の埋め込みやロジックは普通のJava	
Span span = html.getById(“name”, Span.class);
span.unsetContent();
span.getContent.add(“ヤマダ”);
// これで <span id=“name”>ヤマダ</span>さん
// が出力される
12
最大のメリット	

htmlモックアップを
JSPに書き変えずに
そのまま使える	
13
デモ	

14
これでデザイナとプログラマが仲良く仕事できる!	

プログラマとデザイナの
取り決め事項
1. 商品情報のdivタグは
id=“itemBox”にしよう。
2. 商品名はspanタグで
id=“itemName”
3. …..その他の情報も同様にclass属
性やid属性を決めておけばよい。	
15
Mixer2の動作原理	
1.  Mixer2はXHTMLパーサーである。
2.  Mixer2はXHTMLジェネレーターである。
3.  要するに、Mixer2はObject/XHTMLマッパーである。

XHTML	
<html>	
 
	
 	
 <head>	
 
	
 	
 …	
 
	
 	
 </head>	
 
	
 	
 <body>	
 
	
 	
 	
 …	
 
	
 	
 </body>	
 
</html>	
 

Javaオブジェクト	
loadHtmlTemplate	

Html	

Mixer2
Head	
 Body	
saveToString	
16
Mixer2の特徴(の一つ)	

HTML5のタグや
data-*属性なども
もちろんOK!	

Mixer2では、htmlタグを
Javaオブジェクトとして扱う
ので、実質なんでもできる。

17
タグのスニペットだけを作ることも可能	
1. 特定のタグ(ここではdiv)だけを文字列化	
Div div = TagCreator.div();
div.getContent().add(“Hello World!”);
String str = m2Engine.saveToString(div);	
2. ほかのテンプレート形式に混ぜて出力可能	
<%-- JSP --%>	
<html>	
<body>	
<%=str %>	
</body>	
</html>	

<html>	
<body>	
<div>Hello World !</div>	
</body>	
</html>	
18
JSPでは難しいビューのテストも楽々!	
本体コード	
 span.unsetContent();

span.getContent().add(“Hello”);	
タグ型
オブジェクト
加工前	

処理	

タグ型
オブジェクト
加工後	

テスト	
 assertThat(

span.getContent().get(0).toString()
,is(“Hello”));	
19
Mixer2の三つの側面	
•  JSPやVelocityの代替としてのMixer2
–  例:さっきのデモ

•  XHTMLパーサーとしてのMixer2
–  例:さっきのデモ
–  例:モール型ECサイトやブログサービスのように
自由にデザインしたhtmlをそのまま使いたい場合

•  XHTMLタグスニペット生成器としてのMixer2
–  例:JSPのtaglibに近い使い方
•  Taglibを自作するよりは簡単です!	
20
ご静聴ありがとうございました	

よろしくね!
mixer2.org	

21

More Related Content

What's hot (20)

PPTX
Vue template-parserを作っている話
Koki Natsume
 
PDF
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
 
PDF
PHP Application E2E with Capybara
Yoshiaki Yoshida
 
PDF
High Performance Gulp
Keisuke Imura
 
PPT
Perl Beginners #7 おとなのWAF
Munenori Sugimura
 
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
 
ODP
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
 
PDF
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
Jun-ichi Sakamoto
 
PDF
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
 
PDF
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
 
PDF
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
 
PDF
Blazor 触ってみた
Oda Shinsuke
 
PDF
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
 
PDF
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
Yuki Minakawa
 
PPTX
Rails勉強会資料
Yoshimitsu Ogawa
 
PPTX
20191003 classi night-04
Akihiko Kigure
 
PPT
Antのススメ
Tatsumi Naganuma
 
PDF
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
 
ODP
HTML5 開発環境の紹介
tomo_masakura
 
PDF
VisualStudinoの役に立ちそうな拡張機能をまとめてみた
ytanno
 
Vue template-parserを作っている話
Koki Natsume
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
 
PHP Application E2E with Capybara
Yoshiaki Yoshida
 
High Performance Gulp
Keisuke Imura
 
Perl Beginners #7 おとなのWAF
Munenori Sugimura
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
 
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
 
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
Jun-ichi Sakamoto
 
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
 
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
 
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
 
Blazor 触ってみた
Oda Shinsuke
 
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
 
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
Yuki Minakawa
 
Rails勉強会資料
Yoshimitsu Ogawa
 
20191003 classi night-04
Akihiko Kigure
 
Antのススメ
Tatsumi Naganuma
 
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
 
HTML5 開発環境の紹介
tomo_masakura
 
VisualStudinoの役に立ちそうな拡張機能をまとめてみた
ytanno
 

Similar to 201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園 (6)

PDF
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
 
PDF
Introduction to web development 1
hideaki honda
 
PDF
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
Jun Futagawa
 
PDF
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
 
PDF
Htmlコーディングの効率化 前編
Yasuhito Yabe
 
PDF
Visual Web Developer 2010 とExpression Web 4 で構築する HTML5 と JavaScript
Osamu Monoe
 
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
 
Introduction to web development 1
hideaki honda
 
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
Jun Futagawa
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
 
Htmlコーディングの効率化 前編
Yasuhito Yabe
 
Visual Web Developer 2010 とExpression Web 4 で構築する HTML5 と JavaScript
Osamu Monoe
 
Ad

More from Y Watanabe (11)

PDF
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
 
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
 
PDF
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
Y Watanabe
 
PDF
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
Y Watanabe
 
PDF
properties, yaml, and me
Y Watanabe
 
PDF
テストゼロからイチに進むための戦略と戦術
Y Watanabe
 
PDF
The cost of learning - advantage of mixer2
Y Watanabe
 
PDF
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
Y Watanabe
 
PDF
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
 
PDF
Mixer2によるdynamic css sprite 201309第三回渋谷java
Y Watanabe
 
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
 
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
Y Watanabe
 
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
Y Watanabe
 
properties, yaml, and me
Y Watanabe
 
テストゼロからイチに進むための戦略と戦術
Y Watanabe
 
The cost of learning - advantage of mixer2
Y Watanabe
 
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
Y Watanabe
 
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
 
Mixer2によるdynamic css sprite 201309第三回渋谷java
Y Watanabe
 
Ad

Recently uploaded (7)

PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 

201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園