ドメイン駆動設計入門『1章:ドメイン駆動設計とは』を読んで
2003年エリック・エヴァンズによって提唱された設計手法『ドメイン駆動設計』ですが、この記事ではドメイン駆動設計がどのようなものなのか何を目指しているのか下記本を参考に簡単にまとめます。
ドメイン駆動設計とは
簡単に説明するとドメイン駆動設計とは人の業務知識をコード化する開発手法のことです。詳しく説明していきます。
ドメインとは
ドメインは「領域」という意味を持つ言葉ですが、ソフトウェア開発におけるドメインは「プログラムを適用する対象となる領域」のことです。
例えばソフトウェアを作るとき利用者は何を解決したいのか需要を理解する必要があります。この需要こそがドメインに当たります。
技術者は技術的なアプローチで解決を図ろうとしがちで結局需要外のものを作ってしまうことがあります。ドメイン駆動設計はこれを防ぐためのものです。
ドメインモデルとは
ドメインモデルとは『システムに関わるさまざまな実体とそれらの関係を説明するシステムの概念モデルである。』とありますが、これでは理解できないと思います。
ドメインとモデルを分けて聞くと理解しやすいかと思います。まずドメインは先ほど「プログラムを適用する対象となる領域」と言いました。次にモデルとは何か。モデルとは現実の事象や概念を抽象化したものです。簡単に言うと現実の事象や概念を図や文章に表したものです。
そしてこの二つの言葉を合わせるとドメインモデルになりますが意味的には
プログラムを適用する対象となる領域を図や文章に表したものという意味です。
ドメインオブジェクトとは
簡単に説明するとドメインモデルをコード化したりソフトウェアで動作するモジュールにしたものです。
今なぜドメイン駆動設計が注目されているのか
2003年に提唱されたドメイン駆動設計ですがそれがなぜ今注目されているのか。それはドメイン駆動設計の良さがわかるまでに時間がかかったせいかもしれません。
現在ソフトウェアにおいて複雑化しているユーザーの需要に耐えうる開発が難しく問題になっています。それに対して長期的な運用を視野に入れたドメイン駆動設計は変更にかかるコストが減るなどのメリットが運用をしてきて分かり始めました。そしてこの問題の解決につながるのではないかと注目されています。
まとめ
本記事ではドメイン駆動設計とは何なのか何を目指しているのか前提知識について理解しました。次回以降は実装方法について学んでいきます。