翔泳社セールで読むべきたった1冊の本
翔泳社のセールで、僕が一番オススメする本はレガシーコード改善ガイドです。エリック・エヴァンスの通称DDD本はトラップです。気をつけましょう。
この記事の対象は、何冊も技術書を積んでいて、特にDDD本を積んでる、もしくはまだ一回しか読んだことない人です。
DDD本は最低でも2〜3周くらい読まないとただのSAN値を削るまどうしょの類いです(惑う書籍)。
レガシーコード改善ガイドをオススメする理由
レガシーコードとは、レガシーコード改善ガイドでは「ユニットテストの無いコード」を指しています。
貴方のプロジェクトにユニットテストが無い、つまりレガシーコードを書いている・メンテナンスしている人は、何を差し置いても読みましょう。最優先です。
そうじゃない人も、レガシーコードを生み出さない為に、この本を読んでおいた方がいいでしょう。
DDD本がまどうしょな理由
エリック・エヴァンスのドメイン駆動設計(DDD本)は、ポエムでありデザインパターンであり、雑多なものが詰め込まれた本です。
ドメイン駆動設計を簡単にいうと「開発対象の実務をマスターとせよ。おなじことを複数の言葉で呼ぶのは混乱しか招かないのでたった1つの言葉、実務で使われている言葉で示し、それを会議でもソースコードでも共通の偏在する言葉である、ユビキタス言語とせよ。実務とモデリングされたドメイン知識が食い違うなら、すぐさまドメイン知識を修正せよ。実務・ドメイン知識とソースがほんの少しでも食い違うならそれはソース(やアーキテクチャなど全部)の修正が必要である。ゆえに不断の努力に基づく、高度なリファクタリングが必須である。つまり、エクストリームな開発をしろ」です。
どうですか?これ本気でやれると思いますか?レイヤードアーキテクチャやentity object vs value objectとかのデザインパターン部分だけ採用しているなんちゃってDDDを採用している人たちもいるでしょうし、できうる限りの範囲でユビキタス言語を採用しているプロジェクトもあるでしょう。
でも、本質的にDDDをやるなら何回も何回も本を読み解いて、深い洞察と、幅広い知識と経験と知恵を連動させなければ、上述のようなことは実現できません。少なくともドメイン駆動設計は、DDD本単体では実現できません。他の本に書いてあることも全部脳内で有機的に結びついて始めて実現が可能です。
もちろんドメイン駆動設計の理念や、DDD本の様々なエッセンスはとても役立つものです。断片的にでも採用する価値はあります。
本を読むことを負担に感じる位なら投げ捨てろ
技術書を読むのは、内容によってはとてもしんどいです。DDD本は数ある技術書の中でも読むのが大変な本として大人気です。
周りに詳しい人がいて、いつでも質問出来るような状況で無ければ、読む時間に対するコスパの良い本ではありませんし、そもそもDDD本は他を一通り理解してから読むべき本です。
今の貴方がDDD本を読むべきですか?
そもそも、DDD本を読めないからと言って困ることはあまりありません。
それなら、もっとコスパの良い本を読むか、本から離れて他の何かをした方がいいでしょう。インプットの方法には、本を読む以外にも、コードリーディングや写経など、様々な方法があります。
今の時代は、GitHubというとてもコストパフォーマンスの良いサイトがあります。
コスパの良い本
レガシーコード改善ガイドはコスパの良い本です。
他社の書籍では先日、ブログで取り上げたClean Architecture達人に学ぶソフトウェアの構造と設計もオススメです。
クリーンアーキテクチャ本の内容(SOLID原則や他、設計についての考え方)は、DDDを理解・実践する上で、とても大切なものになっています。DDD本を読むよりも前に読むべき本です。
色々な本を乱読するという流派もありますが、基本的には同じ本を何周も読むべきものです。クソみたいな内容の本なら一回読んで捨てましょう。そうでなければ最低2周でも3周でも読み返しましょう。平均的には5周以上するのが望ましいかもしれません。
この記事が気に入ったらサポートをしてみませんか?