現場で役立つシステム設計の原則を流し読みした感想

こんにちは!

今回は「現場で役立つシステム設計の原則」を図書館で借りて流し読み(所要時間:2時間)した感想をまとめます。

なぜ読んだのか

  • Rubyコマンドラインアプリケーションを作っている中で、どんなクラスを作って、それぞれのクラスにどんな関係を持たせると可読性が高く、変更に強いのか知りたくなったため
  • これまでに学んだSOLID原則やデザインパターンを実際のシステムに適用するための、より抽象度の高い概念を学びたかったため
  • オブジェクト指向の記事でたまに目にしていたドメイン駆動設計(DDD)とはどんなものなのか知りたかったため。

読む前の知識レベル

以下の本をつまみ食いしながら読んだことがあります。 SOLID原則についてなんとなく説明できる程度の理解と、いくつかのリファクタリングテクニックを普段から気を付けて使ってみたり、テンプレートメソッドや、ストラテジ、コンポジットなどが活用できないか考えながらプログラミングしているようなレベルです。

良かったところ

  • 期待通り、一段抽象度の高い内容が記載してあった
  • DDDがどんなものか雰囲気が見えてきた

学んだこと

  • 現実世界の業務知識をドメインオブジェクトとして設計し、ボトムアップで開発する
  • ヒト、モノ、コトに分けて考えることで設計がしやすくなる
  • クラスが大きくなり過ぎた場合、クラスの中で同じインスタンス変数を使うものを集めて、新しいクラスを作るとよい
  • 三層(プレゼンテーション層、アプリケーション層、データソース層)+ドメインモデルの設計手法がある

難しかったこと

  • サンプルコードがJavaなので、理解しにくい部分があった

おわりに

オブジェクト指向の開発は、全体を俯瞰しながら必要な部品の候補を見つけ、その部品を使ってどうやって全体を組み立てていくかを考えながら開発していく手法です。

という一文が考え方の方針として役に立ちそうです! 一旦は流し読みでしたが、とてもためになる本だったのでまた再読したときに詳しくまとめます。

10/100