Yapc::Asia 2011 rejectConf Slide

1,759 views
1,742 views

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,759
On SlideShare
0
From Embeds
0
Number of Embeds
744
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Yapc::Asia 2011 rejectConf Slide

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

×