もやもやエンジニア

IT系のネタで思ったことや技術系のネタを備忘録的に綴っていきます。フロント率高め。

現場で役立つシステム設計の原則読んだ

「現場で役立つシステム設計の原則」をちびちび読んでたのを読み終えたので雑記。

一言感想

  • DDDといえばエヴァンス氏のドメイン駆動設計がありますが、そちらを読んでなくても十分理解できる内容でした。本書はガチなDDD本ではなく、現場目線からの変更に強いコードをどう設計して書くかという内容を具体例を交えて説明しています。個人的には3章「業務ロジックをわかりやすく整理する」4章「ドメインモデルの考え方で設計する」辺りはとてもわかりやすいし実践しやすい内容で、新人氏にはリーダブルコードと合わせてお勧めしたいなというところで良書でした。
  • 願わくば本書に出てきたサンプルを実践した形の動くアプリケーションのコードが公開されてると全体が見通せてありがたかったです。

フロントの設計とか

  • 本の内容とは直接の関係は無いのですが、フロント(アプリ/Web問わず)作ってると設計の話はそれなりによく出てくる話題で、スマートUI/MVC/MVP/MVVM/CleanArchitecture/etc。。。と色々な思想が挙げられますが、たまにここにDDDが並ぶのを見かけるのですよね。個人的にはそれはちょっとどうかなと思っていて、戦術的DDD(エンティティとかリポジトリとか技術的な手法)にのみフォーカスしていて本質を忘れていると感じてます。本来は戦略的DDD(ドメインの関心の見つけ方とかコンテキストの切り分け方とかドメインモデルをどう探し出すかとか)がまず先にあって、それをどうコードに表現するかという話が戦術的DDDになるはずです。なので別にエンティティとかリポジトリがいなくてもドメインを綺麗に表現できていればDDDをうまく取り入れられてるよねというところで、設計のコンテキストでDDDが出てくるとちょっともやっとします。