毎日SEの技術ブログ

平日は社内SE、休みは自宅でサービス開発するSEの技術ブログ

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)

"ユーザからメッセージがあるユーザに送信される" という表現になりシナリオと一致し、非エンジニアに伝わりやすい設計となるからです。

 

良くない設計も良い設計も満たせる用件は同じです。

大切なのは、非エンジニアから見て分かりやすいか否かです。

非エンジニアが簡単だと思っている改修が簡単ではないのは、

非エンジニアの思い描いているモデルが、システムに反映できていないからです。