本書は、プログラムにおけるインターフェース設計へアドバイスを与えるものです。GUIやデザインの話ではありません。高凝集度で疎結合な設計を行うためにインタフェース設計をどのように進めたらよいか、どのように考えてインターフェースを作れば良いかなどを説明しています。
システム開発というのは複雑な作業です。その複雑さを少しでも解消するために分割して統治せよ(Divide and Conquer)という理論を用いることが良いことだとされています。このときに大切になってくるのが「凝集度」と「結合度」になります。
凝集度は高いほど良い、つまり責任範囲が明確でが軸ぶれないほどよいです。結合度は低いほど、つまりそっちはそっちで勝手にやっててねとできるほどよいです。高凝集で低結合(英語で言うと「High Cohesion and Low Coupling!」)なプログラム部品にするために必要なのが「良いインターフェース」なのです。本書は、この良いインターフェースとは何か?どうやって良いインターフェースを設計するか?を解説するものです。
本書の対象読者は、プログラム経験があり設計に興味がある人、DI(Dependency Injection)って流行ってたけど未だに何が良いのかわからない人、テスト容易性が大事って聞くけどどうやって設計したらいいかわからない人です。
200ページくらいしかなく、かなり薄い本になっていますのでサクサク読めると思いますが、実はあまり詳しい説明というのが載っていません。内容が薄いのではなく、説明が薄いのです。「こんな場合こういう考えでインターフェースを切ると良いよ。作り方は二種類ある。長所はこれで、短所はこれ」みたいな説明が多いように思えました。
それでもかなりの良書の部類に入ると思います。さらっと読んで、良く理解できなかった部分は先輩に聞いたり、Webで質問したりして、自分なりに噛み砕いていく。そういう読み方をする本かなと思います。