ドメイン駆動設計(DDD)を実践する上での考え方

増田さん(@masuda220)が、日曜の朝からドメイン駆動設計(#DDDesign)を実践する上で考えるポイントを呟かれていました! このまま Twitter で垂れ流されるともったいない内容だったので、まとめに。
ソフトウェア開発 ddd オブジェクト指向 ドメイン駆動設計
ken_takasaki 2832view 1コメント
5
ログインして広告を非表示にする
  • 増田 亨. @masuda220 2015-06-07 11:13:35
    ドメイン駆動設計は、最初は、ドメインを表面的に理解した浅く貧弱なモデルと実装から出発し、ドメインの知識を増やしながらドメイン知識豊富なモデルと設計に発展させ、しっくりこない箇所でリファクタリングを繰り返して、ドメインをより深く理解したモデルを見つけ、それをコードに反映する活動。
  • 増田 亨. @masuda220 2015-06-07 11:20:32
    この深いモデルとしなやなか設計を探求する活動は、最初のリリースで終わるのではなく、ソフトウェアのライフサイクルを通じて継続することで、ソフトウェアの価値を増やし続けることができる。
  • Kentaro Takasaki @ken_takasaki 2015-06-07 12:06:53
    @masuda220 ただのSIで開発して納品、後は知らないだと、実現できない世界観ですよね。
  • 増田 亨. @masuda220 2015-06-07 12:17:35
    @ken_takasaki SI型の開発モデルだた、知りたくても知ることはできない、という面もありますね。技術者が自分の設計のその後を学ぶ機会が増えれば、いろいろな気づきがあって、設計スキルの向上につながっていくんですが。残念な状況です。
  • 増田 亨. @masuda220 2015-06-07 11:27:33
    そのために要求されるモデリングと実装のスキルは、高度で特殊なものではない。基本のスキルをきちんと理解して、それを選択したり、組み合わせる力。いちばん必要なスキルは「言葉」を使う力。正しくしゃべり、丁寧に聞き取り、不自然な表現や、意図と名前が一致しない時に違和感を感じる力。
  • 増田 亨. @masuda220 2015-06-07 11:56:17
    ドメインモデルで役に立つ部品。ドメイン固有のString, たとえば「商品名」。ドメイン固有のInteger, たとえば「数量」。ドメイン固有のLocalDate,たとえば「期日」。ドメイン固有のコレクション、たとえば「購買履歴」。汎用部品をラップしてドメイン固有の部品にする。
  • 増田 亨. @masuda220 2015-06-07 12:00:42
    場合ごとのビジネスルールを、if文やswitch文でがんばるのは、手続き型。オブジェクト指向の発想だと、場合ごとに、別々のオブジェクト(型)に仕事をまかせることを考える。 Java のenumは、「区分」とそれに関わる場合ごとのビジネスロジックを分離して記述する便利な仕組み。
  • 増田 亨. @masuda220 2015-06-07 11:31:44
    複雑な対象領域をオブジェクト指向で分析設計する時に大切なことは、全体的な構造や、処理の順番にかかわる依存関係の決定と作りこみをできるだけ遅らせること。独立性の高い構成要素(モジュール)を発見しながら、そのモジュールの組み合わせ方で、必要な機能を実現できることを後から検証する。
  • 増田 亨. @masuda220 2015-06-07 12:05:01
    次のようなコードは、ドメインの概念をうまく表現できていない可能性が高い。「重複したコード」「長いメソッド」「大きなクラス」「たくさんの引数」「コメント」「実装継承」。#ドメイン駆動設計 #コードのいやな臭い
  • 増田 亨. @masuda220 2015-06-07 12:10:04
    コアドメインを蒸留していく過程。 文章にしてみる(Statement)⇒コードで関連する箇所をマークしてみる(Highlight)⇒コアに関係する部品だけを集めたモジュールを試みる(隔離)⇒コアの概念を抽出して別モジュールにする(抽象化)
  • 増田 亨. @masuda220 2015-06-07 12:12:37
    というような内容を、体験的に学習してみよう、というのが、このワークショップ ddd-alliance0001.peatix.com ドメイン駆動設計の実践的なやり方・考え方に触れてみませんか?

コメント

カテゴリーからまとめを探す

「バラエティー」に関連するカテゴリー