モデルベースソフトウェア開発コミュニティ DDD Night!!

提供: IT勉強会・セミナーまとめWiki
移動: 案内検索
開催日 2015/5/27
開催情報
タグ DDD
登壇者 増田亨さん
セッション資料
セッション動画
    ブログなど


    エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

    エリック・エヴァンス 翔泳社 2011-04-09
    売り上げランキング : 125643
    by ヨメレバ
    ※以降「ドメイン駆動設計」を「DDD」、「エリック・エヴァンスのドメイン駆動設計」の書籍を「DDD本」と略します。


    実践してみた

    • 基本に集中して繰り返す
    • 自分がDDDを体験したことが、DDD本の理解についてのターニングポイントだった。

    ドメイン駆動設計の中核の概念

    • 「まえがき」(冒頭の3段落(ページxii)の1ページに凝縮されている

    ドメインモデリングと設計

    • ドメインモデリングと設計は不可分で1つのもの
    • ドメインのモデルとソフトウェアの実装のコードを結びついた1つのものと考える
    • モデリングと設計の工程、担当を分けてはいけない
    • 毎日モデリングと設計をやり続ける

    オブジェクトコミュニティでの設計とプロセスの良い習慣

    • 「良い習慣」を自分たちでもやってみる
    • コミュニティの先駆者とはケントベック、マーチンファウラー

    参考文献

    新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

    Martin Fowler オーム社 2014-07-26
    売り上げランキング : 4069
    by ヨメレバ
    実装パターン

    ケント・ベック,Kent Beck ピアソンエデュケーション 2008-12-22
    売り上げランキング : 61959
    by ヨメレバ
    エクストリームプログラミング

    Kent Beck,Cynthia Andres 株式会社オーム社 2015-06-26
    売り上げランキング : 52144
    by ヨメレバ

    • これらはドメイン駆動設計のよい教材

    オブジェクト指向ではない世界(アンチパターン)

    • 増田さんも、もともとは手続き型プログラミング、ウオーターフォールの開発をしていた。
    • 手続き型だと重複してしまうコードが、オブジェクト指向だとうまく解決できることに気付いた
    • ドメイン駆動設計をやるには、オブジェクト指向を採用すると実現させやすい
    • 自分で手続型になってしまっていることに気付けるか、そこから抜け出す努力をできるか

    設計のイテレーション

    • ソフトウェアが動いてからもモデリングと設計を続ける。それをやめてしまったらDDDではない。
    • ミッション山積み、TODO山積みの状態での、既存のソフトウェアのリファクタリングは背反しない。というより、させない。
    • 「ここの実装に満足できていない」という箇所が頭の中にあるだけでも違う→システムは動いているけど常に気にしている
      • そのほうが費用対効果が高い。いやなにおいに気付けているか?
      • いざ改修に入った時に、それだけで違いがでてくる

    チームで体系的に取り組む

    • チームで取り組むことが重要。ひとりでやってみるエネルギーがあるならぜひチームでやってほしい。
    • DDDを始められる可能性がゼロの現場なんてないと思っている。
    • 「言葉」を使った意図の伝達がチームでソフトウェアをつくる時にはとても重要。DDD本にも一貫している思想。DDDのキモ。


    基本用語の理解

    • モデル、ドメイン
      • 導入文(冒頭の5段落。ページ2,3)に書いてある

    モデル

    • 膨大な知識を整理したシンプルでわかりやすい説明。大量なインプットの中から重要な要素を選び抜き、要約されたアウトプット。
      • どこまでコンパクトにできるか?
    • モデリングのスキルとは要約する力。
      • 文章を要約することをモデリングの訓練としてチームで実践している→非常に効果がある

    ドメイン

    • ソフトウェアを利用する人たちの活動と関心ごと
      • ソフトウェアの利用は、活動全体の一部
      • そこを理解しているとソフトウェアが変わってくる
      • 目的はソフトウェアを使うことではない
    • アンチパターン
      • 画面仕様書や機能一覧に使われている用語が示す概念と、ユーザーが用語を使う時の概念はまったく別物

    ドメインのモデリング

    • 利用する人たちの「活動」と「関心事」を要約すること
    • 利用する人たちの日々の膨大な活動からコア(要約)を導き出すこと
    • なぜその人たちはその活動が重要なのか?
    • その人のコンテキスト(文脈)を把握した方がコストパフォーマンスが高い


    「結論」から読み解く ドメイン駆動設定が目指すところ

    DDDの成功とは?

    • 何年も成長と変化を続ける。価値を付け加え続ける。
    • 使う喜び。作る喜び。
    • 自分の作ったソフトウェアが、2年、3年経った時にどう使われているか、何が起こっているかを知ることがDDDを実践するうえで重要

    DDDの実践

    • 深いモデル(完璧なモデルには永遠にたどり着けない)
    • しなやかな設計
    • そこを目指して
    • チームで考え続ける


    参考文献

    よくでてくる関心事の学び方

    ビジネスパターンによるモデル駆動設計

    Pavel Hruby 日経BP社 2007-08-09
    売り上げランキング : 344888
    by ヨメレバ
    Streamlined Object Modeling: Patterns, Rules, and Implementation[Kindle版]

    Jill Nicola,Mark Mayfield,Mike Abney Prentice Hall 2001-09-21
    売り上げランキング :
    by ヨメレバ
    アナリシスパターン―再利用可能なオブジェクトモデル (Object Technology Series)

    マーチン ファウラー ピアソンエデュケーション 2002-04
    売り上げランキング : 287612
    by ヨメレバ
    UMLモデリングレッスン

    平澤 章 日経BP社 2008-01-24
    売り上げランキング : 35737
    by ヨメレバ

    リレーションシップ駆動要件定義

    モデルベース要件定義テクニック

    神崎 善司 秀和システム 2013-09-24
    売り上げランキング : 41060
    by ヨメレバ