まめログ

Javaプログラマの歩み

DDD Night!!に行ってきました

モデルベース開発コミュニティさん主催の以下のイベントに参加してきました。


mbsdcjapan.connpass.com


ドメイン駆動設計は、気になっている設計手法なので第一人者とも言える
増田さんの話は聞きたいと思ってました。


資料も公開されています。

www.slideshare.net

当日は時間が足りず、後半の説明が駆け足になってしまったのが残念でした。
ただ、次回またやりましょうと増田さんから提案があり、会場から拍手が起こりました。

深いモデル/しなやかな設計とはどういうものか、
コードレベルでみられる機会は欲しいですね。

ドメイン駆動設計の情報発信は、成功例はもちろん失敗例もどんどん発信していってほしいとのことでした。
困っていることや失敗してしまったことなど発信できるようにしていきたいと思います。

www.amazon.co.jp

www.amazon.co.jp



DDD本

⇒最初は良い本だと思わなかった。

現場で取り組み始めて8年
⇒5人チームで半年~1年半

要点を理解してチームで共有できないと、本をいくら読んでも先に進めない。

中核の概念

 ドメインモデリングと設計
  モデルと設計をいつも関係づける
  同じチームが両方やる
  ⇒ドメインモデリングとコードの実装を同じものとチームで認識する必要がある
  毎日、モデリングと設計をやる

オブジェクトコミュニティの良い習慣

 ・リファクタリング

Amazon.co.jp: 新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES): Martin Fowler, 児玉 公信, 友野 晶夫, 平澤 章, 梅澤 真史: 本

 ・実装パターン
Amazon.co.jp| 実装パターン| ケント・ベック, Kent Beck, 永田 渉, 長瀬 嘉秀, 株式会社テクノロジックアート| 本| 読みもの

 ・Extreme Programming Explained
Amazon.co.jp: XPエクストリーム・プログラミング入門―変化を受け入れる: ケント ベック, Kent Beck, 長瀬 嘉秀, テクノロジックアート: 本


オブジェクト指向の基本を徹底的に叩き込むことがドメイン駆動設計の入り口

設計のイテレーション

 ソフトウェアが動いてからもモデリングと設計を続ける
 ⇒リファクタリングを続ける、動いてからも常にモデリングを気にする
  ⇒設計を気にしているほうが結果として費用対効果は高い
チームで体系的に取り組む
 「言葉」が重要

モデル

 膨大な知識を整理したシンプルで分かりやすい説明
 ・要約する力
 ・重要な要素を選びぬく

ドメイン

 ソフトウェアを利用する人たちの活動と関心ごと

 ドメインではないこと
  ソフトウェアを作る活動
  画面仕様書/機能一覧/ユーザーストーリー

ドメインモデリング

 利用する人たちの「活動」と「関心ごと」を要約する
 
 ・「活動」の要約
  アクティビティ図/業務フロー図
 ・「関心ごと」の要約
  概念モデル図(クラス図/パッケージ図)

ドメイン駆動設計の成功

 何年も成長と変化を続け、価値を付け加え続ける。
 ⇒使って楽しい、作って楽しい
 豊富な機能を持つ大きなシステムを段階的に成長させる

チームに現れる特徴

 対象となるドメインを理解し、その理解をソフトウェアに具現化することを「優先」する

ドメイン駆動設計の文脈でコードの臭い

 嫌な臭いはドメインの表現が埋もれている事を表している。

 名前を付けるために、変数を作成したりメソッドを抽出したりする。

 業務を説明するときに、コメントの代わりに変数名やメソッド名で業務を表現していく。
 ⇒クリーンなコード、リーダブルコードと異なってくることもある

 if文を見たらオブジェクト指向設計ができていないか疑ったほうが良い

 7章大事

深いモデル/しなやかな設計

 ⇒ソフトウェアを修正するときのコストが減る