little hands' lab

ドメイン駆動設計、アジャイルプラクティスを実践し、解説しています。

ドメイン駆動設計(DDD)

人気&オススメ記事 / ブログ概要

当ブログについて 主にドメイン駆動設計(DDD)関連の情報を発信していきます。 Twitterアカウント @little_hand_s こちらでもDDD情報発信していくのでよろしければフォローお願いします。DDD周りでご質問などあれば気軽にリプライいただければお答えします^^ …

DDD基礎解説:エンティティ、値オブジェクトってなんなんだ

ドメイン駆動設計(DDD)のエンティティ、値オブジェクトについてわかりやすく解説しています。

DDDにおける値オブジェクトの位置付け(モデルとコード事例あり)[ドメイン駆動設計]

株式会社ログラスの松岡(@little_hand_s)です。 最近、値オブジェクトに関して書かれているブログ記事を見ますが、 SNSなどにおいてDDDにおける値オブジェクトについて誤解されているような反応が見受けられました。 そこで、この記事では「DDDにおける値オ…

DDDにおけるドメイン層オブジェクト設計の基本方針[ドメイン駆動設計]

株式会社ログラスの松岡(@little_hand_s)です。 ドメイン層のオブジェクトを設計する際に、重要な基本方針があります。 ドメインモデルの知識を対応するオブジェクトに書く 常に正しいインスタンスしか存在させない この2つを守ると、非常に保守性の高いコー…

DDDのエンティティはイミュータブルな実装にしてもいいの?(サンプルコード有り)[ドメイン駆動設計 / DDD]

本記事はドメイン駆動設計(DDD) Advent Calendar 2021の13日目の記事です。 エンティティとイミュータブル性 オブジェクトをイミュータブル、つまり内部状態を変えない実装にすることで可読性やマルチスレッド対応性が向上することがあります。 エンテ…

受付中のDDDの導入サポート[ドメイン駆動設計]

DDD関するトピックを中心にオンライン研修、チャットサポートをご要望ベースで実施しております。ご相談は @little_hand_sのDM、もしくはお問い合わせフォームまでお願いいたします。 DDD導入サポート ①ライブモデリング、ライブコーディング研修(zoom開催) …

DDDで複数集約間の整合性を確保する方法(サンプルコードあり)[ドメイン駆動設計]

株式会社ログラスの松岡です。 本記事では、DDDに関する疑問で頻出な、複数集約間の整合性を確保する方法について、具体的なコードを交えて紹介します。 実装方法は、主に以下の3つに分かれます。 ユースケースで複数集約に更新をかける ドメインサービスを…

ドメイン駆動設計を導入するために転職して最初の3ヶ月でやったこと[DDD]

この記事は ドメイン駆動設計 Advent Calendarの記事です。 今年の9月にログラスというスタートアップに転職しました。 ログラスは元々DDDについて講師として勉強会をさせてもらっていた会社であり、DDD自体は社として取り組んでおりある程度進んでいました…

DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか

Object-Oriented Conference 2020で登壇させていただきました。 その際の発表資料です。 発表資料 DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか from Koichiro Matsuoka www.slideshare.net 本章の内容は技術書典8(2020/3/1)で頒…

CQRS実践入門 [ドメイン駆動設計]

この記事では、CQRSの入門として、軽量CQRS、別名クエリモデルについて解説します。 DDDの参照系処理で発生する課題 解決策 CQRSのメリット、デメリット 実装時の注意事項 部分的導入について なぜQueryServiceの定義がUseCase層なのか 整合性をどうやって担…

DDD戦術的設計入門セミナー[ドメイン駆動設計]

DDD戦術的設計入門セミナーアジェンダ ゴール DDDの実装パターンの狙いの理解 自分で資料を読み解く足がかりにする DDDのモデリングと実装パターンの関係 良い設計の指標 モジュールの責務とは 凝集度と結合度とは ドメイン知識とユースケースの区別 責務の…

DDD Talk Meetup #2を開催しました

DDD-Community-Jpとして久々のイベントを開催しました! ddd-community-jp.connpass.com 今回は 聞くだけではなくコミュニケーションをたくさんとってもらいたい! というのを重視して、今回は会議室ではなくレストランで飲み放題、の開催としました。 その…

「DDDのモデリングとは何なのか、 そしてどうコードに落とすのか」資料 / Q&A

Mix Leap Study 特別編 - レガシーをぶっつぶせ。現場でDDD! コラボカンファレンス に登壇させていただいたのでで、その際の資料です。 また、当日sli.doでたくさんのご質問をいただいたので、まとめてお答えします。 発表資料 DDDのモデリングとは何なのか…

ドメイン知識とユースケースの違いは何か?[ドメイン駆動設計][DDD]

DDDの文脈の中で、 「ドメイン知識とユースケース(≒アプリケーションの知識)は何が違うのか?」 という疑問がよく持たれます。 この記事ではその違いを説明し、DDDのコードにどう反映するかを書きます。 あるToDoアプリの仕様 事例として、ToDoアプリの話を…

現場でDDD!のハンズオン、持ち帰ってやってみた

