LoginSignup
0
1

More than 3 years have passed since last update.

【DDD】わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~【第1章】

Last updated at Posted at 2020-07-13

新卒の同期間でドメイン駆動設計(DDD)の勉強会を行った際に読んだ

『わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~』

について、ざっくりですが、解説します。
※ かなりざっくりなので、厳密には違うこともあるかもしれないです。

第1章 DDDって何?

1.1 DDDとは?

DDD(Domain Driven Design : ドメイン駆動設計)

  • ソフトウェアの開発手法
  • ソフトウェアをどのように設計していくかの理論。
  • DDDは難しい

※ DDDが初心者にとって難しいということについては、なぜDDD初心者はググり出してすぐに心がくじけてしまうのか

1.2 DDDでは何をする?

開発者とドメインエキスパートが協力して、ドメインを反映させたモデル(ドメインモデル)を作り上げる

  • ドメイン : ソフトウェアを適用する対象範囲
  • ドメインエキスパート ドメイン(対象領域の業務知識)について詳しい人(上司やビジネス側の人間)

1.3 ドメインを反映したモデル

  • ドメインモデル : 業務ドメインに特化したソフトウェアのモデル
  • ドメインを反映したモデル : ドメインを構成するもの、概念、振る舞い、関連性を表現したもの

効率的にDDDを行うには?
1. 開発がイテレーティブ(反復的、PDCAサイクルみたいなもん、参考 : 反復型開発
2. 開発者とドメインエキスパートが密接(密です)

1.4 DDDにすべき理由

  • ドメインエキスパートと開発者が同じ土俵に乗ることで、プログラマーの視点だけではなく、業務側の視点も踏まえたソフトウェアを作れるようになる
  • ソフトウェアに関して理解している人が一部の人(たいていは開発者)たちだけという状況をなくすことができる
  • ドメインエキスパートとソフトウェア開発者、そしてソフトウェアそのものとの間で、一切の通訳が不要となる
  • 設計がコードであり、かつコードが設計である(名言)

1.5 DDDの要素

  • 戦略的設計 : 考え方・概念
    • ユビキタス言語(第2章)
    • 境界づけられたコンテキスト(第4章)
    • コンテキストマップ(第5・6章)
  • 戦術的設計 : 技術的手法
    • エンティティ
    • 値オブジェクト
    • サービス
    • レイヤー化アーキテクチャ
    • etc

※戦術的設計については、ドメイン駆動設計入門は新人時代にDDD挫折した私にも分かりやすかったが参考になると思います。

Next

TBD

0
1
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
0
1