Yapc::Asia 2011 rejectConf Slide

Post on 31-May-2015

1.539 views 1 download

Transcript of Yapc::Asia 2011 rejectConf Slide

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

@s_ohira

■ 自己紹介

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

す twitter: @s_ohira

■ アジェンダ

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

■ 使い始めた経緯

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

■ 目的

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

■ 目的

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

■ 目的

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

■HTML::Template の基礎

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

■Template::Toolkit

592 ページ

■Template::Toolkit

592 ページ

■Template::Toolkit

592 ページ 390 ページ

■Template::Toolkit

■HTML::Template の基礎

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

長く使ってきた

なぜ、 HTML::Template なのか?

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

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

Tapestry Nexaweb JSF jTemplates jQueryTemplate Smarty

■ 結局、 HTML::Template に戻る

必要十分な基本機能

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

なぜ、 HTML::Template なのか?

■ 長く使われてきた

■ 長く使われてきた

■CPAN の検索結果

■CPAN の検索結果

検索結果 419 件

■CPAN の検索結果

■CPAN の検索結果

検索結果 143 件

■ 長く使われてきた

関連モジュールが豊富

■ 長く使われてきた

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

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

なぜ、 HTML::Template なのか?

■ ポータビリティ

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

■ ポータビリティ

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

■ ポータビリティ

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

リソースが流用できる

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

なぜ、 HTML::Template なのか?

■ VIEW の本番化の権限

SIer の仕事 コードフリーズ

■ VIEW の本番化の権限

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

■ 実務で遭遇した事例 1

期間コントロールの失敗

■ 実務で遭遇した事例 1

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

期間コントロールの失敗

■ 実務で遭遇した事例 1

原因が増える

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

期間コントロールの失敗

■ 実務で遭遇した事例 2

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

画面が真っ白

■ 実務で遭遇した事例 3

サイドメニューの配列

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

■ 実務で遭遇した事例 3

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

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

■ 実務で遭遇した事例 3

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

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

■ 実務で遭遇した事例 4

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

■ 実務で遭遇した事例 4

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

■ 実務で遭遇した事例 4

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

■ 実務で遭遇した事例

大半がデバッグ不足

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

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

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

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

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

chmod 0777

■ HTML::Template の基礎

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

■ HTML::Template の基礎

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

■ HTML::Template

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

■ CPAN の検索結果

検索結果 419 件

■ 多様な拡張性

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

■ 多様な拡張性

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

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

■ 多様な拡張性

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

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

■ 必要十分な要素

VAR IF LOOP

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

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

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

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

■ デザインの分離

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

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

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

■ まとめ

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

■ まとめ

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

ん!

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

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