genbade-ddd.connpass.com こちらのイベントに参加してきました。 タイトルに「レガシーをぶっつぶせ」とあった効果か、基本レガシーに立ち向かった実体験ベースの具体的な、泥臭い話が多くて非常に楽しかったです。 DDD周りって結構抽象的な話に終始してし…

非エンジニアの方に「DDDって何なの?」と聞かれたときの説明[ドメイン駆動設計]

この記事はドメイン駆動設計 #2 Advent Calendar 2018の16日目の記事です。 DDD(ドメイン駆動設計)とは何なのか そもそもDDDってなんなの?ということをちょくちょく聞かれます。 一言で言うと、「開発手法の一種です」ですが、それだと「ふ〜ん」で終わって…

新卒にも伝わるドメイン駆動設計のアーキテクチャ説明(オニオンアーキテクチャ)[DDD]

ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か ドメイン駆動 + オニオンアーキテクチャ概略 以前こちらの記事でアプリケーションアーキテクチャについて書きました。 こちらの記事では比較的ネタ元に忠実な解説をしたのですが…

ドメイン駆動設計は何を解決しようとしているのか

ドメイン駆動設計の定義についてEric Evansはなんと言っているのか の記事の中で、EricEvansのドメイン駆動の定義を引用して以下のように和訳しました。 ドメインの中核となる複雑さと機会に焦点を当てる ドメイン専門家とソフトウェア専門家のコラボレーシ…

DDDセミナーを初開催しました

コードで理解するDDDの戦略的設計・戦術的設計のつながり - connpassというタイトルで、初めてのDDDセミナーを開催しました! アジェンダとしては以下のようななもので、まさかの30分延長して4時間半という長丁場。聞いていただいた方もすごいです。笑 余っ…

オニオンアーキテクチャにておいて、ドメイン層とアプリケーション層の責務はどう違うのか[DDD]

ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か - little hands' labドメイン駆動 + オニオンアーキテクチャ概略 - little hands' labこれらの記事で書いた通り、私はDDDのレイヤードアーキテクチャを決める際にオニオンアーキ…

DDDに関する質問にバシバシお答えしました [ドメイン駆動設計]

先日、メディアマックスジャパン様(以下、MMJ様)にお邪魔してドメイン駆動設計勉強会を開催してきました。そちらで質疑応答セッションがあり、実際にドメイン駆動設計で開発をしだしたタイミングで出てきた具体的な疑問について色々お答えしました。 おそら…

挙手ファーストで行こう【登壇者 Advent Calendar 2017】

この記事は登壇者 AdventCalenderの記事です。 勢いでJJUG登壇を決めてから3ヶ月で驚きの生活の変化 JJUGに登壇を決めてから3ヶ月後、あれよあれよと京都の企業様にご招待頂き、DDD講師として勉強会を開催するようなことにもなりました。こんなことは3ヶ月前…

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

little-hands.hatenablog.com こちらの記事で説明できなかった、「境界づけられたコンテキストをどうやって実装に落とし込むのか?という話を書きます。 境界づけられたコンテキスト実装の基本イメージ 結論からいくと、基本的には、 1コンテキスト = 1アプ…

境界づけられたコンテキスト 概念編 - ドメイン駆動設計用語解説 [DDD]

境界づけられたコンテキストとは 公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています) bounded context A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is d…

JJUG2017fall 「DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話」

発表資料 DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 from Koichiro Matsuoka www.slideshare.net twitterの反応 togetter.com CQRSの参考資料 CQRS | Microsoft Docs CQRS - Martin Fowler 英語ですが、CQRSの概要についてものすごくわ…

ドメイン駆動設計関連情報のググるときのコツ

1.DDD関連でほしい情報は英語であるという覚悟を決める。 これは冗談のようですが本当です!笑英語と日本語でDDD情報は本当に格差がある!! DDDの記事、wikipediaですらわかりやすいんですよ。 こちらの記事もeric evansの公式サイト(当然英語)を調べていた…

モデルとは"現実世界を正しく表現したもの"ではないという話 / 境界付けられたコンテキストの必要性[DDD]

ドメイン駆動設計における「モデル」の捉え方の話と、境界付けられたコンテキストの必要性の話をします。 「境界付けられたコンテキスト」というものはドメイン駆動設計の上で非常に重要ですが理解しにくいポイントなので、その必要性と定義を理解しやすいよ…

ドメイン駆動 + オニオンアーキテクチャ概略[DDD]

DDD連載記事 なぜDDD初心者はググリ出してすぐに心がくじけてしまうのか ドメイン駆動設計の定義についてEric Evansはなんと言っているのか モデルでドメイン知識を表現するとは何か ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは…

ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か[DDD]

DDD連載記事 背景・前提 なぜDDD初心者はググリ出してすぐに心がくじけてしまうのかの記事で、 ネット上の文献で紹介されるアーキテクチャが様々なものとなっているのです。IDDDではヘキサゴナルアーキテクチャというものが掲げられていましたが、それを進化…

モデルでドメイン知識を表現するとは何か[DDD]

DDD連載記事 なぜDDD初心者はググリ出してすぐに心がくじけてしまうのか ドメイン駆動設計の定義についてEric Evansはなんと言っているのか モデルでドメイン知識を表現するとは何か ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは…