タグ

DDDに関するstockedgeのブックマーク (10)

  • 似非サービスクラスの殺し方 / #ginzarb

    ぎんざRuby会議LT資料

    似非サービスクラスの殺し方 / #ginzarb
  • 混乱しがちなサービスという概念について - かとじゅんの技術日誌

    社内でサービスがよくわからないという話になったので、考察を少しまとめておきます。 過去のエントリでも以下のように触れましたが、もう少しかみ砕いてみよう。 サービスという言葉はあいまい まず、簡単に前提の整理から。単に"サービス"って言葉が何を指すのか結構曖昧です。 サービスは簡単にいうと手続きとか振る舞いのことですが、細かくいうと、PofEAAでいうサービスと、DDDいうサービスは、目的が異なります。前者はアプリケーションのためにドメインモデルを再利用可能にするためのものです。後者はドメインの知識を表している振る舞いです。これはのちほど詳しく説明します。 まぁこのあたりは具体例がないと理解しがたいですが、レイヤーの違いによって責務が異なるという感じです。DDDのサービスの章では、サービスには、アプリケーション層、ドメイン層、インフラストラクチャ層と、複数のレイヤーに存在すると言及されていま

    混乱しがちなサービスという概念について - かとじゅんの技術日誌
    stockedge
    stockedge 2017/03/13
    “ドメインモデルはユビキタス言語に即した表現を行うのが責務なので永続化は責務対象外としている”
  • ドメインモデル貧血症 - Strategic Choice

    Anemic Domain Modelどういうこと?マーチン・ファウラーさんの著書「エンタープライズ・アプリケーション・アーキテクチャ・パターン」で紹介されている、「ドメインモデル」パターンを使用した場合の、「アンチ」パターンです。来のドメインモデルは、「対象となるビジネスエリアをモデル化したオブジェクトのレイヤ全体を挿入する」ということです。モデル化したオブジェクトは、オブジェクト指向設計の基概念通り、データとプロセスを結合し、対象となるデータと関係しているプロセスを集積します。ドメインモデル貧血症は、一見、物のドメインモデルに見えます。オブジェクトがいくつかあり、それらはドメイン空間にある名詞から名前をつけられています。オブジェクト同士がしっかりとしたリレーションで結びついており、物のドメインモデルと同じような構造を持っているのです。ただし、それらのオブジェクトにはわずかな振る

    stockedge
    stockedge 2017/03/13
    “ドメインモデル貧血症とは、単なる手続き型設計のこと”
  • Scalaコードでわかった気になるDDD | GREE Engineering

    みなさん、こんにちは。グリーのかとじゅん(@j5ik2o)です。 このエントリは GREE Advent Calendar 2013 の 18日目の記事です。よろしくお願いします。 私がグリーに入社してやっていることは、プログラミング言語 Scalaとドメイン駆動設計(以下、DDD)の布教活動です。布教活動といっても宣伝するだけでは具体性に欠けるので、実際に開発チームに入ってScalaやDDDの技術支援を行っています。エントリでは、Scalaを用いたDDDの設計と実装をどのように行っているかを、DDDを知らない人でもできるだけわかりやすく説明したいと思います(Scalaわかっていると読みやすいですが、あんまり複雑なコードは出てこないのでなんとなく読めるのではないかと思います)。なお、DDDの実践例は他にもあります。一例だと思って読んでいただければ幸いです(先日のSNSチームでのドメイン駆

    Scalaコードでわかった気になるDDD | GREE Engineering
    stockedge
    stockedge 2017/03/12
    “CoCを強制するフレームワークとは相性が悪い”“ScalikeJDBCやTrinityのようにモデルに対する制約が緩いフレームワークを採用する”
  • 実践DDDのサンプルプロジェクトが学びしかない - Mitsuyuki.Shiiba

    IDDDを読んで、それなりに書いてあることは分かり始めたかな。と思ってたけど。 いざサンプルプロジェクトを読んでみたら、全然そんなことなかった。(ノД`)シクシク github.com いつものように、自分メモ。 プロジェクトの構成 全部で3プロジェクトと1ライブラリがある。 iddd_agilepm データストアとしてKVS(LevelDB)を使用。 DIコンテナは使ってない。 iddd_collaboration Event Sourcing と CQRS。ORM使わずにやってみた。 例をシンプルにするために、Event Sourcedな書き込みモデルと、CQRSの読み込みモデルを1スレッドで実行してる。イベントジャーナルとしてLevelDBを、リードモデル用にMySQLを使ってるのでほんのちょっとだけ一貫性がない状態が発生する可能性がある。別々のデータストアを使って、でも、できるだけ

    実践DDDのサンプルプロジェクトが学びしかない - Mitsuyuki.Shiiba
    stockedge
    stockedge 2017/03/12
    “アプリケーションサービスと違って、モデルは値オブジェクト使いまくる”
  • レイヤー設計とか、オブジェクト指向とか、DDDとか、その辺 - まっつんの日記

    自分の指向としては、技術の勉強というとDDDとかOODとか、そういう抽象的方面が好きなのだが、オブジェクト指向否定論もあることは承知している。 ---------------追記 2020/09/27 この記事は「ユーザーのメンタルモデルを反映させる」というMVCの来の設計思想を捉えていません。ただ、巷に流布しているものを元に考えた記事としては資料的には無価値ではないと思いますので、ログとして残しときます。 MVCの来の考えはOOUIや、コプリエンのLean Architectureが良さそう ------------------------------- 過剰設計の落とし穴 実際、レイヤー構造や業務モデルを頑張って作っているが、実装時に足かせになったり、プログラマがよく規約や方針を理解できずに、ごちゃごちゃに作り、余計に複雑になってしまったりするのは、色々聞く。(自分はこれをや

    レイヤー設計とか、オブジェクト指向とか、DDDとか、その辺 - まっつんの日記
    stockedge
    stockedge 2017/03/12
    “フレームワークが前提としているのは、自分の整理におけるMVCSwithDAO2”
  • 実践的な設計って、なんだろう?

    Devlove 名古屋 2014-5-18 DDD, Object Oriented Design, ドメイン駆動設計 オブジェクト指向設計Read less

    実践的な設計って、なんだろう?
    stockedge
    stockedge 2017/03/12
  • DDD の Java EE 実装サンプル - Cargo Tracker を読み解く - Qiita

    Cargo Tracker とは エリック・エヴァンスのドメイン駆動設計 で紹介されている様々なパターンを実際に使用して、有志が作成したサンプル Web アプリのこと。 DDD Sample Application - Introduction オリジナルは Spring Framework を使用している。 一方、この実装を Java EE 7 で置き換えたサンプルが公開されている。 Cargo Tracker この実装を読みながら、 DDD で紹介されている以下のパターンがどのように実装されているのかを確かめてみる。 レイヤ化アーキテクチャ エンティティ 値オブジェクト 集約 リポジトリ サンプルアプリを動かす ソースのダウンロード このページ の一番下に zip のリンクがあるので、そこからダウンロードする。 環境準備 以下のソフトウェアをインストールする。 JDK 7 以上 Mav

    DDD の Java EE 実装サンプル - Cargo Tracker を読み解く - Qiita
    stockedge
    stockedge 2017/03/11
    “デフォルトの可視性である パッケージプライベート は、集約内部で閉じた処理を実現するときに有効”
  • DDD超入門(後編) - Domain-Driven Designの適用Step - エンタープライズギークス (Enterprise Geeks)

    前編ではDDDの概要についてふれたが、後編ではDDDの適用Stepを3つのStepに分けて紹介する。 まずStep1として、アプリケーションに登場しうる概念を抽出してドメインモデルで表現する。 次にStep2として、各ドメインの概念を深掘りしてソフトウェアとしてどう表現するかにについて紹介する。 最後にStep3でドメイン部品の仕上げとDDDの恩恵ついてふれていく。 Step1: ドメインモデルによる表現 DDDでは機能やユースケースに加えて、その裏に潜んでいる「概念」を抽出する必要がある。そのため、DDDを導入するにあたってアプリケーションに登場しうる概念を整理した「ドメインモデル」がまず必要となる。全体のコンテキストを整理して、該当のドメインモデルを描くことがDDDの最初の1歩となる。 例として、よくある一般的な受注管理の簡単なドメインモデルをあげる。 「顧客」からある「商品」の「注文

    DDD超入門(後編) - Domain-Driven Designの適用Step - エンタープライズギークス (Enterprise Geeks)
    stockedge
    stockedge 2017/03/11
    “実際のビジネスロジックの記述はドメインレイヤーの部品に委譲して、アプリケーションサービス自体はドメインレイヤーの部品の調整に徹する”
  • DDDで設計するならCQRSの利用を検討すべき - Qiita

    タイトルに書かれていることで全てなのですが、DDDとCQRSの併用について強調している日語の情報が少ないので、軽くまとめておきます。 CQRS+DDD CQRS(コマンドクエリ責務分離)とは、サーバの機能を「コマンド」(副作用あり)と「クエリ」(副作用なし)で完全に分けちゃおう、という考え方です。そもそも「コマンド」と「クエリ」ではあらゆる要件が異なります。 一貫性: 「コマンド」は整合性のある処理が必要、「クエリ」はあまり気にする必要なし ストレージ: 「コマンド」側は正規化してデータを保存したい、「クエリ」側は非正規な方が効率的 スケーラビリティ: 「コマンド」は全体の負荷の中で占める割合が少ない、「クエリ」は負荷が大きい なので分けちゃうわけですが、 コマンド側 複雑なビジネスロジックが絡むので、ドメイン駆動が活躍 クエリ側 複雑なビジネスロジックがないので、ドメイン層はスキップ

    DDDで設計するならCQRSの利用を検討すべき - Qiita
    stockedge
    stockedge 2016/11/28
    “初期の仕掛けとしてCQRSを導入しておく”
  • 1