Do You PHP はてな このページをアンテナに追加 RSSフィード Twitter

2006-11-21

[][]PHPによるデザインパターン入門

ということで、共著で本を書きました。2006/11/23発売です。Amazonにはまだ出てナサゲ。。。

f:id:shimooka:20061121170614j:image

著者:下岡秀幸、畑勝也、道端良

定価:3,150円(本体 3,000円)

ISBNコード:4-7980-1516-4

初版発売日:2006/11/23

判 型:B5変

ページ数:320

秀和システム書籍詳細: PHPによるデザインパターン入門

まあ、これを機にデザインパターン関連の本やらサイトやら散々見て回り、GoF本も何回見直した事やら。。。でも、デザインパターンって、APIを定義しているクラス・インターフェースを中心に見ていくと、クラス図全体から見えるものとは違ったものが見えてきますね。

ちなみに、サンプルはPHP5.1.x/5.2.0で動作確認してます。紙面上はWindows XPですが、CentOSでも動作確認しています。

2006/11/23追記

Amazonに出ました。

PHPによるデザインパターン入門

PHPによるデザインパターン入門

ますます 2006/11/21 21:24 お〜!素晴らしいです。(>_<)
先程、目次を拝見しましたが素敵な本ですねぇ。PHPでは、なかなか見ない種類。
書店に並んだら見てみよう。。。って買います。スミマセン。(w

shimookashimooka 2006/11/22 12:20 ありがとうございます〜 > ますさん
どういう反応があるのか、ちょっとドキドキですが。これを足がかりに、デザインパターンやOOの理解が深まれば幸いです。。。と言えるほど、自分が深く理解してるのか不明(^^;

nuffynuffy 2006/11/22 15:22 おーちょうど結城先生のJavaデザパタ本を買って読み始めたところなので、使い慣れたPHPで出ると嬉しいです。と言う事で購入させて頂きます:)
個人的には無理やりPHP4で各種パターンを実装することに興味があったりしますが。

shimookashimooka 2006/11/22 17:08 ありがとうございます > nuffyさん
そういえば、PHP4のデザインパターンも放置プレーなので、どうにか23個揃えないとなぁ。

communicacommunica 2007/01/04 20:43 144ページの10行目くらいまでですが、Directorクラスはオブジェクトの生成過程を知らないのに、オブジェクト生成過程のコードだけを記述していると続く文章が、いまひとつよく分かりません。いっそのこと生成過程を知っていることにしてはだめだったんでしょうか。

communicacommunica 2007/01/04 20:46 あと、Directorが「建築者」だとすると、「Builder」は何の訳は何だろう? と思ったりしたんですが、これはGoF本由来の問題なんでしょうかね。すみません、後で自分で調べて見ますが、名前のずれ(というかシフト現象?)が気になったもので……。

shimookashimooka 2007/01/04 23:28 communicaさん、コメントありがとうございます :-)
Builderパターンは「何を生成するか」と「どのように生成するか」を分けることを目的としたパターンですので、「生成の過程や手順」と「具体的な生成物」を*わざわざ*分けておき、独立して修正したり再利用できる構造になっています。場合によっては、Directorクラスが「生成過程」を知っている方が構造やコードがシンプルになることも当然あると思います。ただし、そのDirectorクラスは、その「生成過程」に依存したコードになってしまいますので、前述のメリットは失ってしまうと思います。

> Directorが「建築者」だとすると、「Builder」は何の訳
おそらくp.143の構造にある説明のことかと思いますが、「建築者」というイメージが辞書的で分かりにくかったですかね。。。DirectorとBuilderは「現場監督と作業員」の関係と思って頂ければ良いのかな?と思いますがどうでしょうか?「現場監督」の指示に従って、具体的な作業を「作業員」が行う、といったイメージです。

communicacommunica 2007/01/06 10:42 Builderパターンについての解説ありがとうございます。そういうご説明も踏まえて、どちらかというと、オリジナルの著者(GoF)の側で「Directorパターン」という名前にすればよかったのではと思わないでもないですが。
同じことでいうと、Observerパターンも命名失敗の感じがしますね。観察対象から「今わたしは状態が変化しました」と報告をもらう「Observer」って何か変という気がするのは私だけではないと思います。英語ネイティブの人と話してみたら違和感ないという返事が返ってくるのかもしれませんが。「Listenerパターン」ぐらいにしておけば、まだよかったんですが。訳語の選択の次元、原著者の所有する語感の次元の問題って結構大きいと考えています。

communicacommunica 2007/01/06 10:50 facade (本当はcの下にセディーユがつく)なんかは、フランスの街並みについて知らないと「ああなるほど」「うまいネーミングをしたね」感がない名前ですから、日本人にとっては敷居が高いですね。暗黙知/集合知/経験知の言語化というものは困難が伴うものですが、つけられたラベルに「なるほど」感がこもっているんでしょうが、どうも私にはピントきません。多分、アメリカ人にとっては(前景に庭があったりする)イメージがあるのでフランスの家並の正面構造を持ち出したくなる理由があったのかなどと推察したりもしますが、我々にとっては学習コストに跳ね返ってきますね。

communicacommunica 2007/01/06 10:59 今何回目かのデザインパターンブームだと思いますが、学習を途中で投げ出したくなってしまう理由の一つとして、「パターン名が経験知をうまくすくいとった名前になっていないこと」(=もしかしたら我々にとってもっとピンとくる名前がありうるかもしれない)というのがあるような気がしてなりません。その点で、ご著書は「なぜ、Bridgeなのか」「なぜ、Abstract Fsactory」なのかなどの部分に力を割いており好感が持てます。これが何冊も類書を持っているのに新たに購入した理由です。
*連続ポストになってしまい申し訳ありません。

shimookashimooka 2007/01/08 23:41 communicaさん、コメントありがとうございます :-)
> 「Directorパターン」という名前にすれば
私見ですが、あえて「Builderパターン」としたのは、(役割としての)「Director」よりも「Builder」に重きを置いているためではないかと思います。オブジェクト指向の世界で重視される要素の一つに「再利用性」がありますが、「再利用」つまり「交換可能」にするためのキーはBuilderクラスになるためです。ちょっとこじつけ臭いですが(^^;、デザインパターンは米国などコンピュータサイエンス先進国(といって良いか分かりませんが)で「オブジェクト指向ありき」の世界で結果的に生まれたものだと認識していますが、その流れで考えた場合、前述のような考え方もあり得るかなと思います。

> Observerパターン
確かに「観測者」という訳だと、能動的に「変化を観測する」というニュアンスになってしまいますね。個人的にもListenerの方がしっくりします。

> 暗黙知/集合知/経験知の言語化というものは困難が伴う
これは結構あると思います。直訳に近い訳本だとありがちでしょうか。また、日本/海外だけでなく、場合によっては日本国内や極論すると社内でも困難ですね。。。

> 連続ポストになってしまい申し訳ありません
いえいえ。非常に興味深いコメント、ありがとうございました。

しげしげ 2007/01/18 01:15 はじめまして。先日購入させて頂いたものです。分かりやすくて重宝しております。自分のスクリプトのValidationに、Chain Of Responsibilityを適用させようと思っているのですが、サンプルのMaxLengthValidationHandler(8バイト制限)が効いてない感じなんです。サンプルでは$thisのsetNextが2回呼ばれるので最終登録の方しか呼ばれないかなと思ったのですが。勘違いだったらすいません。ただ今勉強中です。

shimookashimooka 2007/01/18 19:40 しげさん、コメントありがとうございます。うわっ!ホントだ。あとで修正版をはてなとDo You PHP?に上げときます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close