Head First デザインパターン
2009/05/12 20:48 - Flash参考書
かつて当ブログのコメント欄でもお勧めいただいたことのある「Head First デザインパターン」ですが、今まで後述する理由で買っていませんでした。 しかしその後、ネット上で良い評判を何度か目にしたのでいよいよ購入したわけです。
読んでみて「見かけが悪くてかなり損をしているが実はすごい良書」という印象を受けました。
例えるなら CSS が超ヘボで HTML のタグつけも難ありだけど、書いてある内容がとても優れたウェブサイトといった感じでしょうか。
個人的にちょっとどうかなぁと感じた部分から列挙します。
まず、書籍の有益性に疑問を抱かせるレイアウトや内容構成、編集方針なんじゃないでしょうかねぇ。
オブジェクト町のチョコレート工場とかヘンテコなストーリー仕立てで、写真や絵が過多。 そのおちゃらけ具合にはイラっとさせられることもしばしば。
その絵や写真の貼りつけ方も、なんかあちこちに飛んでいるような感じだし、文章も斜めにしていたりと、視線を強制的にあちこち移動させられて非常に読みづらい。
しかし、これは明確な意図に則った作りであると、かなり詳しく序章に書いてあります。
意図は理解しましたが、個人的にはドン引き要素ですね。 今まで手を出しそびれていたのも、このふざけた感じのビジュアルを敬遠してのことです。
あと、訳が英語直訳調で日本語として全然こなれていないものが多いです。 そのためスラスラ読み進めず、何が書いてあるのか立ち止まってしまうこともしばしば。
でも個人的には、私も英語直訳的な文章を意図的によく記述するので、これはそれほどは気にならなかった側面。
そんな感じで手に取るのを躊躇ってしまう本ですが、書いてある内容はかなり有益。
第1章は「デザインパターン入門」というタイトルで、個別のデザインパターン解説以前の、プログラム技法的なことが書いてあります(実はいつのまにか Strategy パターンの話にすり替わってしまうのですが)。
「不変な部分と変わる部分を分離する」とか「なぜクラスではなくインタフェイスなのか」、「継承よりもコンポジションの方が柔軟性が高い」、「実装ではなくインタフェイスに対してプログラミングせよ」等々、重要な示唆に富む説明が満載。
この第1章だけでも読む価値ありと私は判断しました。 デザインパターン云々以前のプログラミング技法本としても注目すべきものだと思います。
で、第2章からが個別のデザインパターン解説。
素っ頓狂な例えが出てきて面食らうことがありますが、意外と分かりやすい。
今まで何冊がデザインパターン本を読んできて、いまいちよく分からなかったことも何か理解できたような気がします。
そう。これは初めてのデザインパターン本として読むものではなく、何冊か読んだがよく分からなかったという読者に向いている書籍だと思います。
個人的には Observer パターンの解説に得るところがありました。
Observer インタフェイスで抽象度を上げるという説明の後、java の組み込みクラスの Observable クラスについての話が出てきたんですが、この章のおかげでインタフェイスの存在意義がさらにハッキリと理解できました。
java.utils.Observable の暗黒面と称して、Observable がクラスであることの欠点も解説されていますが、これはコンポジションを使えば解決できるレベルの欠点だよなぁ、と自分流に Observable クラスと IObserver インタフェイスを書いてみたのが、昨日 wonderfl に投稿した BetweenAS3 のテストプログラムです。
本書が分かりやすい理由としては、内容がしっかりしていることももちろんですが、編集的にも細かい配慮がなされている点があり、これが読者の理解を助けるうえで実に有意義であると考えます。
それは、ひとつのテーマが1ページもしくは見開きで完結すること。
大見出し的なテーマ括りとして考えると3ページ目4ページ目にかかることもありますが、小見出し的な括りでは1ページもしくは見開きで完結しています。
1ページもしくは見開きで完結するということは、一つの項目を読んでいるときにページを繰らなくて済むということ。 見過ごしてしまいそうなさりげないことですが、読む身にとってはかなり効き目があります。
「人は見た目が9割、10割」だそうですが、この本も見た目がかなりアレ過ぎて、けっこう損している本なんじゃあないでしょうか。
英語直訳文とおちゃらけた構成が気にならない人は読んどいた方が良いと思う次第です。