Your SlideShare is downloading. ×
0
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Yapc::Asia 2011 rejectConf Slide
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Yapc::Asia 2011 rejectConf Slide

1,545

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,545
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. TT でもなく XSlate でもなく HTML::Template(::Pro) を使うとても些細な理由 <ul><li>@s_ohira </li></ul>
  • 2. ■ 自己紹介 <ul><li>大平 誠二 ( おおひら せいじ ) </li></ul><ul><li>渋谷でモバイル関連のお仕事をしています </li></ul><ul><li>twitter: @s_ohira </li></ul>
  • 3. ■ アジェンダ <ul><li>使い始めた経緯や基本的な使い方など </li></ul><ul><li>HTML::Template を使うとても些細な理由 </li></ul><ul><li>業務で起こったとても些細な事例 </li></ul><ul><li>まとめ </li></ul>
  • 4. ■ 使い始めた経緯 <ul><li>きっかけは MovableType(MT::Template) </li></ul><ul><li>MT タグが便利そうだった </li></ul><ul><li>http://www. movabletype . jp </li></ul>
  • 5. ■ 目的 <ul><li>テンプレートエンジンの導入 </li></ul><ul><li>CMS も使えればいいな </li></ul>
  • 6. ■ 目的 <ul><li>テンプレートエンジンの導入 </li></ul><ul><li>CMS も使えればいいな </li></ul><ul><li>パフォーマンスを出せず </li></ul>
  • 7. ■ 目的 <ul><li>テンプレートエンジンの導入 </li></ul><ul><li>CMS も使えればいいな </li></ul><ul><li>パフォーマンスを出せず </li></ul><ul><li>HTML::Template を使おう </li></ul>
  • 8. ■ HTML::Template の基礎 <ul><li><TMPL_VAR NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_LOOP NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_INCLUDE NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_IF NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_UNLESS NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_ELSE> </li></ul>
  • 9. ■ Template::Toolkit
  • 10. ■ Template::Toolkit 592 ページ
  • 11. ■ Template::Toolkit 592 ページ
  • 12. ■ Template::Toolkit 592 ページ 390 ページ
  • 13. ■ HTML::Template の基礎 <ul><li><TMPL_VAR NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_LOOP NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_INCLUDE NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_IF NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_UNLESS NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_ELSE> </li></ul>
  • 14. <ul><li>長く使ってきた </li></ul>なぜ、 HTML::Template なのか?
  • 15. ■ 使ったことのあるテンプレートエンジン <ul><li>MT::Template </li></ul><ul><li>HTML::Template </li></ul><ul><li>Text::Template </li></ul><ul><li>Template::Toolkit </li></ul><ul><li>JSP </li></ul><ul><li>FreeMarker </li></ul><ul><li>Velocity </li></ul><ul><li>Tapestry </li></ul><ul><li>Nexaweb </li></ul><ul><li>JSF </li></ul><ul><li>jTemplates </li></ul><ul><li>jQueryTemplate </li></ul><ul><li>Smarty </li></ul>
  • 16. ■ 結局、 HTML::Template に戻る <ul><li>必要十分な基本機能 </li></ul>
  • 17. <ul><li>長く使ってきた </li></ul><ul><li>長く使われてきた </li></ul>なぜ、 HTML::Template なのか?
  • 18. ■ 長く使われてきた
  • 19. ■ 長く使われてきた
  • 20. ■ CPAN の検索結果
  • 21. ■ CPAN の検索結果 検索結果 419 件
  • 22. ■ CPAN の検索結果
  • 23. ■ CPAN の検索結果 検索結果 143 件
  • 24. ■ 長く使われてきた <ul><li>関連モジュールが豊富 </li></ul>
  • 25. ■ 長く使われてきた <ul><li>関連モジュールが豊富 </li></ul><ul><li>シンプルなビルトイン </li></ul><ul><li>豊富な拡張性 </li></ul>
  • 26. <ul><li>長く使ってきた </li></ul><ul><li>長く使われてきた </li></ul><ul><li>ポータビリティ </li></ul>なぜ、 HTML::Template なのか?
  • 27. ■ ポータビリティ <ul><li>多くの言語に移植されている </li></ul>
  • 28. ■ ポータビリティ <ul><li>多くの言語に移植されている </li></ul><ul><li>Java </li></ul><ul><li>PHP </li></ul><ul><li>JavaScript </li></ul><ul><li>Ruby </li></ul><ul><li>Python </li></ul>
  • 29. ■ ポータビリティ <ul><li>多くの言語に移植されている </li></ul><ul><li>Java </li></ul><ul><li>PHP </li></ul><ul><li>JavaScript </li></ul><ul><li>Ruby </li></ul><ul><li>Python </li></ul><ul><li>リソースが流用できる </li></ul>
  • 30. <ul><li>長く使ってきた </li></ul><ul><li>長く使われてきた </li></ul><ul><li>ポータビリティ </li></ul><ul><li>VIEW の本番化の権限 </li></ul>なぜ、 HTML::Template なのか?
  • 31. ■ VIEW の本番化の権限 <ul><li>SIer の仕事 </li></ul><ul><li>コードフリーズ </li></ul>
  • 32. ■ VIEW の本番化の権限 <ul><li>SIer の仕事 </li></ul><ul><li>コードフリーズ </li></ul><ul><li>B2B から B2C </li></ul><ul><li>VIEW のデプロイが頻繁 </li></ul>
  • 33. ■ 実務で遭遇した事例 1 <ul><li>期間コントロールの失敗 </li></ul>
  • 34. ■ 実務で遭遇した事例 1 <ul><li>DB の登録内容 /SQL </li></ul><ul><li>プログラム側の定数 / 変数 </li></ul><ul><li>設定ファイル </li></ul><ul><li>期間コントロールの失敗 </li></ul>
  • 35. ■ 実務で遭遇した事例 1 <ul><li>原因が増える </li></ul><ul><li>DB の登録内容 /SQL </li></ul><ul><li>プログラム側の定数 / 変数 </li></ul><ul><li>設定ファイル </li></ul><ul><li>テンプレート変数 ☚ NEW!! </li></ul><ul><li>期間コントロールの失敗 </li></ul>
  • 36. ■ 実務で遭遇した事例 2 <ul><li>原因は IF 文 </li></ul><ul><li>ELSE 節が存在しない </li></ul><ul><li>デフォルトを設定する </li></ul><ul><li>画面が真っ白 </li></ul>
  • 37. ■ 実務で遭遇した事例 3 <ul><li>サイドメニューの配列 </li></ul><ul><li>プログラム側で設定されていないテンプレート変数 </li></ul>
  • 38. ■ 実務で遭遇した事例 3 <ul><li>サイドメニューの配列 </li></ul><ul><li>見つからない </li></ul><ul><li>プログラム側で設定されていないテンプレート変数 </li></ul>
  • 39. ■ 実務で遭遇した事例 3 <ul><li>サイドメニューの配列 </li></ul><ul><li>見つからない </li></ul><ul><li>別のテンプレートで設定された変数 </li></ul><ul><li>プログラムで管理していない変数 </li></ul><ul><li>複雑化 </li></ul><ul><li>プログラム側で設定されていないテンプレート変数 </li></ul>
  • 40. ■ 実務で遭遇した事例 4 <ul><li>サービス退会が出来なくなった </li></ul><ul><li>月額課金 </li></ul><ul><li>退会ページに行けない </li></ul>
  • 41. ■ 実務で遭遇した事例 4 <ul><li>サービス退会が出来なくなった </li></ul><ul><li>月額課金 </li></ul><ul><li>退会ページに行けない </li></ul><ul><li>退会画面に遷移させるパラメタ </li></ul><ul><li>VIEW のコピペミス </li></ul>
  • 42. ■ 実務で遭遇した事例 4 <ul><li>サービス退会が出来なくなった </li></ul><ul><li>月額課金 </li></ul><ul><li>退会ページに行けない </li></ul><ul><li>退会画面に遷移させるパラメタ </li></ul><ul><li>VIEW のコピペミス </li></ul><ul><li>単純な HTML の問題 </li></ul>
  • 43. ■ 実務で遭遇した事例 <ul><li>大半がデバッグ不足 </li></ul><ul><li>修正頻度の高さ </li></ul><ul><li>急いで作ったケース </li></ul><ul><li>ロジックの追加 </li></ul><ul><li>知らないうちに本番化 </li></ul><ul><li>テストコードが困難 </li></ul>
  • 44. ■ 多機能なテンプレートエンジン <ul><li>プログラム修正同然のことも可能 </li></ul>
  • 45. ■ 多機能なテンプレートエンジン <ul><li>プログラム修正同然のことも可能 </li></ul><ul><li>chmod 0777 </li></ul>
  • 46. ■ HTML::Template の基礎 <ul><li><TMPL_VAR NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_LOOP NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_INCLUDE NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_IF NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_UNLESS NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_ELSE> </li></ul>
  • 47. ■ HTML::Template の基礎 <ul><li><TMPL_VAR NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_LOOP NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_INCLUDE NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_IF NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_UNLESS NAME=&quot;hoge&quot;> </li></ul><ul><li><TMPL_ELSE> </li></ul>
  • 48. ■ HTML::Template <ul><li>シンプルなテンプレートエンジン </li></ul>
  • 49. ■ CPAN の検索結果 検索結果 419 件
  • 50. ■ 多様な拡張性 <ul><li>必要になったら拡張モジュールを使う </li></ul><ul><li>HTML::Template::Set </li></ul><ul><li>HTML::Template::EXPR </li></ul><ul><li>and more… </li></ul>
  • 51. ■ 多様な拡張性 <ul><li>必要になったら拡張モジュールを使う </li></ul><ul><li>HTML::Template::Set </li></ul><ul><li>HTML::Template::EXPR </li></ul><ul><li>and more… </li></ul><ul><li>最初から最大の権限を与えない </li></ul>
  • 52. ■ 多様な拡張性 <ul><li>必要になったら拡張モジュールを使う </li></ul><ul><li>HTML::Template::Set </li></ul><ul><li>HTML::Template::EXPR </li></ul><ul><li>and more… </li></ul><ul><li>最初から最大の権限を与えない </li></ul><ul><li>必要になってから与えることは可能 </li></ul>
  • 53. ■ 必要十分な要素 <ul><li>VAR </li></ul><ul><li>IF </li></ul><ul><li>LOOP </li></ul>
  • 54. ■ なぜテンプレートエンジンを使うのか? <ul><li>ロジックとデザインの分離 </li></ul>
  • 55. ■ なぜテンプレートエンジンを使うのか? <ul><li>ロジックとデザインの分離 </li></ul><ul><li>出来てる? </li></ul>
  • 56. ■ デザインの分離 <ul><li>テンプレートに閉じ込めただけ </li></ul><ul><li>デザインがロジックに混入していないか? </li></ul>
  • 57. ■ なぜテンプレートエンジンを使うのか? <ul><li>ロジックとデザインの分離 </li></ul><ul><li>出来てる? </li></ul>
  • 58. ■ まとめ <ul><li>シンプルでも必要十分 </li></ul><ul><li>デザインにロジックを混入させない </li></ul><ul><li>後から拡張するという選択肢 </li></ul>
  • 59. ■ まとめ <ul><li>シンプルでも必要十分 </li></ul><ul><li>デザインにロジックを混入させない </li></ul><ul><li>後から拡張するという選択肢 </li></ul><ul><li>でも、便利なものはやっぱり使いたい! </li></ul><ul><li>選択肢を狭めるためのものではありません! </li></ul>
  • 60. <ul><li>ありがとう </li></ul><ul><li>ございました! </li></ul>TT でもなく XSlate でもなく HTML::Template(::Pro) を使うとても些細な理由

×