Yapc::Asia 2011 rejectConf Slide

60
TT でででで XSlate でででで HTML::Template(::Pro) ででででででででででで @s_ohira

Transcript of Yapc::Asia 2011 rejectConf Slide

Page 1: Yapc::Asia 2011 rejectConf Slide

TT でもなく XSlate でもなくHTML::Template(::Pro) を使うとても些細な理由

@s_ohira

Page 2: Yapc::Asia 2011 rejectConf Slide

■ 自己紹介

大平 誠二 ( おおひら せいじ ) 渋谷でモバイル関連のお仕事をしていま

す twitter: @s_ohira

Page 3: Yapc::Asia 2011 rejectConf Slide

■ アジェンダ

使い始めた経緯や基本的な使い方など HTML::Template を使うとても些細な理由 業務で起こったとても些細な事例 まとめ

Page 4: Yapc::Asia 2011 rejectConf Slide

■ 使い始めた経緯

きっかけは MovableType(MT::Template) MT タグが便利そうだった http://www.movabletype.jp

Page 5: Yapc::Asia 2011 rejectConf Slide

■ 目的

テンプレートエンジンの導入 CMS も使えればいいな

Page 6: Yapc::Asia 2011 rejectConf Slide

■ 目的

テンプレートエンジンの導入 CMS も使えればいいな パフォーマンスを出せず

Page 7: Yapc::Asia 2011 rejectConf Slide

■ 目的

テンプレートエンジンの導入 CMS も使えればいいな パフォーマンスを出せず HTML::Template を使おう

Page 8: Yapc::Asia 2011 rejectConf Slide

■HTML::Template の基礎

<TMPL_VAR NAME="hoge"> <TMPL_LOOP NAME="hoge"> <TMPL_INCLUDE NAME="hoge"> <TMPL_IF NAME="hoge"> <TMPL_UNLESS NAME="hoge"> <TMPL_ELSE>

Page 9: Yapc::Asia 2011 rejectConf Slide

■Template::Toolkit

Page 10: Yapc::Asia 2011 rejectConf Slide

592 ページ

■Template::Toolkit

Page 11: Yapc::Asia 2011 rejectConf Slide

592 ページ

■Template::Toolkit

Page 12: Yapc::Asia 2011 rejectConf Slide

592 ページ 390 ページ

■Template::Toolkit

Page 13: Yapc::Asia 2011 rejectConf Slide

■HTML::Template の基礎

<TMPL_VAR NAME="hoge"> <TMPL_LOOP NAME="hoge"> <TMPL_INCLUDE NAME="hoge"> <TMPL_IF NAME="hoge"> <TMPL_UNLESS NAME="hoge"> <TMPL_ELSE>

Page 14: Yapc::Asia 2011 rejectConf Slide

長く使ってきた

なぜ、 HTML::Template なのか?

Page 15: Yapc::Asia 2011 rejectConf Slide

■ 使ったことのあるテンプレートエンジン

MT::Template HTML::Template Text::Template Template::Toolkit JSP FreeMarker Velocity

Tapestry Nexaweb JSF jTemplates jQueryTemplate Smarty

Page 16: Yapc::Asia 2011 rejectConf Slide

■ 結局、 HTML::Template に戻る

必要十分な基本機能

Page 17: Yapc::Asia 2011 rejectConf Slide

長く使ってきた 長く使われてきた

なぜ、 HTML::Template なのか?

Page 18: Yapc::Asia 2011 rejectConf Slide

■ 長く使われてきた

Page 19: Yapc::Asia 2011 rejectConf Slide

■ 長く使われてきた

Page 20: Yapc::Asia 2011 rejectConf Slide

■CPAN の検索結果

Page 21: Yapc::Asia 2011 rejectConf Slide

■CPAN の検索結果

検索結果 419 件

Page 22: Yapc::Asia 2011 rejectConf Slide

■CPAN の検索結果

Page 23: Yapc::Asia 2011 rejectConf Slide

■CPAN の検索結果

検索結果 143 件

Page 24: Yapc::Asia 2011 rejectConf Slide

■ 長く使われてきた

関連モジュールが豊富

Page 25: Yapc::Asia 2011 rejectConf Slide

■ 長く使われてきた

関連モジュールが豊富 シンプルなビルトイン 豊富な拡張性

Page 26: Yapc::Asia 2011 rejectConf Slide

長く使ってきた 長く使われてきた ポータビリティ

なぜ、 HTML::Template なのか?

Page 27: Yapc::Asia 2011 rejectConf Slide

■ ポータビリティ

多くの言語に移植されている

Page 28: Yapc::Asia 2011 rejectConf Slide

■ ポータビリティ

多くの言語に移植されている Java PHP JavaScript Ruby Python

Page 29: Yapc::Asia 2011 rejectConf Slide

■ ポータビリティ

多くの言語に移植されている Java PHP JavaScript Ruby Python

リソースが流用できる

Page 30: Yapc::Asia 2011 rejectConf Slide

長く使ってきた 長く使われてきた ポータビリティ VIEW の本番化の権限

なぜ、 HTML::Template なのか?

Page 31: Yapc::Asia 2011 rejectConf Slide

