ドメイン駆動設計再入門 #devsumiC 参加メモ

『エリック・エヴァンスのドメイン駆動設計の日本語訳の出版から、まもなく4年が経とうとしています。以前はぶ厚さのせいで「興味はあるけれども読みきれない」という方も多く、「DDD難民」などという言葉も生まれました。翻訳の出版に伴って読むことへの敷居は下がったものの、現在はまた別の問題が生まれているようです。つまり、DDDを適用しようとしても、具体的に何をするべきなのかがわからず、モデリング偏重になって全体としてのバランスが崩れてしまっているプロジェクトが出てきている印象があります。 本セッションでは、DDDで語られている内容を整理した上で、実際のプロジェクトに適用するためにどう解釈していけばよいのかをご説明します。

DDD nutshell

  • モデルとは
    • MVC 1979
    • モデルとは、知識の象徴である
    • メンタルモデルを写し取るもの
  • MVCからDCIへ

本に書かれていること

  • 第1部 ドメインモデルを機能させる
    • モデルの基本的な用法
      • モデル駆動設計
      • ユビキタス言語
    • モデルはソフトウェアの中核となる
    • モデルはビジネスパーソンと開発者をつなぐ
      • コミュニケーションのツールでもある
  • 第2部 モデル駆動
    • モダル実装のために
      • レイヤ化アーキテクチャ
      • オブジェクト指向
    • ドメイン層とはモデルが息づく場所
  • 第3部 より深い洞察へ向かうリファクタリング
    • モデルの深化
      • 時間をかけてモデルは深まっていく
      • 深いモデルを作るためのテクニック
  • 第4部 戦略的設計
    • モデリングのスケールアップ
      • モデルの整合性
      • 蒸留
      • 大規模構造

 

DDDの魅力

  • ある抽象度でモデリングは絶対に必要
  • ソフトウェアとしての本筋
  • SIの現場への福音
    • バランスが大事

 

システムの中のDDD

  • 何を対象とするのか
    • システムの外側で起きることへの配慮を忘れがち
    • 顧客と同じものを見る
  • 深化するのはモデルだけなのか
    • システム全体のフィードバックループを合わせて設計するべき
    • チームも成長する

 

まとめ

  • DDDは素晴らしい構想
  • システム全体で考えよう

 

最後に

  • 世界に対するエンジニアの貢献はコードの優劣では決まらない
  • 最先端の技術をやってるからとかそうゆうことだけではない
  • システムが世の中に対してどんな貢献をしているかが価値になる
Meetupdevsumi