JJUG ナイトセミナー 6.11 ドメイン駆動設計特集!に参加しました
GREEで行われたドメイン駆動設計(以下DDD)のイベントに参加してきました。
エリック・エヴァンスのドメイン駆動設計を和訳した和智さんと、GREEに勤める加藤さんの二名がスピーカーです。
講演内容は下記二本立てです。
・コードに語らせるために(和智さん)
・DDDで実践するときに役に立つ話し(加藤さん)
本イベントは DDD入門者が対象であり、あまり深い話はされませんでした。
内容としては、以下に示すことがDDDを理解する上で最重要な考えであると感じています。
・DDDでの良い設計とは、非エンジニアでもわかる設計であること。
例えば、LINEのようなコミュニケーションツールがあったとします。
そのとき
・一つのメッセージをMessageクラス
・メッセージを発する人をUserクラス
と定義します。
"ユーザからメッセージがあるユーザに送信される"というシナリオを考えたとき、DDDの観点から見た、良くない設計と良い設計を示します。
・良くない設計
Message.send(from_user, to_user)
"このメッセージをあるユーザからあるユーザに送信する"
とうような表現になり、非エンジニアに伝わりにくい設計となるからです。
・良い設計
User.send_message(message, to_user)
"ユーザからメッセージがあるユーザに送信される" という表現になりシナリオと一致し、非エンジニアに伝わりやすい設計となるからです。
良くない設計も良い設計も満たせる用件は同じです。
大切なのは、非エンジニアから見て分かりやすいか否かです。
非エンジニアが簡単だと思っている改修が簡単ではないのは、
非エンジニアの思い描いているモデルが、システムに反映できていないからです。