LoginSignup
6
3

More than 3 years have passed since last update.

#ddd_guide ドメイン駆動設計 モデリング/実装入門勉強会(オンライン) に参加した

Last updated at Posted at 2020-03-08

本投稿は下記のオンライン勉強会のメモです。

勉強会の主催者は松岡 ( @little_hand_s ) さんです。

DDD とは

ソフトウェア開発手法のこと

  • ソフトウェアとは
    • ソフトウェアを適用する対象の何らかの問題を解決する
  • ドメイン
    • ソフトウェアで問題解決しようとする対象のこと
  • モデル
    • 問題解決のために、物事の特定の側面を抽象化したもの
  • ドメインモデル
    • ドメインの問題を解決するためのモデル
  • データモデル
    • データベースに何かを永続化するためのモデル
  • 良いモデルとは
    • 問題解決ができるモデル
  • 良くないモデルとは
    • 問題解決ができないモデル
      • 現実に即していないモデル
  • 良いモデルを作るにはどうすれば良いか
    • ドメインに詳しい人から知識を得る
    • 運用した知見をモデルにフィードバックして改善する
    • モデルは最初から完成しない、改善していくもの
  • コードとモデルが乖離した場合は
    • モデルの更新をコードに正しく反映できない
      • バグが発生しやすくなる
        • モデルをそのまま表現したコードとなるのが望ましい
          • オブジェクトでモデルを表現する
    • モデルからコードを理解しにくくなる
      • ドメインに対する理解もできない
      • モデルは改善されない
      • ソフトウェアの価値を高めにくくなる
        • コードにも継続的に反映しないといけない
        • 頻繁な変更に耐えうるには、拡張性の高い設計が必要
        • これはソフトウェアとしては非常に高い要求
        • EntityやRepositoryなどのデザインパターンが生まれた
  • 軽量DDD
    • DDD の実装パターンだけ取り入れること
  • どうやってモデリングするのか
    • 体系的なものは色々
    • ユースケース図
      • ユーザーとアプリケーションの相互作用を定義する
      • ユースケースの具体化・言語化
        • 具体化しないと、どのようなモデルを作ればいいかわからない
        • 「タスク」はいち作業者としての視点と管理者としての視点でドメインモデルが変わってくる
    • ドメインモデル図
      • クラス図の簡易版
      • 業務の「ルール・制約」(=ドメイン知識)を吹き出しで記述する
      • 集約の範囲を明記する
  • 集約
    • 必ず守りたい強い整合性を持ったオブジェクトのまとまり
    • 必ずまとめて取得して、まとめて更新する単位
  • アーキテクチャーのお話
    • What ?
      • アプリケーション層(=UseCase層)
    • How ?
      • ドメイン層

QA

2020.3.8 ドメイン駆動設計 モデリング/実装入門勉強会 | sli.do

# 心に残るツイート
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3