タグ

DDDに関するNyohoのブックマーク (24)

  • To DDD or not to DDD? Domain modelling case study - Weronika Łabaj - DDD Europe 2022

    Nyoho
    Nyoho 2023/02/24
  • DDDの正体は実装パターンとモデリングの組み合わせ - パンダのプログラミングブログ

    PoEAA を通して DDD の半分を理解する マーティン・ファウラーの PoEAA を読んでから、DDD のことを考え続けている。今まで DDD の話題はあえて避けてきた。分厚く難解な書籍、増えるコード量、教祖とその信徒たち(MV)、全てをその視点から解釈しようとする試み、少しでも間違えたら求められる自己批判、無知な者に対する SNS 上のオルグ、いつまでも出てこない総括、それでも信じるものは救われる。「一匹の亡霊がIT界隈を徘徊してる。DDDという亡霊が...」 まあ早まらないでほしい。何も DDD こき下ろそうというわけではない。自分の実力不足が主な原因と思い、深入りする前から「わからないもの」と決めつけていた DDD は、PoEAA というライトに照らされてその姿を私の前に姿を表し始めた。それは亡霊ではなく、確固たる手触りのある実体(Entity)だったのである。 PoEAA は

    DDDの正体は実装パターンとモデリングの組み合わせ - パンダのプログラミングブログ
    Nyoho
    Nyoho 2022/06/27
    DDDの半分は実装パターンで、もう半分はモデリングとのこと
  • イベントストーミング導入

    コラボレーションの必要性 アジャイル的な観点で考えると、人と人とのコラボレーションという非常に価値のあるプロセスである。様々な専門性や視点を持った人がある課題に対して各々の知識を集結させて、解決策や新しい視点・課題の発見につながる大きなメリットがある。有名なあるアフリカのことわざで「早く行きたければ一人で進め、遠くまで行きたければ皆で進め」というものがあり、これはコラボレーションの重要性を説いているのだと思う。 私が働いているソフトウェアの会社然り不確実性が高い業界や市場などで何かしらの成果を出す場合は、コラボレーションを適切に行うことで大きな結果を生むことができると考えられている。 しかし、実際は各々のコラボレーションは結構難しいのが一般的だと思う。自分の専門としない分野とのコラボレーションは未知への恐怖・防御反応や心理的安全性が少ないことからコラボレーションがしにくいなど様々な障害が存

    イベントストーミング導入
    Nyoho
    Nyoho 2022/03/04
    “よくDDDの戦略的設計フェーズでドメインモデリングで使われることが多い”
  • 最近の海外DDDセミナーを聞いてみたら色々と常識が破壊された - Qiita

    TL;DR 最近の設計志向はイベント駆動がかなり中心になっている とくにDDD界隈がここまでイベント駆動一槍だとは思わなかった ストーリーを出発点にイベント駆動で設計を組み立てる「イベントストーミング」がかなり多くの場所で事例として取り上げられている はじめに 最近、洋書や動画の講演資料などいくつか海外の情報源に当たることがおおくなり、その中で「結構日でやられている取り組みとちがうなー」と考えることが多く、一旦そのあたりの差分をまとめておこうかと思いました。 ただの出羽守(あるいは鹿鳴館精神)ではなく、一つの潮流としてこんなのがあるってのを記述できればなと思います イベントが設計の基線となりつつある、、、のか? まず1つ目に驚いたのが、イベントが設計の中心になっている、そう感じる機会が多かったこと。 ここで言うイベントは、実践ドメイン駆動設計の中でも「ドメインイベント」として実装パタ

    最近の海外DDDセミナーを聞いてみたら色々と常識が破壊された - Qiita
    Nyoho
    Nyoho 2022/03/04
  • 設計/コードレビューで"常に"心がけるポイント - little hands' lab

    株式会社ログラスの松岡(@little_hand_s)です。 little-hands.hatenablog.com ↑の記事でドメインオブジェクトの設計方針を書きましたが、それ以外の全般的な設計/レビュー観点について書きます。 非常に汎用性のある内容なので、数多くのプログラミング原則を覚えるより、まずこの観点でチェックできるようにすると即効性が期待できます。 前提として、階層化されたアーキテクチャ(オニオンアーキテクチャなど)を採用しているものとします。 ①レイヤーの責務違反の実装をしていないか ②高凝集/低結合になっているか 高凝集 クラスに関して メソッドに関して 低結合 ③ユニットテストを書きやすいか 合言葉 筆者執筆書籍 現場での導入で困ったら ①レイヤーの責務違反の実装をしていないか 例として、「ユースケース層にドメイン層のルール/制約に関わる実装をしている」場合はNGです。

    設計/コードレビューで"常に"心がけるポイント - little hands' lab
    Nyoho
    Nyoho 2022/02/11
  • ドメイン駆動設計 モデリング/実装ガイド - little-hands - BOOTH

    書は、初めてDDDを学ぶ方、もしくは実際に着手して「難しい!!」と感じているエンジニアの方を対象とした、ドメイン駆動設計(以下、DDD)についての解説書です。 近年、ソフトウェアのレガシー化が社会的に問題になっていると言われています。 DDDはレガシー化への対策として非常に有用なものですが、日語で出ている書籍「エリック・エヴァンスのドメイン駆動設計」や「実践ドメイン駆動設計」は非常に重厚かつ難解で、初学者が実用に到達するまでには長い時間と試行錯誤が必要なのが実情です。 そこで書では、迷子になりがちな「DDDの目的」や「モデル」の解説からはじめ、 具体的なモデリングを行い実装まで落とす事例を元に、DDDの魅力や効果を体感することを目指します。 また、その後にはレイヤーごとの個別のトピックについて、1章ずつ詳しく解説します。 ■書の構成 書は以下の構成になっています。 「第1章 DD

    ドメイン駆動設計 モデリング/実装ガイド - little-hands - BOOTH
    Nyoho
    Nyoho 2022/02/08
  • とにかくドメイン駆動設計を実践してみる試み ~TODO管理システム編~

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

    とにかくドメイン駆動設計を実践してみる試み ~TODO管理システム編~
    Nyoho
    Nyoho 2022/02/08
  • XP祭りでDDD勉強会をやりました。

    XP祭りにてDDD勉強会に参加してくださった皆さん、ありがとうございました。私もわからない点が色々ありましたが参加者に助けられました。 当日は大半をREADMEに使い、予定していたコード散策があまりできませんでした。今日は、このブログにて、このリポジトリーの私なりのおすすめビュースポットをドメイン中心にご案内します。このリポジトリには名所が多数あるのでゆっくり秋のコード散歩を楽しんでみてはいかがでしょうか♪ 秋のコード散策を楽しもうのイメージ図MeetUpドメインの説明文章MeetUpのドメインの説明が簡潔になされています。のちのコード散策の楽しみを増すためにも、まずはここを押さえておきましょう。記述された言葉を音読して逆算してドメインエキスパートと会話された言葉を想像して楽しんでみてください。 https://github.com/kgrzybek/modular-monolith-wi

    XP祭りでDDD勉強会をやりました。
    Nyoho
    Nyoho 2021/09/29
  • DDDリファレンス 定義とパターン概要 (鋭意修正中, CC-BY)

    Eric Evans "Domain-Driven Design Reference -- Definitions and Pattern Summaries" の日語訳です。なかなか見直しと修正(推敲)が終わらないので、とりあえず公開してみます。 https://www.domainlanguage.com/ddd/reference/ ## 翻訳について パターン名については原則として『エリック・エヴァンスのドメイン駆動設計』(翔泳社)に合わせています。素晴らしい訳業に(元「DDD難民」の一人としても)記して感謝いたします。 ただし、「エンティティー」「メタファー」「レイヤー」「ファクトリー」など、末尾の音引きは省略せずに記することにしました。そのため、厳密には正確に同一ではありません(他にも「インタフェース」は「インターフェース」にしています)。ご了承ください。 ## 権利について

    DDDリファレンス 定義とパターン概要 (鋭意修正中, CC-BY)
    Nyoho
    Nyoho 2021/04/12
  • 俺たちのドメイン駆動設計はこれからだ!

    ドメイン駆動設計に取り組んだ事例をもとに以下の点について説明しました。 1. ドメイン駆動設計とは一体何か? 2. どんなメリットがあるのか? 3. ドメインモデルについて 4. 設計パターンについて 5. ドメイン層の隔離について

    俺たちのドメイン駆動設計はこれからだ!
    Nyoho
    Nyoho 2019/05/27
  • ドメイン駆動設計、どこまでやるべき? 開発現場の“問題”を乗り越えるためにできること

    ゲーム開発におけるドメイン駆動設計とサーバレスアーキテクチャ 佃松三郎氏(以下、佃):みなさん、こんにちは。最初に「TECH × GAME COLLEGE」についてお話しさせてもらいたいと思います。 私はテクロスCTOの佃と申します。 ゲーム会社が主催する勉強会というのは数多くありますが、ゲームに特化した、もしくは「ゲームっていろんな技術を使ってるよね」という話があるなかで、「当にゲームにフォーカスするオープンなコミュニティがないな」というところで、去年の8月からこの勉強会がスタートしました。 そこで「DDD」と呼ばれる開発手法について増田さんに登壇いただいたところからスタートしました。今回、ちょうど半年ということで、1つ区切りのイベントとして今回は開かせていただきました。 それでは、今日パネラーとして参加していただく増田さん、まずは簡単に自己紹介と最近取り組まれていることなどをお

    ドメイン駆動設計、どこまでやるべき? 開発現場の“問題”を乗り越えるためにできること
  • DDDとコードとしての正しさ - pospomeのプログラミング日記

    ドメイン駆動設計 #1 Advent Calendar 2018の14日目を担当する@pospomeです。 今回はDDDとコードとしての正しさについて書いてみようと思います。 DDDは設計手法である コードとしての正しさ コードとしての正しさを見失う ユースケースの日語を"そのまま"コードに落とし込もうとする 無駄にオブジェクト同士の結合度を上げる RubyのActiveRecordの正しさ コードとしてのメリット、デメリットを具体的に考えて解決する まとめ DDDは設計手法である DDD = ドメイン駆動設計 ですよね。 "設計"という単語が付いていることから分かる通り、DDDはあくまでソフトウェアにおける設計手法です。 そのためDDDの成果物は"コード"であり、DDDの目的は"コードの可読性を上げること"であると自分は考えています。 DDDが持つ"ビジネスを理解する", "ドメインを

    DDDとコードとしての正しさ - pospomeのプログラミング日記
  • テストを書くかどうか議論するの不毛だから、どうやってテストを書きやすくするか議論しよう - Qiita

    スピード感重視なのでテストは書かない。テストはなぜ開発を遅くするかという記事がバズりました。みんなテストについて思うところがあるようだ。テストを書くべきか否かは机上の空論になりがちで不毛なので、どうやってテストを書くか、テストの書き方、について、種を巻いた私が書いておく。 もっと詳しい方からのお話お待ちしています。 書くこと テストの書きやすくするためのいろいろ(箇条書き) 書かないこと テストの基 テストファースト 実装ありきでテストを書くのではなく、テストありきで実装を変える。 はっきり言って、テストを考慮せずに実装されたコードは、書き直さずにはテストできない。 そういう点で、テストなしで実装する選択肢は不可逆なので、初期実装では特に注意が必要。 クリーンアーキテクチャ(DDD) クリーンアーキテクチャの考え方はテストファーストを語る上で重要。私個人としてはまだクリーンアーキテクチャ

    テストを書くかどうか議論するの不毛だから、どうやってテストを書きやすくするか議論しよう - Qiita
  • ドメイン駆動設計と関数プログラミングをElixirで - Qiita

    はじめに この記事は Elixir Advent Calendar 2016 - Qiita の 15 日目の記事です。 また、以下の記事の Elixir 版となっておりますので、こちらもご覧ください。 ドメイン駆動設計と関数プログラミングをScalaで - Qiita (一部上の記事と内容が重複する部分もありますが、この記事のみでも伝えたいことが伝えられるようにと思い、コピペして記載しています) この記事では、ドメイン駆動設計がどのように関数プログラミングと結びつくのか、非常にざっくりではありますが、Elixir で表現してみたいと思います (ちなみに、私の Elixir 歴は3ヶ月ほどですので、サンプルコードに間違いや改善点がありましたら、コメントいただけるとありがたいです)。 @type, @spec 等のディレクティブは省略していますが、Dialyzer を使った方がより堅牢なプロ

    ドメイン駆動設計と関数プログラミングをElixirで - Qiita
    Nyoho
    Nyoho 2018/02/21
  • DDDの始め方

    DDDを始めるにあたって実施したことを実例を交えて紹介しています。 内容 - DDDとは何か - なぜDDDをやるのか - 実際にどうやって導入したか

    DDDの始め方
    Nyoho
    Nyoho 2017/07/22
  • Faao - ドメイン駆動設計で作るGitHub Issue Client -

    autoscale: true Faao - ドメイン駆動設計で作るGitHub Issue Client - 自己紹介 Name : azu Twitter : @azu_re Website: Web scratch, JSer.info 過去に作ったやつ azu/GithubReader: Github Notifications Client for OS X azu/github-reader: [node-webkit] GitHub client app - Viewer for Notifications and News Feed. azu/github-issue-teev: [NW.js] GitHub Issue Manager(Viewer) Faao Faao - Feature Support Modern browser/mobile/Electron(re

  • ドメイン駆動設計基礎講座〜戦略編〜

    ChatWork社内勉強会で発表した際の資料

    ドメイン駆動設計基礎講座〜戦略編〜
    Nyoho
    Nyoho 2017/03/18
  • 技術書が生まれる経緯 - ひつじのにっき

    冬コミで出した技術書「なないろAndroid」「The Web Explorer 3」「わかる!ドメイン駆動設計」の3冊について、先週から電子書籍の販売が始まっています。タイミングがよいので、難産だった「わかる!ドメイン駆動設計」の生まれた経緯を書いておこうと思います。 techbooster.booth.pm 上記サイトではAndroidやWebの最新情報、技術書の作り方など色んな書籍を扱ってます。ぜひみてください。 きっかけは読書書は読書会を通じて生まれました。メンバーは大体4人(やんざむともちこと@tacksmanとひつじ)で、たまに@sys1yagiさんとかが参加。毎週リアルに集まるのは大変だったのでビデオハングアウトで週1回、1時間。始めたのは2016年4月~(継続中)。オンラインだったのが地味によくて、参加と継続のハードルを下げられています。 は厚くて有名なエリック・

    技術書が生まれる経緯 - ひつじのにっき
    Nyoho
    Nyoho 2017/01/23
  • ドメイン駆動設計: Aggregate実装チェックシート - Qiita

    ドメイン駆動設計でAggregate(集約)を実装するためのチェックシートです。 □ トランザクション分析をしてトランザクションの単位でAggregateを実装しているか? 単にツリー構造や分類学的にAggregateを作っているとしたら正しくない。 Entityを複数含むAggregateを作っている場合は、トランザクション分析していない可能性があるため、 ユースケースを確認しビジネス上のトランザクション分析を行う。 □ Aggregateの大きさは大き過ぎないか? もし、Aggregateが複数のEntityを含んでいる場合は、 EntityをValue Objectにすることができないか、 直接参照ではなくEntityをAggregate Rootに昇格しIDによって参照する設計にできないかを検討する余地がある。 □ 他のAggregateは直接参照ではなく、IDによって参照されてい

    ドメイン駆動設計: Aggregate実装チェックシート - Qiita
    Nyoho
    Nyoho 2016/12/28
  • ドメイン駆動設計を軽快に実践するための工夫

    DDD関西.java 3/5(土) 発表資料

    ドメイン駆動設計を軽快に実践するための工夫
    Nyoho
    Nyoho 2016/03/06