加賀谷です。以前の後藤さんとのやりとりで少しデザインパターンの話がでてきたのと、小川さんのように Symfony2 のコア開発に貢献したいという人が増えてきているようなので、翻訳作業の過程で見つけた本とオンライン資料をリストをあげておきます。
とりあえず読んだだけで実践も解説もできないのにこんなこと投稿していいのかなと気が引けていましたが、ジャーナリストの佐々木俊尚さんが Facebook で「佐々木俊尚の震災キュレーション」に触発されました。
## symfony1系のアーキテクチャ
J2EEパターン 第2版
エンタープライズ アプリケーションアーキテクチャパターン
symfony1 系のアーキテクチャに関して firesymfony の作者である Alvaro さんがブログで次の本を参考文献としてあげています。
Symfony Design Patterns
## デザインパターンとリファクタリング
「パターン指向リファクタリング入門」
デザインパターンが取り込まれたコードのリファクタリングのカタログだけでなく、パターン魔、作り込みすぎ・不足などデザインパターンの学習で陥りがちな問題が端的にまとめられています。絶版になりましたが、ラルフジョンソン(GoFの1人)、マーチン・ファウラー、結城浩がまえがきを書いているので、重要な本だと思います。
デザインパターンの入門に関して、「Head Firstデザインパターン」がわかりやすいです。これは初心者が書いたコードからリファクタリングするという方式です。
## GoF のデザインパターンカタログの改訂
Design Patterns 15 Years Later: An Interview with Erich Gamma, Richard Helm, and Ralph Johnson
GoF のインタビューによると、カタログの改訂を考えているそうです。草案では Singleton が削除され、Null Object、Type Object、Dependency Injection、Extension Object/Interface が追加されています。
参考文献としてあげられている「Pattern Languages of Program Design 3」の著者の1人であるRobert C. Martin (ボブおじさん)はアジャイルソフトウェア開発宣言のメンバーの1人で次の本で知られています。
Clean Code アジャイルソフトウェア達人の技
アジャイルソフトウェア開発の奥義
Clean Code と似た本としてケントベックの「実装パターン」が
Clean Codeが売れたおかげか、来月に「The Clean Coder」という本が出版されるそうです。
## ドメイン駆動
エリック・エヴァンスのドメイン駆動設計
Domain Driven Design(ドメイン駆動設計) Quickly 日本語版
Doctrine 1系のマニュアルで参考文献としてあげられており、Symfony2 の開発に関わる際の必読書と考えられます。「Domain Driven Design Quickly」は「エリック・エヴァンスのドメイン駆動設計」の要約版です。ユーザー登録すれば pdf をダウンロードできます。
ドメイン駆動設計の一覧はオージス総研のサイトで公開されています。
Domain-Driven Designのエッセンス 第1回 ドメイン駆動設計とは
ドメイン駆動の実際のコードサンプルに関してはJimmy Nilsson の「ドメイン駆動」がわかりやすいそうです。
ドメイン駆動
## トレイトと DCI アーキテクチャ
Doctrine/Propel の開発メンバーは PHP 5.4 で導入されるトレイト対応に向けて準備しているようですが、
トレイトを前提とした設計に関してさまざまな試行錯誤が行われているようです。
DCI アーキテクチャに関して、「エリック・エヴァンスのドメイン駆動設計」の翻訳者の1人である和智右桂氏がTrygveの論文を翻訳しています。Trygve は MVC アーキテクチャの考案者です。
DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien
上記の論文の共著者であるJames O. Coplienは「Lean Architecture」を出版しています。
Scala 版の Dependency Injection は Cake パターンと呼ばれています。
Real-World Scala: Dependency Injection (DI)
Cake パターンは今年の1月に出版された「プログラミングScala」で紹介されています。
英語の原本はオンラインで公開されています。