
ddd
[研修アイデア]APIプログラミング
ドメイン駆動設計を意識して、APIプログラミングを体験します。開発テーマあなたは日々の業務を記録するために、日報を作成しています。日報の一部を以下に例示します。日付:2026/1/11報告者:石川啄木はたらけどはたらけど猶なほわが生活楽にならざりぢっと手を見る日付:2026年1月12日報告者:石川啄木実務には役に立たざるうた人と我を見る人に金借りにけり一度でも我に頭を下げさせし人みな死ねといのりてしこと1月13日啄木わが抱く思想はすべて金なきに(あとで書く)あなたは後から日付を指定して、過去の日報を振り返りたいと考えています。しかし、日報をテキストファイルで管理しているため、この作業が煩わしいと感じています。そこで、この日報の管理をシステム化したいと考えました。システム化要件システム化するにあたり、以下のような機能を備えたいと考えています。日報を書けること日報を下書きできること下書きを編集2026.01.11
ドメイン駆動設計におけるアーキテクチャの比較(レイヤードアーキテクチャ vs クリーンアーキテクチャ)
近年ドメイン駆動設計が、驚くほど流行しています。ドメイン駆動設計の登場当時、原典たるエヴァンス本ではレイヤードアーキテクチャを中心に解説されていましたが、現在では、クリーンアーキテクチャが人気を集めているようです。(筆者はレイヤードアーキテクチャを好んでいます。)レイヤードアーキテクチャの登場から、クリーンアーキテクチャの登場に至るまで、ヘキサゴナルアーキテクチャ、オニオンアーキテクチャなど、様々なアーキテクチャが誕生しましたが、いずれも、ドメイン中心の設計を支援するという目的は共通しています。それではなぜ、クリーンアーキテクチャが生まれなければならなかったのか?本稿では、その理由を考えてみます。レイヤードアーキテクチャとクリーンアーキテクチャの実装における違い各コンポーネントを、層状に配置するか、同心円状に配置するか。これはそれぞれのアーキテクチャの違いを考えるうえで、本質的な違いではあ2025.08.14
R2DBC と Repository パターンについての現時点での評価と所感
R2DBCもだいぶ成熟してきたのかなと思い使ってみたところ、ちょっと思ってたのと違ったので、そのメモ。結論から。誤解を恐れずに端的に言うならば、DDDを意識したプロジェクトの場合、R2DBC(ReactiveProgramming)は現時点で採用に値しない。これに尽きます。R2DBCだけではなく、ReactiveProgramming全体にまで言及しているのは、R2DBCを採用せず、WebFluxだけ採用してもリソース効率の最適化といった点において、あまり大きな効果を発揮できない(犠牲になる保守性に対して、採用するだけの価値が見出だせない)ためです。採用に値しないとまで断じた理由を以下、メリット・デメリットを挙げながら確認していこうと思います。メリットわたしの理解しているReactiveProgramming最大のメリットとは、リソース効率を最適化することです。処理の遅延評価を進め、パイプ2020.09.13
Spring 初学者が最初に知るべき責務とレイヤーと DDD (2020年 改訂)
DDDが身近になり、適用ハードルもずいぶん低くなってきたように感じてきていたため、以前のポストからところどころ書き直しました。レイヤードアーキテクチャSpringでは各コンポーネントの責務に応じたステレオタイプアノテーションが用意されており、これらがどう連携するかについては、レイヤードアーキテクチャをイメージすると理解しやすいです。Springでの各コンポーネントは、以下のように連携します。また、いくつかのアノテーションは、ドメイン駆動開発にそのヒントを得て用意されているため、実際のクラスやパッケージの配置については、もう少しDDDに気を使ったものとするのが良いでしょう。具体的には以前のポストでも使用した、以下の図を参考にしてみてください。トランザクションスクリプトとDDD以下、各コンポーネントについて、簡単に説明してみます。ViewSpringにおけるビューは、一般的なHTMLページを構2020.09.02
トランザクションスクリプトとDDD
エヴァンスが2003年に書籍Domain-DrivenDesignで紹介してから早17年。やっと時代が追いつき、近年ではこれまでにないほどDDDが注目を集めている。注目が高まるとともに、DDDを取り扱う良質な書籍も増え、私自身も複数のDDDの実践を経て、以前よりも理解は進んできたように思う。そこで、私の現時点でのDDDに対する解釈を、一度ここに書き起こし、残してみようと思う。(これはあくまで現時点での解釈であり、解釈のアップデートがあれば書き換えるかもしれない。)なお本稿では、ドメインエキスパートや、ユビキタス言語といった、DDDのプロジェクトへの適用側面には触れず、あくまでプログラミングする際にどのように理解、適用していけばよいかを中心に見ていく。2011年9月、SpringFramework3.0.6がリリースされて間もない頃、SpringのAPIドキュメント内にDDDの文字を見つける2020.09.01


