Your SlideShare is downloading. ×
0
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
Why-is-ImplementationPattterns-important-so-much
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

Why-is-ImplementationPattterns-important-so-much

2,594

Published on

Ruby Sapporo Night Vol.5

Ruby Sapporo Night Vol.5

Published in: Business, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,594
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
27
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. 2008-03-19(水); Apple Store Sapporo Ruby Sapporo Night vol.5何故そんなにもImplementationPatternsは重要なのか Pattern is a key connects Ruby and Agile 日本Rubyの会 / Ruby札幌 島田浩二 snoozer.05@ruby-sapporo.org
  • 2. Our initial success using a pattern language for user interface design has left us quit enthusiastic aboutpossibilities for computer users designing and programming their own applications. パターン言語の使用が最初に成功したとき、 コンピューター・ユーザーたちが 自分自身のアプリケーションを自ら設計し、プログラミングするという可能性があるのだということに、 我々は大変熱狂した - Kent Beck, Ward Cunningham「オブジェクト指向プログラムのためのパターン言語の使用」
  • 3. しまだこうじhttp://iddy.jp/profile/snoozer05✓ ふつうのフリーランスプログラマ✓ 日本Rubyの会 ✓ Ruby札幌 運営 ✓ RubyKaigi 2007 当日スタッフ ✓ るびま、るりま✓ プログラミングの楽しさを共有したい✓ 自分の知らないコトやヒトに出会いたい
  • 4. しまだこうじhttp://iddy.jp/profile/snoozer05✓ Implementation Patterns Group ✓ Implementation PatternsとSBPPを味わ うためのグループです http://implementationpatterns.g.hatena.ne.jp/
  • 5. Implementation Patterns
  • 6. Implementation Patterns Kent Beck待望の新刊
  • 7. Kent Beckhttp://www.flickr.com/photos/improveit/1574912686/
  • 8. Kent Beck ✓ パターンhttp://www.flickr.com/photos/improveit/1574912686/
  • 9. Kent Beck ✓ パターン ✓ CRCカードhttp://www.flickr.com/photos/improveit/1574912686/
  • 10. Kent Beck ✓ パターン ✓ CRCカード ✓ XPhttp://www.flickr.com/photos/improveit/1574912686/
  • 11. Kent Beck ✓ パターン ✓ CRCカード ✓ XP ✓ TDDhttp://www.flickr.com/photos/improveit/1574912686/
  • 12. Kent Beck ✓ パターン ✓ CRCカード ✓ XP ✓ TDD ✓ JUnithttp://www.flickr.com/photos/improveit/1574912686/
  • 13. キーマン(鍵的じゃない意味で)
  • 14. Implementation Patterns Kent Beck待望の新刊
  • 15. パターン?What is Pattern?
  • 16. オブジェクト指向における再利用のためのデザインパターン
  • 17. オブジェクト指向における再利用のためのデザインパターン✓ Abstract Factory ✓ Decorator✓ Adapter ✓ Facade✓ Bridge ✓ Factory Method✓ Builder ✓ Flyweight✓ Chain of Responsibility ✓ Interpreter✓ Command ✓ Iterator✓ Composite ✓ Mediator✓ Observer ✓ Memento✓ Prototype ✓ Proxy✓ Strategy ✓ Singleton✓ Templete Method ✓ State✓ Visitor
  • 18. オブジェクト指向における再利用のためのデザインパターン✓ Abstract Factory ✓ Decorator✓ Adapter ✓ Facade✓ Bridge ✓ Factory Method✓ Builder ✓ Flyweight✓ Chain of Responsibility ✓ Interpreter✓ Command ✓ Iterator✓ Composite ✓ Mediator✓ Observer ✓ Memento✓ Prototype ✓ Proxy✓ Strategy ✓ Singleton✓ Templete Method ✓ State✓ Visitor
  • 19. パターン?What is Pattern?
  • 20. http://noplans.org/product/t-shirt/
  • 21. パターンの起源 Origin of Pattern
  • 22. オブジェクト指向プログラムのためのパターン言語の使用 Using Pattern Languages for Object-Oriented ProgramBy Kent Beck, Ward Cunningham
  • 23. 角征典さんによる翻訳http://capsctrl.que.jp/kdmsnr/wiki/transl/?UsingPatternLanguagesForOOP
  • 24. オブジェクト指向プログラムのためのパターン言語の使用
  • 25. オブジェクト指向プログラムのための パターン言語の使用✓ オブジェクト指向プログラミングのための適 切な方法論の探索
  • 26. オブジェクト指向プログラムのための パターン言語の使用✓ オブジェクト指向プログラミングのための適 切な方法論の探索✓ 旧来の方法論はオブジェクト指向プログラミン グに最適していない
  • 27. オブジェクト指向プログラムのための パターン言語の使用✓ オブジェクト指向プログラミングのための適 切な方法論の探索✓ 旧来の方法論はオブジェクト指向プログラミン グに最適していない✓ 最も重要な設計事項であるユーザ・インタ フェースに重きを置いた方法論もない
  • 28. オブジェクト指向プログラムのためのパターン言語の使用
  • 29. オブジェクト指向プログラムのための パターン言語の使用✓ Christopher Alexander氏は言ってるよ
  • 30. オブジェクト指向プログラムのための パターン言語の使用✓ Christopher Alexander氏は言ってるよ✓ 建物は、実際にそこにいる人たちの手によっ て設計され、作られるべき
  • 31. オブジェクト指向プログラムのための パターン言語の使用✓ Christopher Alexander氏は言ってるよ✓ 建物は、実際にそこにいる人たちの手によっ て設計され、作られるべき✓ プログラムも利用者によって書かれるべき
  • 32. オブジェクト指向プログラムのための パターン言語の使用✓ Christopher Alexander氏は言ってるよ✓ 建物は、実際にそこにいる人たちの手によっ て設計され、作られるべき✓ プログラムも利用者によって書かれるべき✓ でも、規模とか複雑性とか(ry
  • 33. オブジェクト指向プログラムのための パターン言語の使用✓ Christopher Alexander氏は言ってるよ✓ 建物は、実際にそこにいる人たちの手によっ て設計され、作られるべき✓ プログラムも利用者によって書かれるべき✓ でも、規模とか複雑性とか(ry✓ それパターン言語で出来るよ!
  • 34. オブジェクト指向プログラムのための パターン言語の使用✓ Christopher Alexander氏は言ってるよ✓ 建物は、実際にそこにいる人たちの手によっ て設計され、作られるべき✓ プログラムも利用者によって書かれるべき✓ でも、規模とか複雑性とか(ry✓ それパターン言語で出来るよ!✓ 実際にやってみた
  • 35. オブジェクト指向プログラムのための パターン言語の使用✓ Christopher Alexander氏は言ってるよ✓ 建物は、実際にそこにいる人たちの手によっ て設計され、作られるべき✓ プログラムも利用者によって書かれるべき✓ でも、規模とか複雑性とか(ry✓ それパターン言語で出来るよ!✓ 実際にやってみた
  • 36. 時を超えた建築の道 The Timeless Way of BuildingBy Christopher Alexander
  • 37. 時を超えた建築の道
  • 38. 時を超えた建築の道✓ 依頼主が望む建築を一番理解しているのは、 本来依頼主自身のはず
  • 39. 時を超えた建築の道✓ 依頼主が望む建築を一番理解しているのは、 本来依頼主自身のはず✓ 建築家の役割は、依頼主を設計に参加可能 にすること
  • 40. 時を超えた建築の道✓ 依頼主が望む建築を一番理解しているのは、 本来依頼主自身のはず✓ 建築家の役割は、依頼主を設計に参加可能 にすること✓ パターン言語を建築家と依頼主の共通言語 として機能させることでこれを実現すべき
  • 41. 時を超えた建築の道✓ 依頼主が望む建築を一番理解しているのは、 本来依頼主自身のはず✓ 建築家の役割は、依頼主を設計に参加可能 にすること✓ パターン言語を建築家と依頼主の共通言語 として機能させることでこれを実現すべき
  • 42. パターン言語Pattern Language
  • 43. パターン言語のカテゴリ✓ 町(1-94)自立地域、農業渓谷、田舎町、田 園、小高い場所、環状道路、都市の魔力...✓ 建物(95-204)複合建物、小さな駐車場、通り抜け街路、繋がった建物、座れる階段...✓ 施工(205-253)生活空間に従う構造、無駄の無い構造、ボックス柱、さわれる花... - http://gc.sfc.keio.ac.jp/class/2005_22687/slides/10/6.html
  • 44. パターン言語
  • 45. パターン言語✓ パターン:ある形態を生み出すためのルール
  • 46. パターン言語✓ パターン:ある形態を生み出すためのルール✓ 言語:様々な大きさ・種類の部品が有機的に 繋がることによって多様な意味が生まれる構造
  • 47. パターン言語✓ パターン:ある形態を生み出すためのルール✓ 言語:様々な大きさ・種類の部品が有機的に 繋がることによって多様な意味が生まれる構造✓ パターン言語:建築において繰り返し登場する形を生み出すルールを、言語的な構造として表現したもの
  • 48. パターン言語のカテゴリ✓ 町(1-94)自立地域、農業渓谷、田舎町、田 園、小高い場所、環状道路、都市の魔力...✓ 建物(95-204)複合建物、小さな駐車場、通り抜け街路、繋がった建物、座れる階段...✓ 施工(205-253)生活空間に従う構造、無駄の無い構造、ボックス柱、さわれる花... - http://gc.sfc.keio.ac.jp/class/2005_22687/slides/10/6.html
  • 49. パターン言語 抽象 「町」 (戦術タクティクス)パターン言語 「建物」 具体 「施工」 (戦略ストラテジー) パターンのカテゴリ パターン - http://gc.sfc.keio.ac.jp/class/2005_22687/slides/10/6.html
  • 50. パターン?What is Pattern?
  • 51. 時を超えた建築の道✓ 依頼主が望む建築をどのようにすべきかを一 番理解しているのは、本来依頼主自身のはず✓ 建築家の役割は、依頼主を設計に参加可能に すること✓ パターン言語を建築家と依頼主の共通言語と して機能させることでこれを実現すべき
  • 52. オブジェクト指向プログラムのための パターン言語の使用✓ 利用者が望むプログラムをどのようにすべき かを一番理解しているのは、利用者自身のはず✓ プログラマの役割は、利用者を設計に参加可 能にすること✓ パターン言語をプログラマと利用者の共通言 語として機能させることでこれを実現すべき
  • 53. オブジェクト指向における再利用のためのデザインパターン✓ Abstract Factory ✓ Decorator✓ Adapter ✓ Facade✓ Bridge ✓ Factory Method✓ Builder ✓ Flyweight✓ Chain of Responsibility ✓ Interpreter✓ Command ✓ Iterator✓ Composite ✓ Mediator✓ Observer ✓ Memento✓ Prototype ✓ Proxy✓ Strategy ✓ Singleton✓ Templete Method ✓ State✓ Visitor
  • 54. オブジェクト指向における再利用のための パターン言語のカテゴリの一つデザインパターン✓ Abstract Factory ✓ Decorator✓ Adapter ✓ Facade✓ Bridge ✓ Factory Method✓ カテゴリを構成するパターン Builder ✓ Flyweight✓ Chain of Responsibility ✓ Interpreter✓ Command ✓ Iterator✓ Composite ✓ Mediator✓ Observer ✓ Memento✓ Prototype ✓ Proxy✓ Strategy ✓ Singleton✓ Templete Method ✓ State✓ Visitor
  • 55. オブジェクト指向プログラミングのパターン言語の適応について概説する。(中略)これは、オブジェクト指向プログラムの完全なパターン言語を記録する我々の現在の活動から得られたものだ。
  • 56. オブジェクト指向プログラミングのパターン言語の適応について概説する。(中略)これは、オブジェクト指向プログラムの完全なパターン言語を記録する我々の現在の活動から得られたものだ。
  • 57. オブジェクト指向プログラムの 完全なパターン言語 A Pattern Language for OOP
  • 58. オブジェクト指向プログラムの GoF本の現在の立ち位置とは 完全なパターン言語 ちょっと違う A Pattern Language For OOP
  • 59. オブジェクト指向プログラムの どこへいってしまったんだろう? 完全なパターン言語 A Pattern Language For OOP
  • 60. パターン言語の行方Where did a pattern language go?
  • 61. ヒント
  • 62. ヒント✓ パターンの後にKent Beckが生み 出したもの
  • 63. ヒント✓ パターンの後にKent Beckが生み 出したもの✓ 利用者の設計への関与を促すもの
  • 64. ヒント✓ パターンの後にKent Beckが生み 出したもの✓ 利用者の設計への関与を促すもの✓ まるでパターンで構成されたパター ン言語のように、形を生み出すルー ルを一定の形式でまとめたもの
  • 65. エクストリーム プログラミング eXtreme Programming
  • 66. eXtreme Programming
  • 67. eXtreme Programming✓ 5 個の価値✓ 14 個の原則✓ 14 個の基礎プラクティス✓ 11 個の応用プラクティス
  • 68. eXtreme Programming 抽象 「価値」 (戦術タクティクス)エクストリーム 「原則」プログラミング 具体 (戦略ストラテジー) 「プラクティス」
  • 69. eXtreme Programming 抽象 「価値」 (戦術タクティクス) とても良く似ているエクストリーム 「原則」プログラミング 具体 (戦略ストラテジー) 「プラクティス」
  • 70. 伏線foreshadowing
  • 71. パターン コミュニティ Hillside Group
  • 72. 活動の記録Pattern Language of Program Design
  • 73. 開発プロセスの生成的 パターン言語A Generative Development - Process Pattern Language By James O. Coplien
  • 74. 開発プロセスの生成的パターン言語
  • 75. 開発プロセスの生成的パターン言語✓ スケジュールの大きさを決めよ
  • 76. 開発プロセスの生成的パターン言語✓ スケジュールの大きさを決めよ✓ 組織は市場に従う
  • 77. 開発プロセスの生成的パターン言語✓ スケジュールの大きさを決めよ✓ 組織は市場に従う✓ 開発者がプロセスをコントロールする
  • 78. 開発プロセスの生成的パターン言語✓ スケジュールの大きさを決めよ✓ 組織は市場に従う✓ 開発者がプロセスをコントロールする✓ 顧客を引き込め...etc
  • 79. 開発プロセスの生成的パターン言語
  • 80. 開発プロセスの生成的パターン言語
  • 81. PLoPがXPを生んだ XP is a Pattern Language too.
  • 82. XPとパターン Ralph Johnsonの見解http://capsctrl.que.jp/kdmsnr/wiki/transl/?UsingPatternLanguagesForOOP
  • 83. XPには「信頼性」や「理解容易性」に直接関連するパターンが無いにも関わらず、「プラクティス全体」が結びついて、信頼が高く理解が容易なシステムを生成してしまいます。
  • 84. …パターン同様、一つ一つのプラクティスには名前があり、それ自身を学ぶことができます。パターン同様、プラクティス全体が結びつくことで、個々の単純な足し合わせよりも大きな効果が得られるのです。…
  • 85. …結論としての私の意見は、XPはAlexanderスタイルの開発をソフトウェアにどうやって適応するかを示す、ソフトウェアのためのパターン言語である、というものです
  • 86. パターン・ムーブメントから アジャイル・ムーブメントへ 平鍋さんによる解説http://blogs.itmedia.co.jp/hiranabe/2005/10/post_dc1e.html
  • 87. パターン・ムーブメントからアジャイル・ムーブメントへ From Pattern To Agile
  • 88. オブジェクト指向プログラムの 完全なパターン言語 A Pattern Language for OOP
  • 89. パターンとは Pattern is
  • 90. パターン言語の全体像 抽象 (戦術タクティクス)パターン言語 具体 (戦略ストラテジー)
  • 91. Implementation Patterns Kent Beck待望の新刊
  • 92. Implementation Patterns なぜ今パターンなのか?
  • 93. A Short Introduction To Pattern Language Smalltalk Report, Feb, 1993 By Kent Beck
  • 94. 発想の原点Origin Of Idea
  • 95. コードに込められたプログラマの意図をどうやって それを利用する人に 伝えることが出来るか
  • 96. 一つの答えOne Answer
  • 97. 文芸的プログラミング Literate Programming
  • 98. プログラミングは 芸術であり 文学でもある
  • 99. 文学であるということは人のためのコードを書く ということ
  • 100. 問題点Problem
  • 101. 特別なシステムを使うとなると その分の負荷がプログラマにかかってしまう
  • 102. 構造が直線的であるため複雑で多層な構造の情報を 表現するのが難しい
  • 103. http://noplans.org/product/t-shirt/
  • 104. 時を超えた建築の道 The Timeless Way of BuildingBy Christopher Alexander
  • 105. 確認Point
  • 106. 発想の原点Origin Of Idea
  • 107. コードに込められたプログラマの意図をどうやって それを利用する人に 伝えることが出来るか
  • 108. Implementation Patterns 何故書かれたのか?
  • 109. Implementation Patterns 何故重要なのか?
  • 110. This is a book about programming - specifically, about programmingso other people can understand your code. 本書はプログラミングについての書籍だ. 具体的には 他人があなたのコードを理解できるように プログラミングするための書籍だ - Kent Beck「Implementation Patterns」
  • 111. Dave Thomas says...
  • 112. ソフトウェアエンジニアリングという言葉はありません. 少なくともまだないです. これ以上ないところまで削るのがエンジニアリング. これ以上削れないところまで削るということは どこまで削るとそれが壊れてしまうか わかっているということです. まだソフトウェアに関しては 我々はそのレベルまで達していないんです. 達していないから、まだソフトウェアエンジニアリングという言葉は嘘である. 我々がしているのはコーディングです.
  • 113. 僕らがしているのは プログラミング
  • 114. 大切にしなければいけないのは プログラミングという作業 そしてコード
  • 115. それらを大切にするための 具体的な方法論
  • 116. ...a programmer’s job is too communicatewith other programmers, not just a machine. Programming, then, is a human task done by humans for humans.Oh, and writing good code at the same time. プログラミングは、マシンにだけではなく、 自分以外のプログラマに向けて書かれるべきなんだ。 そうすることで、プログラミングは 人による、人のための、人の仕事になる。 もちろん、それは良いコードにもなっているんだよ。 - Kent Beck「Implementation Patterns」
  • 117. Implementation Patterns 読んでみると良いと思う
  • 118. それともう一つ... One more thing...
  • 119. パターン言語の性質Element of Pattern Language
  • 120. パターン言語の性質✓ 利用者が開発者でもあることを許容する✓ そのための利用者側の負荷を低減する✓ 形を生み出すためのルールをパターン化し✓ それらの有機的な結びつきにより多様な意 味を生み出せること
  • 121. パターン言語の性質✓ プログラマにオープンであり✓ そのための利用者側の負荷を低減する✓ 形を生み出すためのルールをパターン化し✓ それらの有機的な結びつきにより多様な意 味を生み出せること
  • 122. パターン言語の性質✓ プログラマにオープンであり✓ 楽しく、自然に、簡単に、がコンセプトで✓ 形を生み出すためのルールをパターン化し✓ それらの有機的な結びつきにより多様な意 味を生み出せること
  • 123. パターン言語の性質✓ プログラマにオープンであり✓ 楽しく、自然に、簡単に、がコンセプトで✓ 豊富なライブラリを備えていて✓ それらの有機的な結びつきにより多様な意 味を生み出せること
  • 124. パターン言語の性質✓ プログラマにオープンであり✓ 楽しく、自然に、簡単に、がコンセプトで✓ 豊富なライブラリを備えていて✓ 動的で柔軟な繋がりによって、それらが多様な意味を持ちうる
  • 125. どうみてもRubyです
  • 126. パターン言語とRuby Ruby As Pattern Language
  • 127. きっかけ
  • 128. Design Patterns In Ruby
  • 129. デザインパターンを Rubyで
  • 130. だけでなく
  • 131. Rubyならではの パターンの探索 Patterns For Ruby
  • 132. Patterns For Ruby
  • 133. Patterns For Ruby✓ DSL
  • 134. Patterns For Ruby✓ DSL✓ メタプログラミング
  • 135. Patterns For Ruby✓ DSL✓ メタプログラミング✓ 設定より規約
  • 136. ドメイン特化言語Domain Specific Language
  • 137. 特定の問題領域の解決に特化してデザインされた言語
  • 138. class CreateEvents < ActiveRecord::Migration def self.up create_table :events do ¦t¦ t.string :title t.string :url t.datetime :deadline t.datetime :publish_at t.timestamp end end def self.down drop_table :events endend
  • 139. class Manager < ActiveRecord::Base belongs_to :department has_one :office has_many :committeesend
  • 140. ドメイン特化言語
  • 141. ドメイン特化言語✓ 問題に対して言語を最適化するアプローチ
  • 142. ドメイン特化言語✓ 問題に対して言語を最適化するアプローチ✓ 問題を利用する人のわかる言葉で
  • 143. ドメイン特化言語✓ 問題に対して言語を最適化するアプローチ✓ 問題を利用する人のわかる言葉で✓ RubyはDSLの良いプラットフォーム
  • 144. メタプログラミング Meta Programming
  • 145. メタプログラミングでオブジェクトを柔軟に拡張するということ
  • 146. class BankAccount attr_accessor :balance def initialize(opning_balance) @balance = opning_balance endend
  • 147. class Car extend Forwardable def_deligators :@engine, :start, :stop def initialize @engine = Engine.new endend
  • 148. メタプログラミングの利用
  • 149. メタプログラミングの利用✓ 問題に対して言語を最適化するアプローチ
  • 150. メタプログラミングの利用✓ 問題に対して言語を最適化するアプローチ✓ 利用者が表現したいことをそのまま書ける
  • 151. メタプログラミングの利用✓ 問題に対して言語を最適化するアプローチ✓ 利用者が表現したいことをそのまま書ける✓ Rubyはメタプログラミングをしやすい
  • 152. DSL等で言語を 利用者の思考に近づけていく試み
  • 153. パターン言語で 技術を人の側に近づけていく試み
  • 154. 本質的には同じ
  • 155. というよりもDSLはパターン言語の 可能性の一つ
  • 156. RubyはDSLの良い プラットフォーム
  • 157. Rubyが海外のアジャイルな人たちの間で盛り上がった理由
  • 158. Rubyとアジャイルな開発が 相性が良い理由
  • 159. 結論
  • 160. それともう一つ... One more thing...
  • 161. 最後に
  • 162. アジャイル系の勉強会しませんか?How about workshop about agile together?
  • 163. アジャイル系の勉強会しませんか?How about workshop about agile together?
  • 164. 一緒にやれると 嬉しいです
  • 165. 2008-03-19(水); Apple Store Sapporo Ruby Sapporo Night vol.5何故そんなにもImplementationPatternsは重要なのか Pattern is a key connects Ruby and Agile 日本Rubyの会 / Ruby札幌 島田浩二 snoozer.05@ruby-sapporo.org
  • 166. ご清聴 ありがとうございました
  • 167. 何かご質問は?

×