概要
デザインパターンの勉強をしたいと思ったので『Java言語で学ぶデザインパターン入門 第3版』を購入した。
転職先で未経験のJavaを扱うことも決まっていたので、Javaもデザインパターンも同時に学べるのは一石二鳥だと思い即決だった。
今回はその感想を書いていく。
良かった点
1. わかりやすい
本書は説明が豊富で、章ごとに考え方のヒントやクラスの役割などが丁寧に解説されている。
特に豊富なUMLが理解を大幅に手助けしてくれた。
余談だが、自分は新卒1年目のときに『オブジェクト指向設計実践ガイド』という書籍を読んで、その内容の難しさに挫折してしまったことがある。
本書と『オブジェクト指向設計実践ガイド』は趣旨の異なる書籍だが、テクニック自体は共通している点も数多くある。
本書はかなり説明が分かりやすく、Javaの継承やインタフェースさえ理解していればスラスラと読み進めることができるので、本書を中間セーブポイントとして利用することによって『オブジェクト指向設計実践ガイド』の内容も理解できるようになるのではないかという気がしている。
また『オブジェクト指向設計実践ガイド』にも挑戦してみたい。
2. 演習がある
本書では各章の末尾に演習問題が用意されている。
本文を目でなぞっていただけのときには気付けなかったことに演習を通して気づくことが何度もあり、かなり学びになった。
演習内容も設定がシンプルかつ面白くて、飽きずに取り組めた。
特に第23章の演習は骨太でかなり楽しかった。
デザインパターンの難しさ
本書に対する不満点は特に無いので、ここからはデザインパターン自体の難しさについて個人的に思ったことを書いていく。
1. 使い道がわからない
「これって本当に使い道あるのか?」と思ってしまうようなデザインパターンがいくつかあった。
Wikipediaのデザインパターンの記事を見ると、本書でも紹介されているGoFによる23のデザインパターンが『Code Complete』という他のデザインパターンの書籍で紹介されているのかどうかを一覧することができる。
そして、直感的に「これって使い道あるのか?」と感じたデザインパターンの大半は『Code Complete』では紹介されていなかった。
『Code Complete』は後発の書籍なので、GoFのデザインパターンの中でも特に使用頻度が高いものだけを厳選したのだと思う。
つまり『Code Complete』で紹介されていないデザインパターンは、使用頻度が低いものだと考えても問題はないだろう。
なので、本書を使ってデザインパターンの勉強をするときは、使う頻度が多そうか少なそうかでメリハリを付けて学ぶのが良いと感じた。
2. 違いがよくわからない
デザインパターンの中には違いがよくわからないものがあり、「あれ、これさっきも勉強したような…」となることがあった。
そういうときは前のページに引き返して復習すればいいんだろうが、「とはいえコード自体はスラスラ読めてちゃんと理解できているし、デザインパターンのそれぞれの違いを言語化できるレベルまで理解する必要もないか」みたいに面倒くさがっている自分も存在した。
冷静に考えると、デザインパターンの凄さというのは暗黙知に境界線を引いて「この暗黙知にはこういう名前をつけます!」とラベリングし、暗黙知をエンジニア共通の知識に変えたことにある気がするので、デザインパターンの名前と内容が紐づいていない今の自分の状態は本末転倒な気もする。
これはデザインパターンのせいと言うより自分の怠惰さの問題なのだが、とはいえそもそもデザインパターン自体がMECEではない印象があり、自分以外にも違いが曖昧になっている人はかなり多い気がする。
違いが分からなくなったときに前のページに引き返せるかどうかが、私とあなたを差別化するポイントになるのではないかと思う。
まとめ
かなり分かりやすく、演習も豊富で、デザインパターンの入門書としては非常に良い書籍だった。
コメント