■ VIEW の本番化の権限

SIer の仕事 コードフリーズ

Page 32: Yapc::Asia 2011 rejectConf Slide

■ VIEW の本番化の権限

SIer の仕事 コードフリーズ B2B から B2C VIEW のデプロイが頻繁

Page 33: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 1

期間コントロールの失敗

Page 34: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 1

DB の登録内容 /SQL プログラム側の定数 / 変数 設定ファイル

期間コントロールの失敗

Page 35: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 1

原因が増える

DB の登録内容 /SQL プログラム側の定数 / 変数 設定ファイル テンプレート変数 ☚NEW!!

期間コントロールの失敗

Page 36: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 2

原因は IF 文 ELSE 節が存在しない デフォルトを設定する

画面が真っ白

Page 37: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 3

サイドメニューの配列

プログラム側で設定されていないテンプレート変数

Page 38: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 3

サイドメニューの配列 見つからない

プログラム側で設定されていないテンプレート変数

Page 39: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 3

サイドメニューの配列 見つからない 別のテンプレートで設定された変数 プログラムで管理していない変数 複雑化

プログラム側で設定されていないテンプレート変数

Page 40: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 4

サービス退会が出来なくなった 月額課金 退会ページに行けない

Page 41: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 4

サービス退会が出来なくなった 月額課金 退会ページに行けない 退会画面に遷移させるパラメタ VIEW のコピペミス

Page 42: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例 4

サービス退会が出来なくなった 月額課金 退会ページに行けない 退会画面に遷移させるパラメタ VIEW のコピペミス 単純な HTML の問題

Page 43: Yapc::Asia 2011 rejectConf Slide

■ 実務で遭遇した事例

大半がデバッグ不足

修正頻度の高さ 急いで作ったケース ロジックの追加 知らないうちに本番化 テストコードが困難

Page 44: Yapc::Asia 2011 rejectConf Slide

■ 多機能なテンプレートエンジン

プログラム修正同然のことも可能

Page 45: Yapc::Asia 2011 rejectConf Slide

■ 多機能なテンプレートエンジン

プログラム修正同然のことも可能

chmod 0777

Page 46: Yapc::Asia 2011 rejectConf Slide

■ HTML::Template の基礎

<TMPL_VAR NAME="hoge"> <TMPL_LOOP NAME="hoge"> <TMPL_INCLUDE NAME="hoge"> <TMPL_IF NAME="hoge"> <TMPL_UNLESS NAME="hoge"> <TMPL_ELSE>

Page 47: Yapc::Asia 2011 rejectConf Slide

■ HTML::Template の基礎

<TMPL_VAR NAME="hoge"> <TMPL_LOOP NAME="hoge"> <TMPL_INCLUDE NAME="hoge"> <TMPL_IF NAME="hoge"> <TMPL_UNLESS NAME="hoge"> <TMPL_ELSE>

Page 48: Yapc::Asia 2011 rejectConf Slide

■ HTML::Template

シンプルなテンプレートエンジン

Page 49: Yapc::Asia 2011 rejectConf Slide

■ CPAN の検索結果

検索結果 419 件

Page 50: Yapc::Asia 2011 rejectConf Slide

■ 多様な拡張性

必要になったら拡張モジュールを使う HTML::Template::Set HTML::Template::EXPR and more…

Page 51: Yapc::Asia 2011 rejectConf Slide

■ 多様な拡張性

必要になったら拡張モジュールを使う HTML::Template::Set HTML::Template::EXPR and more…

最初から最大の権限を与えない

Page 52: Yapc::Asia 2011 rejectConf Slide

■ 多様な拡張性

必要になったら拡張モジュールを使う HTML::Template::Set HTML::Template::EXPR and more…

最初から最大の権限を与えない 必要になってから与えることは可能

Page 53: Yapc::Asia 2011 rejectConf Slide

■ 必要十分な要素

VAR IF LOOP

Page 54: Yapc::Asia 2011 rejectConf Slide

■ なぜテンプレートエンジンを使うのか?

ロジックとデザインの分離

Page 55: Yapc::Asia 2011 rejectConf Slide

■ なぜテンプレートエンジンを使うのか?

ロジックとデザインの分離 出来てる?

Page 56: Yapc::Asia 2011 rejectConf Slide

■ デザインの分離

テンプレートに閉じ込めただけ デザインがロジックに混入していないか?

Page 57: Yapc::Asia 2011 rejectConf Slide

■ なぜテンプレートエンジンを使うのか?

ロジックとデザインの分離 出来てる?

Page 58: Yapc::Asia 2011 rejectConf Slide

■ まとめ

シンプルでも必要十分 デザインにロジックを混入させない 後から拡張するという選択肢

Page 59: Yapc::Asia 2011 rejectConf Slide

■ まとめ

シンプルでも必要十分 デザインにロジックを混入させない 後から拡張するという選択肢 でも、便利なものはやっぱり使いたい! 選択肢を狭めるためのものではありませ

ん!

Page 60: Yapc::Asia 2011 rejectConf Slide

ありがとうございました!

TT でもなく XSlate でもなくHTML::Template(::Pro) を使うとても些細な理由