ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    ドメイン駆動設計で、コーディングの迷いを払拭

    このエントリーを含むはてなブックマーク はてなブックマーク - ドメイン駆動設計で、コーディングの迷いを払拭 あとで読む
    人生は有限だから、作りたいツールは、1日で作るべきである。
    しかし、コーディングをしていて、手が止まる時がある。
    なぜ、高速でプログラミングができないのだろうか?と原因を探る。

    ●ロギング
    自分の行動パターン、振る舞いは、時間を計ったり、記録を付ければ、全て分かる。
    行動内容を分析して、躓きとなるポイント、ブレーキになっている要素を洗い出す。

    (1) 開発環境の準備
    (2) 設計の確認
    (3) 実際にコーディング

    問題は、(2)にあった。
    (3)の段階で、MVC設計でアプリを作ると、ロジックを書くところで時間がかかったり、止まったりしている。
    止まる、ということは、その前の(2)設計が間違えているのだ。
    初心に帰って、設計の原則を再確認してみよう。


    ●ドメインモデル(関心事の模型)

    実践的な設計って、なんだろう? from 増田 亨

    ドメインモデルの設計のコツ
    ・画面単位で設計しない
    ・機能単位に設計しない
    ・テーブル単位に設計しない

    じゃあどうすればよい?
    ・業務の関心事を表現できるように クラスを考える



    ドメインモデルの設計

    ドメインモデルの設計

    ドメインモデルの設計

    画面単位や、機能単位で設計してた!
    =MVCのモデルを、機能単位でまとめていた。

    ちいさなオブジェクトでドメインモデルを組み立てる from 増田 亨


    ドメイン駆動設計 - Wikipedia

    ドメイン駆動設計(英: Domain-driven design, DDD)とはソフトウェアの設計手法であり、'複雑なドメインの設計はモデルベースで行うべきであり'、'また大半のソフトウェアプロジェクトではシステムを実装するための特定の技術ではなくドメインそのものとドメインのロジックに焦点を置くべき'とする。
    この名称は Eric Evans が同名の著作で用いた。

    書籍 Domain-Driven Designでは、たとえば ubiquitous language といった高位の概念と実践について多数述べられている。
    これは、ドメインモデルがシステムの要求を記述するためにドメインの専門家が提供し、業務上のユーザーやスポンサー、開発者みなにとってうまく働くような common language(共通言語)を形成するべきである、という考えである。
    同書は多層アーキテクチャを持つオブジェクト指向システムにおいて、一般的なレイヤ構造におけるドメイン層を記述することに重点を置いている。

    ドメイン駆動開発では、ドメインモデルを表現する要素として、下記のものを挙げている。
    ・エンティティ (参照オブジェクト): ドメインモデル内のオブジェクトであり、その属性によってではなく、連続性と識別性によって定義される。
    ・値オブジェクト: 事物の特性を記述するオブジェクトである。値オブジェクトは特に識別する情報はない。通例読み出し専用のオブジェクトであり、Flyweight パターンを用いて共有できる。
    ・サービス: 操作がオブジェクトに属さない場合に、問題の自然な解決策として、操作をサービスとして実現することができる。サービスの概念はGRASPにおいて"純粋人工物"と呼ばれるものである。
    ・リポジトリ:ドメインオブジェクトを取得するメソッドは、記憶域の実装を簡単に切り替えられるようにするため、専門のリポジトリオブジェクトに処理を委譲するべきである。
    ・ファクトリー : ドメインオブジェクトを生成するメソッドは、実装を簡単に切り替えられるようにするため、専門のファクトリーオブジェクトに処理を委譲するべきである。



    Webアプリは、ユーザー視点だと、画面単位の設計になっちゃわないだろうか?
    ドメインモデル設計を、うまくMVCのモデルに反映させたい。

    ・リポジトリ → データ源の切り替え
    ・ファクトリー → 処理の切り替え
    ・サービス → その他諸々をぶち込む
    もうちょっと勉強してみよう。

    エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
    エリック・エヴァンス
    翔泳社
    2011-04-09
    ¥ 5,616

    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/1045-e9dff4ab

    FC2Ad