稲枝の押入れ

いなえが適当なことを書いては、しまっておく場所

結城 浩 氏著の『Java言語で学ぶ デザインパターン入門』を読んで

結城 浩 氏著の『増補改訂版 Java言語で学ぶデザインパターン入門』を読了しました。記録として、そして他の方の参考のために感想を書いておこうかと思います。

非常に読みやすくわかりやすく、いい本でした。勿論、概念的な部分があるので一度では読み込めず飲み込めない所もありましたが、こちらの理解を促そうとする工夫が要所に感じられ、そういった所も読んでいくことが出来ました。著者の結城浩さんの日本語が僕にとって非常に相性が良かったのか、はたまた誰が読んでもそうなのかはわかりませんが、説明が非常にわかりやすいです。自分にはこういった才能がないと思っているので羨ましい限りなのですが、短い簡潔な文でわかりやすく伝えるという事が非常にうまい方のようで、1文を読んで「あー、なるほど」と知識としてあるものの絡まっていたものが解けるような感覚を何度か味わいました。

ただ、本著の評価自体からは少し外れる話なのですが、自身の知識の再確認が多く(この書き方or考え方使っていたし知っていたけどこういう名前がついていたんだ、とか)、新規性自体は自分の中では大きくなかったです。しかし、その分インターフェースを始めとした色々な考え方の根底にあるものを復習しつつ、知らなかった情報を補足していく形で自分のものに出来たのではないかと思います(勿論、マスターには程遠いですが…)

逆に言うとこれをもっと早くに読んでいれば無駄な試行錯誤もなかったかな、と思います。付録Dにもあるように

デザインパターンが重要なのは、経験を積んだプログラマの知恵を効率良く学ぶことができるから

という事なので、恐らく必死に自分で最適な設計を考えていた時間でこれを読んでいたらもう少し時間がかからなかったのかな、と思います。

因みに言うと、僕は一度この本を途中で読むのをやめたことがあります。Template Methodがイマイチわからなかった、というのがその理由なのですが、当時よくプログラミングについてわかっていなかったことも有り、久々に読んでみるかと引っ張り出してくると、当時わからなかった所もスラスラ読めて楽しくなって全部読んでしまいました。

その上で、これを読むのに苦労している方が居たら言いたいのが、始めのUML図の説明をちゃんと読むこと、Template Methodはちゃんと理解すること、です。

前回よくわからなくて読むのをやめた時には、UML図の説明が面倒で適当に読み飛ばして読み始めてしまったのが原因だと思っています。今回は、応用情報技術者試験の勉強で出てきたことも有り抵抗がなかったのでちゃんと読んだらUML図がきちんと読めるようになって非常に理解が楽になりました。

また、3章Template Methodについては(というか全てのパターンについてなのですが)、わかってしまえば難しいことはないものなので、しっかり理解に努めましょう。そこでインターフェースやsubclass responsibility等についてしっかり理解しておけば、あとは個人的にはそのマイナーチェンジと言うか、やりたいことややり方を変えたバージョンで通底する考え方は似通っているという風に感じたので、恐らくそれほど理解は大変ではないと思います。勿論量が量なので時間はかかるとは思うのですが…

後もう一つ言うことがあるとすると、厳密にわかろうとするより、概念や考え方を理解しようとした方が簡単に読んでいけると思います。何故こういったことをするのか、という話は大体章の終わりの方に解説として載っているので、よくわからなくても章を通して取り敢えず読んでみる、という読み方を個人的にはオススメします。

僕はJavaは過去に1度、非常に簡単なゲーム的なものを作るのにしか使ったことがなく、時間で言うと3時間も触ったことがなく、詳しく言語仕様は知らなかったのですが、C++オブジェクト指向プログラミングをしている人であれば何の問題もなく読めると思います。Java言語で学ぶ、とあたかもJava言語は前提知識かのように書いている割には説明もあったりしたので、プログラミングをしている人なら読めるのではないかと思います。

ただし、勿論とっても簡単、と言うものではないです。ただし、この本を読んで得られるものが多いのは僕は初学者だと思うので、チャレンジしてみることはオススメします。わからなければ少し寝かせておけば良いのです(それこそ僕のように)。いつかわかる日が来て、読めるようになる、と考えて、今はどうせ読めないだろうけど、位の気持ちで読み始めるのが良いのではないでしょうか。