はじめに
クリーンアーキテクチャ 達人に学ぶソフトウェアの構造と設計
難易度★★☆
優先度★★☆
読む価値のある本だったと思います。
アーキテクチャ(設計)という言葉の意味に深みができました。
今まで設計とは、上流であるというざっくりとしたイメージしかありませんでした。
内容を知るためには、書籍を読むこと。
参考のリンク先で簡潔にまとめられているので、振り返りによし。
ソフトウェアのアーキテクチャ(設計)とはなにか
なるべく長期間、選択肢をより多く残し続けること。
仕様要求は時間とともに変わっていく。
そのためにはモジュールを変更コスト・リスクが小さくなるように
モジュールを分割をしていかなければならない。
分野によってはこの志向をアーキテクチャと呼ぶには適しないかもしれないが、
この発想はいろんなところで応用できる気がします。
アーキテクト(設計士)の仕事は何か
アーキテクトはより有効なアーキテクチャを維持することに責任を持たなければならない。
DBをOracleかMySqlに決定することは、本筋ではない。
あとから使用するDBが変わっても、あるいはCsv読み取りに変わったとしても、
変更コストとリスクが小さくなるような設計が理想。
人月商売を売る側にとってはメリットが少ない。
管理を肥大化させない、未来の選択肢を残し続ける。
両方しないといけないのが、アーキテクトのつらいところだな。
覚悟はいいか?俺はできてる。
モジュール間の依存方向を意識し続けること
より固いもの(変わりにくいもの)が、より依存されるべきである。
一例としては、ViewがModelに依存するべきであって、逆は正しくない。
以前から似たような設計はできていたが、読んだら明確に判別ができるようになった。
血管の逆流防止弁とか、S字トラップとかのイメージ。
ファームウェア
ファームウェアはソフトウェアとハードウェアの中間に存在する。
ファームウェアも変わるため、ファームウェアに依存しないソフトウェア設計が理想。