技術 ブログ

読書メモ:Java言語で学ぶデザインパターン入門


自分の世代では、学ぶべきプログラミング言語といえば常にJavaでした。大規模なシステムインテグレーターの案件で使われることが多く、オブジェクト指向の複雑さなど学ぶべきことが多いため、言語仕様を覚えるだけでも膨大な時間がかかり、結局プログラマになるのを諦めた人も少なくないのではないでしょうか。

自分も仕事帰りに分厚いJavaの本を読み漁り、当時はまだ高額だったサン・マイクロシステムズ(2010年にオラクルに買収されています)のJava資格を取得するなどして学びましたが、それでも「完全にマスターした」と胸を張って言える状態にはなりませんでした。

さらに、StrutsやSpringなど複雑なフレームワークが次々に登場し、それらの使い方やEclipseなどのIDEの操作方法を覚えるだけでも学習が終わることはなく、PHPのシンプルさがうらやましく思えたものです。

しかし、金融などお金を扱うシステムでは静的型付けの重要性は言うまでもなく、PHPのような動的型付け言語で作ると思わぬバグが入り込み、実用に耐えないことは誰もが知るところでしょう。

さて、なぜ今になってこの本でデザインパターンを学ぼうと思ったのかというと、理由は2つあります。

1つ目は、難解な数学をわかりやすく解説してくれる『数学ガール』シリーズの著者、結城浩先生の書籍だったからです。「わかりやすい」と評判なので、一度読んでみたいと思いました。

2つ目は、現在、自分はブロックチェーンノードやSolidityなどのスマートコントラクトの脆弱性を発見することを主な収入源にしており、これらには多くのデザインパターンが使われています。デザインパターンをきちんと理解しておくことで、コードをより正確に読み解けるようになりたいと思ったからです。

結論として、この本は非常にわかりやすく、大変勉強になりました。トリッキーなコードは避けられており、デザインパターンの本質を見失わないシンプルなサンプルコードで解説されているため、実際のクラス図と実装をしっかり結びつけて理解することができました。

とはいえ、Abstract Factory、Chain of Responsibility、Interpreter など、登場するクラスが多く複雑なパターンについては、完全に理解しきれたとはまだ言えません。これからも時間を見つけて、実際にサンプルコードを自分で書きながら理解を深めていきたいと思います。

すべて(GoFの23個)のデザインパターンを学んでおけば、たとえ言語が違ってもオブジェクト指向が使える現場なら、さまざまな開発に役立つでしょう。Javaに興味がない人でも、この本なら十分にわかりやすくデザインパターンを学べると思います。

この本で得た知識を、クラス設計およびデザインパターンによる処理の把握という抽象的な視点からのバグ発見にも役立てていきたいです。


コメント投稿フォーム

メールアドレスが公開されることはありません。 が付いている欄は必須項目です