今回は、コーディング、詳細設計、アーキテクチャなど抽象度別におすすめのソフトウェア設計の参考書をまとめました。
目次
コーディング・実装レベル
(必要な人は)UML入門
UML分かる人はいらないと思います。
この先の本は当たり前のようにUML図が出てくるので知らない人にはしんどいと思うのでまずはUMLを学ぶのが良いと思います。
Clean Code
命名、どういう引数が良いか、リファクタリング、並行処理などかなり具体的に書いてあります。
知ってることや当たり前のことが結構あるかと思いますが、しっかり守れていれば分かりやすく読みやすい綺麗なコードになると思います。
500ページは長い…。全部律儀に読まなくてもいいかなとは思います。
javaで学ぶデザインパターン入門
実装~詳細設計レベルの話です。良い設計だと何が嬉しいのかがわかるし、実戦ですぐに役に立つ知識だと思います。
デザパタは実務でもよく使われるし、良く知られているパターンは共通言語的な役割もしています。
仕組みだったり、なんでこういう作りにしているんだろうということを知らないと既存の設計を壊したりしてしまう可能性があるため覚えておきたい内容です。
設計原則など
Clean Architecture
パラダイムの概要、SOLID原則、Clean Architectureなどが出てきます。
Clean Architectureというタイトルだが主に設計原則が多く書かれてます。
だんだん抽象的な内容になってくるが、今まで上げてきた本を読んでいれば具体的なイメージができて理解しやすいはず。
Clean Architecture自体は最初は難しいと思うので理解したければ数回読んでおくと良いと思います。
エリックエヴァンスのドメイン駆動設計
抽象度が非常に高い。実務で経験しないと具体的にイメージできず理解ができないところが結構あるかもしれません。
先に現場で役立つシステム設計の原則を読んでいくといいと思います。
現場で役立つシステム設計の原則
実装レベルの話が少しあり、主に詳細・基本設計レベルのことです。ドメイン駆動設計的な内容も多く書かれています。
この本は具体例などあり非常にわかりやすく、エリックエヴァンスの本だと抽象的すぎてわかり辛かったところが、そういうことだったのか!て感じでわかってくると思います。
進化的アーキテクチャ
かなり抽象的で、上記の本よりさらに大きな枠組みのアーキテクチャレベルの話になります。
タイトルの通り、進化 – 変更に耐えられるには?という内容です。それに関連してDevOpsなどについても書かれています。
また、マイクロサービスなどそれぞれのアーキテクチャの種類、それぞれの利点・欠点について書かれています.
その他
Androidアプリ設計パターン入門
モバイルアプリ(Webも)で使われる設計パターンが数多く解説されています。MVCやMVVM, MVPなど代表的な設計パターンが分かりやすく説明されてます。
ただ、Androidの話なので、Android固有のView周りのコードが読めないと理解できないかも。
ついでにRxJavaやEventBusなどAndroidのライブラリについても解説がある。他プラットフォームの経験があってこれからAndroidやるなら1度読むと良いかと思います。
https://peaks.cc/books/architecture_patterns
まとめ
「こんなに多くの本読めない」と思うかもしれません。全部1ページ1文字ずつ読む必要はないと思います。
知ってたら飛ばせばいいし、自分語りのところとか雑談的なところは飛ばしていいと思います。ぶっちゃけボブおじさんの自分語り部分とかほとんど読んでない…。
早く読むにはいかに飛ばすかだと思います。しっかり理解したいところは読むスピードを早くしても意味がないです。
速く読むことについては以下の記事にまとめたのでよかったら読んでみてください!