this episode means a lot to me

自分のためのブログです。日々のやったこと・ふりかえりを主に書いています

MENU

【DevSumi2020】「ともにつくる」を実践するドメイン駆動設計

event.shoeisha.jp

ドメイン駆動設計はソフトウェアの利用者を含む関係者すべてが一丸となって開発するためのプラクティスで、まさに「ともにつくる」を実践する手法です。 このセッションでは、今再びソフトウェア開発の現場で盛り上がりを見せているドメイン駆動設計をキャッチアップできるようお話します。

セッションの内容は次を予定しています。

さぁ、ドメイン駆動設計を手に取って、「ともにつくる」を実践しましょう!

参考 : ボトムアップドメイン駆動設計

プログラム内容

  • ドメイン駆動設計とは
    • 対象のユーザの世界をに注目する
    • ドメインモデル ⇔ コードがむずびついている状態
    • モデルとパターンの二つの要素がある
  • 手法
    • モデリング:ソフトウェアの目的によって切り出すfeatureは異なる
    • パターンモデル:コードに落とし込む時のやり方をまとめたもの
  • ドメインを知るためには、その業界で従事するdomainexpertに聴く
    • 要件定義の会話で、ドメインの言葉の不足を補っていく
    • ドメインモデルを作る際は、実業務の言葉(実装ではない)でやり取りする
  • ユビキタス言語:開発者とclientが主体となって纏める言葉
    • 単語帳ではない.ドメイン固有な言葉を使うわけではない
    • ※エキスパートもドメインモデルの用語・単語の定義が曖昧な場合もある
    • 知識の捉え方を変えたもの
  • 境界付けられたコンテキスト
    • アクター(発注者・受注者)によって分割する例があげられた
      • 分けない場合注文にまつわるゴットクラス(ごちゃまぜ・責務まとまりすぎ)になる
    • ドメインマップとして纏めており、注文時に発注・受注両方にあることを気づける
  • パターン
    • ※書籍見てくださいとのこと
  • ドメインをはじめから把握することは難しい
    • そのドメイン固有のノウハウがあるため
    • ドメイン固有の言葉について理解を深めることで、domainexpertと距離が近づき、より深いドメインモデルに到達できる
  • ドメイン駆動設計をするには、ステークホルダーやdomainexpertに教え共想する必要がある
  • ドメイン駆動あるある
    • 実装時にドメインの曖昧なことに気づける。 ⇒ 実ドメインドメインモデル・オブジェクトを反復(開発)する
    • スタートするならパターンからにするとやりやすい

所感

そのドメインのノウハウなども含めてコードに落とし込む場合には、反復開発的に理解を深めていくやり方が適していそう。

モデリングした際に切り出すフィーチャ―何にするかというのはテスト観点の親を何にするか問題に通じている気がしていて、この辺りはまだふわふわしている手の動かしたい領域だなあ

ぼんやりと把握していたドメイン駆動開発について、開発プロセスの構造の言語化や、ドメイン駆動開発をする際にclientやチームメンバーに対してどう働きかけるかといった点について理解が深まるいいきっかけになった。