ドメイン駆動設計に入門した

背景

仕事や趣味での設計に課題を感じていた(後からの変更が面倒になりがち)
ちょうどお勧めされてたこともあり読んでみた。
 

やったこと

  • ドメイン駆動設計入門」を1冊読み切った
  • 一部不明点をネットで調べた情報で補足した
Input↓
 

成果・感想

ドメイン駆動設計というものを行うための思想や、パターンを理解できた。

本自体は非常に読みやすく、ドメイン駆動設計とは何者なのか、を教えてくれる。
しかし、どういったときに使うべきか、なぜメリットがあるのか、がはっきり分からなかったためそこは上記のスライドがとても参考になった。

 
得たもの:大まかな思想を理解できた
  • 作りたいものを構成する要素をドメインと呼び、それらをプログラム上で忠実に再現する
  • そのため、作りたいものへの深い理解が必要となる
  • ドメインをシステムに落とし込む(再現する)ための手法=ドメイン駆動設計
  • ドメインは自分が何者なのかコードで語る(システム全体を知らない人が見ても、何を表現しているのか分かる 自己文書化と呼ばれていた)
 
得たもの:値オブジェクトやエンティティなどのパターンの概要を理解できた
  • 値オブジェクト...プリミティブ型の拡張 システム固有な値を表現し、不変
  • エンティティ...値を持つオブジェクトで可変 ただし区別ができる
  • ライフサイクルを持つものはエンティティを使う サービスのユーザー情報が分かりやすい(値が可変・同じ氏名でも区別できる・登録〜削除のライフサイクルがある)
  • ドメイン以外に、それらを使ってユースケースを実現する部分は必要(アプリケーションと呼ぶ)
 
ドメイン駆動設計を使う目的
  • ドメイン化はモデル化 使用者を巻き込んで一緒に考えて直していく
  • 業務で「知りたいこと」「やりたいこと」をドメインの単位にする
  • モデル化したものをそのままソフトウェアに組み込めるように設計する
  • その設計もイテレーション前提に作る モデルは何度も修正される前提
  • やりたいことからブレず、また変更に強いソフトウェアになる ←これが目的
 

今後

エリック・エヴァンスの「ドメイン駆動設計」を読む
仕事の設計で活かせないか考えてやってみる
趣味の設計で気軽に試してみる