タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

DDDに関するfuyu77のブックマーク (27)

  • 境界づけられたコンテキスト 実装編 - ドメイン駆動設計用語解説 [DDD] - little hands' lab

    little-hands.hatenablog.com こちらの記事で説明できなかった、「境界づけられたコンテキストをどうやって実装に落とし込むのか?という話を書きます。 境界づけられたコンテキスト実装の基イメージ 結論からいくと、基的には、 1コンテキスト = 1アプリケーション と思ってもらってOKです。 これを基として、用途や実装コストと相談しながら少しずつ設計を組み替える検討が可能です。 1アプリケーション単位で、オニオンアーキテクチャ概略の記事で紹介したアーキテクチャを1セット揃えると思ってください。 つまり、こちらの記事で紹介した2つの境界づけられたコンテキストに対して、 以下のようにアプリケーションを2セット作ります。 ドメイン層を外界と隔離して、外部に公開するする操作を周りの層で定義するのです。 最終的に、マイクロサービス2つ作ると思ってもらって良いです。そうすると、

    境界づけられたコンテキスト 実装編 - ドメイン駆動設計用語解説 [DDD] - little hands' lab
    fuyu77
    fuyu77 2024/01/19
  • [ 技術講座 ] Domain-Driven Designのエッセンス 第3回|オブジェクトの広場

    DDD難民に捧げる Domain-Driven Designのエッセンス 第3回 大規模なプロジェクトへの適用 株式会社オージス総研 アドバンストモデリングソリューション部 佐藤 匡剛 Domain-Driven Design Tackling Complexity in the Heart of Software Eric Evans 著 Addison-Wesley, 59.99ドル 560ページ ISBN: 0-321-12521-5 書籍『Domain-Driven Design』を紹介する連載も、今回で最終回です。前回はDDDの第II部、第III部を紹介し、16のパターンによってドメインモデリングの基的なアプローチを説明しました。今回は、残る第IV部から22のパターンを紹介します。 単一ドメインを扱ったドメインモデリングのノウハウは、前回までですべて終了です。第IV部「Str

    [ 技術講座 ] Domain-Driven Designのエッセンス 第3回|オブジェクトの広場
    fuyu77
    fuyu77 2024/01/10
  • 0063 号 巻頭言

    DDD を理解したいあなたのための DDD 入門以前 Rubyist Magazine 63 号をお届けする。 突然のお知らせで恐縮だが、日 Ruby の会の主たる事務所が東京から北海道に移転した。それもあってあまりまとまった時間がとれず、11 月のうちに書くはずだったのが気がつくと 12 月も半ばを過ぎていたので、今回は以前書きかけていた文章を発掘してお茶を濁したい。 Ruby とは直接関係がなくて恐縮だが、Ruby に限らずソフトウェア開発では現在でもちょくちょく話題になることがある、DDD についての話である。 ドメイン駆動設計こと DDD は 2020 年代のソフトウェア開発でもよく話題にされるが、率直に言うとストレートにポジティブな評価が行われているとは言い難い。 どちらかというと、ある種マニアックで、対象分野が制限されており、また初心者にはとっつきにくいところがある手法と思わ

    fuyu77
    fuyu77 2024/01/10
  • ドメイン駆動設計の正体

    はじめに "ドメイン駆動設計は当たり前のことを言っているだけ" "ドメイン駆動設計はただのオブジェクト指向プログラミング" "ドメイン駆動設計はより良いアーキテクチャだ" "軽量DDDはアンチパターンだ" このようなドメイン駆動設計に関する言及を聞いたことがあるでしょうか。 ドメイン駆動設計に言及する記事や書籍は多くありますが、それぞれ着目する側面が異なったり色々なコンテキストから言及されています。 おそらくそれが原因でドメイン駆動設計が何であるかをぼやけさせ、正体のわかりにくい概念になっているように思えます。 そこで今回は色々な観点から整理し、ドメイン駆動設計とは何であるのか、その正体を考えていきます。 ドメイン駆動設計の基的概念について ドメイン駆動設計はEric Evansが出版した「Domain-Driven Design」という書籍がルーツになっています。 ドメイン駆動設計を一

    ドメイン駆動設計の正体
    fuyu77
    fuyu77 2023/10/23
  • たのしいドメイン駆動設計: 序 / Enjoy domain driven design : ZYO

    自分の開発に対する姿勢を根的に変えたドメイン駆動設計(DDD)。ぜひみんなにもその面白さを知ってもらいたい!と思い社内向け資料を作成、さらにSpeakerDeckにて公開としました。 たのしんでご覧ください! 関連note記事はこちら:https://note.com/jgc_parallel…

    たのしいドメイン駆動設計: 序 / Enjoy domain driven design : ZYO
    fuyu77
    fuyu77 2023/09/20
  • Value Objectについて整理しよう - Software Transactional Memo

    Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

    Value Objectについて整理しよう - Software Transactional Memo
    fuyu77
    fuyu77 2023/07/14
  • 【書評】ドメイン駆動設計 モデリング/実装ガイド | DevelopersIO

    はじめに コードを書いていると、途中で「このモジュールなんか長くなってきたな・・・どうしよ」「この処理ってここのモジュールに書くべきなんだっけ」等と設計的な悩みが発生することが結構あります。 チームで開発しているので、そういう場合には途中でSlackやビデオチャットで相談したり、コードレビューの段階でやりとりして解決していました。 そこで、ふと「いつも的確なコメントくれるなぁ」と思っていたメンバーがいたので、話を聞いてみると「ドメイン駆動設計」を参考にしているとのことで、読んだを教えてもらいました。それが「ドメイン駆動設計 モデリング/実装ガイド」でした。 読んでみると最初の悩みがかなりスッキリしたので、私と同じような悩みを持っている方向けにブログを書くことにしました。 の簡単な概要 初めてDDD(以下、ドメイン駆動設計)を学ぶ方や、実際に着手して「難しい」と感じているエンジニアを対象

    【書評】ドメイン駆動設計 モデリング/実装ガイド | DevelopersIO
    fuyu77
    fuyu77 2023/06/15
  • CQRS実践入門 [ドメイン駆動設計] - little hands' lab

    この記事では、CQRSの入門として、軽量CQRS、別名クエリモデルについて解説します。 DDDの参照系処理で発生する課題 解決策 CQRSのメリット、デメリット 実装時の注意事項 部分的導入について なぜQueryServiceの定義がUseCase層なのか 整合性をどうやって担保するのか よくある誤解 データソースを分ける必要があるのか イベントソーシングとの関係 過去資料との繋がり もっと詳しく知りたい方は 現場での導入で困ったら DDDの参照系処理で発生する課題 DDDで定義されている実装パターンを使っていると、基的には永続化層との入出力はRepositoryを使うことになります。 更新系の処理ではEntityやValueObjectでドメインの知識を表現し、Repositoryを使って集約単位で永続化するという構成をとると、非常にメンテナンス性の良いものになります。 参考過去記事

    CQRS実践入門 [ドメイン駆動設計] - little hands' lab
  • DDDで設計するならCQRSの利用を検討すべき - Qiita

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

    DDDで設計するならCQRSの利用を検討すべき - Qiita
  • ドメインモデルの完全性と純粋性 - kawasima

    ドメインモデルには、完全性と純粋性、そしてアプリケーション性能の3つ全てを同時に満足させることは難しい場合があるという話。

    ドメインモデルの完全性と純粋性 - kawasima
  • 素のRailsは十分に豊かである(翻訳)|TechRacho by BPS株式会社

    はじめに 「Railsは関心の分離が不十分である」という批判をよく目にします。状況が深刻になったら、Railsに足りない別のピースを導入しなければならないというのです。しかし私たちはそうは思いません。 「素のRails(vanilla Rails1)ではここまでしかできない」みたいな批判を耳にすることがよくあります。Railsはアーキテクチャレベルで関心の分離が不十分なのだから、アプリはいずれメンテナンス不能になり、足りないピースを導入するという別のアプローチが必要になるというのです。 代表的なDDD(ドメイン駆動開発)書籍では、概念上の4つの層である「プレゼンテーション層」「アプリケーション層」「ドメイン層」「インフラストラクチャ層」について議論しています。 アプリケーション層は、ドメイン層と協調動作してビジネスタスクを実装します。しかし、Railsが提供しているのは「コントローラ」と「

    素のRailsは十分に豊かである(翻訳)|TechRacho by BPS株式会社
    fuyu77
    fuyu77 2023/01/13
    Service Objectを使わない設計手法について詳しく書いてあって参考になる。リッチなドメインモデルの志向は良さそう。そこそこ高度なので開発チーム皆で目線を揃えるのにちょっとハードルありそうだが。
  • DDD本を読むためには前提知識が非常に多いよ - Qiita

    初めに きっかけ 新人研修中にDDDとか、PoEAAとかの話が少しだけ出ました。 ただ、イマイチわからないとの声が多数。 理由 なぜなら予備知識がたくさん必要だからです。(ほんとに多い) これはわからなくて当然。 そこで 独断と偏見で、予備知識となる用語を解説します。 偏見多いので、より正確な情報は、書籍やWebで調べてね。 この辺を説明します UML クラス図/シーケンス図 デザインパータン GoF/PoEAA 階層化アーキテクチャ DDDのサマリ 知らなきゃいけない知識が多くて面倒だね。 説明しないけど、オブジェクト指向やデータベースとかの知識も必要だよ。 説明前にDDDのページを見てみよう!!! DDDの最初のページ 「エリック・エヴァンスのドメイン駆動設計」より ??? よくわからないね さっきの図って何? 灰色の中心部分はソフトウェア設計のモデリングを表しています。 モデリ

    DDD本を読むためには前提知識が非常に多いよ - Qiita
    fuyu77
    fuyu77 2022/11/01
  • HanamiはRubyの救世主(メシア)となるか、愚かな星と散るのか

    はじめに: レイルズ王国と異端審問 Hanami について Hanami は Rails じゃない Hanami の設計思想 Hanami の各層について Router Router の高度な使い方 Controller Validation View Helper, Form Model Entity Repository SQL クエリの発行 Interactor Hanami::Interactor Hanami::Validations Test Factory Hanami の不十分な点 その他の Hanami のプロジェクト Hanami::Cli Hanami::Events Hanami 2.0 まとめ 著者について はじめに: レイルズ王国と異端審問 20XX年、僕は Ruby on Rails の規約に違反したコードを書いたことでレイルズ王国の異端審問にかけられていた。

  • 「RubyでDDDやるならHanami」という噂の真相

    こんにちは。株式会社InnoScouter CTOの大西(Twitter: @monarisa_masa)です。 InnoScouterでは、Ruby製WebフレームワークであるHanamiを採用しており、DDDを用いて開発しています。 Hanamiについて言うと、私個人としては、前職も含めて4年ほど運用経験があります。 ここでは、Hanamiが出てくるとよく話題にされるRailsとの比較は取り扱いませんが、初めてHanamiについての記事を読まれる方にも分かるようなサンプルコードで説明したいと思います。 突然ですが、こちらが日のメイントピックです。 今回は、「RubyでDDDやるならHanami」と言われてますが、当にそうなの?ってところを掘り下げていきたいと思います。 ツイートが意味していることと、それに対する自分の考えを話していけたらと思います。 この記事の対象読者 Rubyを触

    「RubyでDDDやるならHanami」という噂の真相
    fuyu77
    fuyu77 2022/10/26
  • [ 技術講座 ] Domain-Driven Designのエッセンス 第2回|オブジェクトの広場

    DDD難民に捧げる Domain-Driven Designのエッセンス 第2回 DDDの基礎と実践 株式会社オージス総研 アドバンストモデリングソリューション部 佐藤 匡剛 Domain-Driven Design Tackling Complexity in the Heart of Software Eric Evans 著 Addison-Wesley, 59.99ドル 560ページ ISBN: 0-321-12521-5 連載は、全3回の予定でEric Evansの書籍『Domain-Driven Design』(以降DDD)を紹介しています。前回はDDDの概要を説明し、第I部「Putting the Domain Model to Work」からDDDの基原則となる3つのパターンを紹介しました。今回は続く第II部と第III部から、(アンチパターンを1つ含む)16のDDDパタ

    fuyu77
    fuyu77 2022/10/18
  • トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight

    トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight

    トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
    fuyu77
    fuyu77 2022/10/18
  • dev.toのServiceクラスについてDDDとPofEAAを読んで考察してみた

    RailsにおけるServiceクラスに関する設計的な話は、プロジェクトの性質や開発チームの状況によって色々な意見があり、これといった解りやすい結論が出ていない状況だと思っています。 この状況において、ある程度の規模のOSSのServiceクラスの活用事例を取り上げて、考察することは意義がありそうだと思いました。 また、ServiceクラスのアイデアはRailsやWeb開発に関わらず、幅広い分野のソフトウェア開発で適用できるものなので、そういった意味でも価値がありそうだと思い、記事にしてみました。 対象とするOSSプロジェクトは、爆速技術記事サービスで有名な dev.to です。 まず、dev.toにおけるServiceクラスの活用方法を見た後で、ソフトウェア設計に関する名著である、Patterns of Enterprise Application Architecture と Doma

    dev.toのServiceクラスについてDDDとPofEAAを読んで考察してみた
    fuyu77
    fuyu77 2022/10/16
  • ServiceとDCIについて - かとじゅんの技術日誌

    面白そうなネタがあったので、自分なりの考えをまとめてみる。 Ruby/Rails 用 DI コンテナ Dee をつくった、あるいは Ruby のカルチャーについて この記事はRuby用のDIコンテナの話題なんですが、DCIについても言及されているようです。比較軸はDIそのものというより、サービスとDCIだと思うので、それについてダラダラといくつか考えをまとめてみます。多分返事になるようでならないかも。それと宗教上の都合でDDDの視点から書きます...。 サービスという言葉はあいまい まず、簡単に前提の整理から。単に"サービス"って言葉が何を指すのか結構曖昧です。 サービスは簡単にいうと手続きとか振る舞いのことですが、細かくいうと、PofEAAでいうサービスと、DDDいうサービスは、目的が異なります。前者はアプリケーションのためにドメインモデルを再利用可能にするためのものです。後者はドメイン

    ServiceとDCIについて - かとじゅんの技術日誌
    fuyu77
    fuyu77 2022/10/16
  • 混乱しがちなサービスという概念について - かとじゅんの技術日誌

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

    混乱しがちなサービスという概念について - かとじゅんの技術日誌
    fuyu77
    fuyu77 2022/10/16
  • とにかくドメイン駆動設計を実践してみる試み ~TODO管理システム編~

    はじめに この記事はサービスを爆速で作ったり、ドメイン駆動設計の解説をするようなものではありません。 ドメイン駆動設計の勉強をしていて、手を動かす機会が足りないと感じていました。そこで、今の理解で実際に動くシステムをドメイン駆動で開発してみようと思いました。 記事はその開発の過程や考えていたことを記録したものです。 「この人はこういう形に落とし込んだんだな~」くらいで見ていただけたらありがたいです。 作成するシステム 今回作るのはTODO管理システムです。 初回の開発では以下の機能を開発しました。 TODOのタイトルと詳細を登録できる 作成したTODOを検索できる 選択したTODOの詳細を確認、完了、削除ができる デモ デモなのでメールの確認はダミーです。新規登録をしたら画面に出るメール確認リンクを踏めば確認済みとなります。 その後右上のログインからログインしてください。 デモのデータベ

    とにかくドメイン駆動設計を実践してみる試み ~TODO管理システム編~
    fuyu77
    fuyu77 2022/03/11