『Java言語で学ぶ デザインパターン入門』:私のお気に入りなエンジニア向け書籍
2021年06月03日 木曜日
CONTENTS
───あ、これ以前書いたことがあるかも
それはきっと「デザインパターン」の始まりかもしれません
IIJ Raptorサービス部※のエンジニア、RyuSAです。普段はアプリケーションの実装やアーキテクチャ、最近はKubernetesを使った業務を担当しています。
※オンラインブローカー(FX/証券/銀行)向けFXプラットフォーム
本日は「私のお気に入り書籍」の紹介ということで、「Java言語で学ぶ デザインパターン入門」という本を紹介しようかと思います。Java言語、とタイトルに書かれていますが、プログラミング言語を問わずソフトウェア実装に携わるエンジニアであればぜひ一度手に取ってほしい書籍です。
本書における「デザインパターン」とは、GoF(the Gang of Four)が提案したソフトウェア開発における23の秘技……もとい23個の実装ベストプラクティスのことです。デザインパターンはよくある実装の特徴や関係性をパターン化したもので、わかりやすく明瞭なソースコードを書くためのひとつのアイデアです。
本書はそのデザインパターンをJava言語で実装しながら解説をする、さながら「デザインパターンの教科書」のような書籍です。
本書の好きなところ
個人的な好みになってしまうのですが、2点ほど本書の好きなところをあげておこうかと思います。
デザインパターンはコミュニケーションツール
デザインパターンをなぜ学ぶのか、これは本書の一番最初に議論されています。
デザインパターンは、開発者たちに、有益で豊かな語彙を与え、互いの意思疎通を容易にしてくれるのです。
デザインパターンは単なる実装のテンプレート、だけではなく、開発者同士の会話やコミュニケーションの役に立つという話です。実際にある程度プログラミングに慣れ親しんだことのある人であれば、例えばFooFactoryやBarBuilderなどの名前のクラスを見たことがあるのではないでしょうか?
これらはデザインパターンの名前を命名に利用しており、デザインパターンを知る開発者であればクラス名/メソッド名を見るだけでそのクラスが何を表現しているのか、そのメソッドがどのようなことをするのかがすぐわかります。
ソースコード内の命名が透過的になりわかりやすくなり、開発者同士の認識齟齬を減らすことができます。
そういった技術的な話に留まらず、開発者同士のコミュニケーションについても言及されているところが、個人的に好きな点です。
かゆい所に手が届く親切な解説
本書では23個のデザインパターンを1つずつ丁寧に解説してくれています。
どうして生まれたのか、どんなときに必要か、それぞれの役割はなにか、そしてどのように実装するのか……それらが細かくちょうど手の届かないかゆいところまで解説されており、ひとりで学習を進める上で必要になるであろうコンテンツが本の中で完結していることが多いです。
特に個人的には、あるデザインパターンと別のデザインパターンとの関係性についても言及してくれている部分が大変助かりました。
最後に
この本は「おれは、雰囲気でソースコードを書いているっっっっ!」と実装してレビュワーに呆れられていた(と今となっては思ってます)頃に手を取った一冊です。この本をきっかけに、デザインパターンやオブジェクト指向プログラミングなどの理解を深めるようになりました。
デザインパターンはすべてを解決する銀の弾丸ではありません。しかしわかりやすい実装ベストプラクティスと開発者同士のコミュニケーションを円滑にしやすいアイデアであることに違いはないと思います。
もし興味がありましたらひとつ手に取ってみてはいかがでしょうか?