はじめに
私は、現在エンジニア2年目でサーバーサイドは今年から初めて触りました。
「ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本」を読み始めたので、学んだことをアウトプットするために記事を書きました。
対象者
- サーバーサイドについて触ったことあるけど、DDDについてあまり知らない人
ドメイン駆動設計とは?
一言で表すと、
ソフトウェアの利用者を取り巻く世界と実装を結びつける
です!
・・・なるほど?
と自分はなりましたw
本を読み進めると、ソフトウェア開発者視点で大事なことは、何が利用者にとって価値のあるものかということがわかってきました。
例えば次のような2つのソフトウェアがあるとします。
- 車の製造の管理をするソフトウェア
- 物流で使用している車を管理するソフトウェア
この2つのアプリはどちらも車を取り扱っています。
上記にもありますが、ここで重要になるのが利用者にとって何が価値のあるものなのかです。
それぞれの利用者で車というものを見てみます。
車の製造の管理をするソフトウェア
こちらの利用者としては以下のようなことを価値のあるものだと思っていると考えられます。
- 車に必要な部品
- タイヤ
- エンジン
- ハンドル
- ブレーキ
- ドア
- ガラス
- などなど‥
このように車というものが何で構成されているかということに着目していそうですよね。
物流で使用している車を管理するソフトウェア
一方でこちらの利用者は↓のようなものに価値があると考えていると考えられます。
- 走行距離
- 車種
- 大きさ
- 運転者
- 運ぶもの
- 運ぶ場所
- などなど‥
比較してみると利用者が重要視しているものは同じ車でも全然違いますよね!(ここら辺の話はドメインモデルとも関係があります)
このような利用者の価値のあるものを実装と結びつけるために必要となるものがドメイン駆動設計なんですね〜
まとめ
ドメイン駆動設計とは利用者への理解を深めて、それをコード上で表現することと理解しました!
技術に目が行きがちなことも多かったので、ドメインの理解も怠らずに開発をしていこうと思いました!