タグ

dddに関するmimosafaのブックマーク (251)

  • [入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ

    2024年7月1日紙版発売 2024年7月1日電子版発売 増田亨,田中ひさてる,奥澤俊樹,中村充志,成瀬允宣,大西政徳 著 B5判/160ページ 定価2,200円(体2,000円+税10%) ISBN 978-4-297-14317-6 Gihyo Direct Amazon 楽天ブックス 丸善ジュンク堂書店 ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto このの概要 ソフトウェア開発でドメイン駆動設計が注目されています。ソフトウェアデザイン誌で大変好評だった,ドメイン駆動設計特集の過去記事(2024年3月号,2023年2月号など)を再編集し,1冊にまとめました。ソフトウェアの設計は現在さまざまな視点で検討されており,開発の成功をいかに実現し達成するか重要になっています。書は,ドメイン駆動

    [入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ
  • ミノ駆動さんに「なぜ負債解消にDDD?」と聞いたら、ソフトウェア開発の本質に気づかされた

    ミノ駆動さんに「なぜ負債解消にDDD?」と聞いたら、ソフトウェア開発の質に気づかされた 2024年1月15日 株式会社スタメン ミノ駆動(仙塲大也) 電子機器メーカーや大手精密機器メーカー、クラウドワークスを経て、2021年4月にREADYFORに入社。アーキテクチャの変更容易性や機能性を促進する設計構造を目指し、リファクタリングやドメインモデリングを主軸としたシステム設計に従事する。現在は、組織改善のためのエンゲージメントプラットフォーム「TUNAG」を擁するスタメンに在籍。ITエンジニア大賞2023技術書部門大賞を受賞した『良いコード/悪いコードで学ぶ設計入門』著者としても知られる。 X(@MinoDriven) note Qiita 株式会社スタメン・テックブログでの執筆記事 ドメイン駆動設計(以下、DDD)に注目が集まりだしてしばらく経ちますが、いまだに捉えづらさを感じている人

    ミノ駆動さんに「なぜ負債解消にDDD?」と聞いたら、ソフトウェア開発の本質に気づかされた
  • 【DDD入門】TypeScript × ドメイン駆動設計ハンズオン

    TypeScriptとドメイン駆動設計(DDD)を組み合わせ、APIを構築するハンズオンガイドです。このでは、DDDとは何かという基礎的なところからソフトウェア開発における戦略的設計、戦術的設計まで、包括的な知識を提供します。 戦略的設計では、ビジネスの要求に合わせたドメインモデルの設計をイベントストーミングを用いて行います。その後、戦術的設計では、具体的なコードの実装に関連するDDDの原則と実践を学びます。 TypeScriptを使ってコードを書きながら、DDDの概念を実際のプロジェクトに適用するヒントを紹介します。

    【DDD入門】TypeScript × ドメイン駆動設計ハンズオン
  • アーキテクチャの進化はドメインイベントが起点になる - KAKEHASHI Tech Blog

    こちらの記事はカケハシ Advent Calendar 2023 Part2の24日目の記事になります。 adventar.org はじめに 反復的な開発は、変更容易性の高いソフトウェアが不可欠です。ソフトウェア開発の経験がある方なら、デリバリ後の洞察や市場環境の変化から、新しい機能の追加やアーキテクチャの進化の必要性に直面したことが一度はあるでしょう。 私自身、要求分析手法やSOLID原則等の技法を取り入れ、変更容易性に対応する多くのプロジェクトに参加しました。しかし、どれだけ優れた手法や技法を持っていても、変更が難しい要求が出てくることは避けられません。その際、「過去の出来事」を正確に記録していれば、後から見返して問題解決が容易だったと感じることがよくあります。 ドメイン駆動設計(DDD)では、「過去に起こった出来事」を表現するドメインモデルを「ドメインイベント」と呼びます。変更容易性

    アーキテクチャの進化はドメインイベントが起点になる - KAKEHASHI Tech Blog
  • フロントエンドの複雑さに立ち向かう / Tackling Complexity of Front-end Software with DDD and Clean Architecture

    フロントエンドの複雑さに立ち向かう 〜 DDD と Clean Architecture を携えて 〜 さくらのテックランチvol.6 〜ローストチキンのフロントエンドパスタとクリスマスFigmaケーキ〜 https://sakura-tokyo.connpass.com/event/303232/ YouTube配信アーカイブ https://www.youtube.com/watch?v=usmLmI1bj74&t=472s ドメイン駆動設計(Domain-Driven Design)や Clean Architecture をヨイショもディスもせずフラットな立場で評価し、現実解を探りながらフロントエンドの複雑さに立ち向かった半年間の軌跡

    フロントエンドの複雑さに立ち向かう / Tackling Complexity of Front-end Software with DDD and Clean Architecture
  • ドメイン駆動設計は何を解決する手法なのか - stmn tech blog

    こんにちは、リファクタリング大好きなミノ駆動です。 株式会社スタメンでは、企業エンゲージメント構築サービスTUNAG(ツナグ)の技術的負債解消と今後の持続的成長のため、ドメイン駆動設計(DDD)の導入を検討しています。 ところでDDDはとかく理解しづらく、何のためのDDDなんだという議論になりがちです。この記事では、DDDの真の主人公コアドメインを中心に、DDDが何を解決するものなのか、全体像を改めて整理します。 この記事で扱う内容 DDDが解決したい課題と解決方法の全体像。 この記事では扱わない内容 設計パターンの実例などの実装詳細。 大事な前提 〜利益を得るためのサービス開発 会社でのサービス開発は、趣味や道楽でやるものでしょうか。違いますね。ビジネスとして、企業活動としてサービス開発しています。当たり前の話ですが、利益を得られるように開発しなければなりません。 ドメイン駆動設計は、継

    ドメイン駆動設計は何を解決する手法なのか - stmn tech blog
  • DDDでプロダクト開発をしたので振り返ってみた - JMDC TECH BLOG

    みなさん、こんにちは!プロダクト開発部の吉川(@yoshiyu0922)です。 現在、JMDCが保有している医療ビッグデータを活用して生活者や医療に新しい価値を提供する新規プロダクト開発チームのバックエンドを担当しております。 以前に新規プロダクト開発で採用している技術や設計についてこちらの記事で紹介しましたが、Go x GraphQL x DDDでプロダクト開発をしています。今回はプロダクトの開発が一区切りしてこれからリリースするということで、開発してみて良かったことやこうすれば良かったことを振り返りをしました。振り返りの内容は主にDDDに関することです。 DDDとは DDDとは「Domain-Driven Design」の略語でドメイン駆動設計と呼ばれるソフトウェア開発手法の一つです。問題を解決しようとする領域(ドメイン)をモデリングによってソフトウェアの設計や実装に反映させることで、

    DDDでプロダクト開発をしたので振り返ってみた - JMDC TECH BLOG
  • 『現場で役立つシステム設計の原則』を読みました - 人間のあるべき姿の探索

    はじめに 現場で役立つシステム設計の原則を知りたいと思っていたのですが、丁度現場で役立つシステム設計の原則について言及されている書籍があったので読みました。 gihyo.jp ある程度知名度のある書籍で、QiitaやZenn等でまとめられている方がいらっしゃるのですが、自分のアウトプットとして、感想も交えてまとめていきます。 全体の話 この書籍の雰囲気や見通しを立ちやすくするために、参考書籍の一覧を抜粋して紹介します。 『エリック・エヴァンスのドメイン駆動設計ソフトウェアの核心にある複雑さに立ち向かう』『新装版リファクタリング既存のコードを安全に改善する』『SQLアンチパターン』『エンタープライズアプリケーションアーキテクチャパターン』『エクストリームプログラミング』 システム設計の全般を対象にしているのですが、ベースの思考としてはオブジェクト指向プログラミングから発展して、ドメイン駆動設

    『現場で役立つシステム設計の原則』を読みました - 人間のあるべき姿の探索
  • https://twitter.com/tanakahisateru/status/1646876289989754881?t=w9E4BAcnlVYEU2-X67eenw&s=09

    mimosafa
    mimosafa 2023/04/14
  • GPT-4にコードを書かせるのはDDDなら超簡単

    プログラマ界隈は阿鼻叫喚かと思いますが、色々実験して楽しかったので共有します。 エンティティ定義からのReact ComponentのPropsへのmapping 以下のような依頼を出してみました。(原文ママ) 以下のようなエンティティが存在するとします。以下は全てtypescriptで記述されています。 type User = { id: string; name: string } type Task = { id: string; description: string; } type Assignment = { id: string; userId: User['id'], taskId: Task['id'] } type Organization = { id: string; name; string } type Group = { id: string; organiz

    GPT-4にコードを書かせるのはDDDなら超簡単
  • 「クラスごとの役割を明確化すること」がポイント アプリケーション設計におけるドメインロジックの分離法

    今回はアプリケーションアーキテクチャを学ぶ最初の一歩として、「MVC」や「3 層アーキテクチャ」などの基的な用語の意味や関係性を整理する「改めて整理するアプリケーション設計の基」。ここで大嶋氏が登壇。続いて、Controllerにプレゼンテーション層からデータアクセス層の処理をすべて記載している場合の分離方法について紹介します。前回はこちらから。 質疑応答 ドメインモデルパターンはドメイン騒動設計と同義か? 大嶋勇樹氏:ということで、ここまでビジネスロジックの実装について話してきました。ここからは最後のステップとして、「Controllerに全部書く」からどうやってステップアップするかを話していこうと思います。 ここまでで質問があれば、ぜひQ&Aにもらえれば回答します。せっかくなので、このタイミングで「ドメインモデルパターンはドメイン駆動設計と同義ですか?」(という質問)に回答しておこ

    「クラスごとの役割を明確化すること」がポイント アプリケーション設計におけるドメインロジックの分離法
  • 『ドメイン駆動設計』の解説記事を書きました - ソフトウェア設計を考える

    日(1月18日)発売された、Software Design誌 2023年2月号の第一特集で「ドメイン駆動設計入門」を書きました。 執筆の意図と記事の概要を簡単にまとめておきます。 Software Design 2023年2月号|技術評論社 執筆の意図 特集のサブタイトルにある通り「設計力を磨きたい」読者が、ドメイン駆動設計の基礎を知ることで「設計の手法とアイデアの引き出し」を増やすことの役に立てればと思い執筆を引き受けました。 重視したこと 断片的な用語やパターンの解説でなく、ドメイン駆動設計の全体像と要点を伝える 全体像を伝えるための図や表を多めにした(ソースコードの例は少ない) 全体像と要点は、原典である『エリック・エヴァンスのドメイン駆動設計』(以下『ドメイン駆動設計』)の説明を中心にした ドメイン駆動設計の具体例として『ドメイン駆動設計』に出てくる国際海上貨物輸送の具体的な業務

    『ドメイン駆動設計』の解説記事を書きました - ソフトウェア設計を考える
  • ドメイン駆動設計(DDD)で開発されたシステムを5ヶ月保守開発した感想・学び - Qiita

    巷で、顧客の課題を解決しつつ、より良いシステムを作るための設計手法として、ドメイン駆動設計(DDD)が話題になっていると思います。 このドメイン駆動設計について、どのように実践するか、実際に実践してみてどう感じたか、という話はよく出ていますが、作られたシステムがその後どのようになったのか、保守開発した結果どう感じたのかの話はあまり聞かないな、と思ったので、自分の経験から「実際のところどうなんだ」というところを振り返ってみようかな、と思い、今回の記事を書きました。 目次 私が保守開発しているシステム 5ヶ月の間にやったこと 保守開発していて感じたこと よかったこと 改修時に修正箇所が特定しやすかった テストコードが書きやすく安心して保守することができた 成長できたという実感があった 難しかったこと、学び ドメイン知識は次第に流出していく 定期的なメンテナンスが大事 最後に おまけ エンジニア

    ドメイン駆動設計(DDD)で開発されたシステムを5ヶ月保守開発した感想・学び - Qiita
  • 良い設計と悪い設計の違い

    2022年11月7日(月) 「現場で役立つシステム設計の原則 - Forkwell Library #9」 発表資料

    良い設計と悪い設計の違い
  • 防御的プログラミングと契約プログラミング - Qiita

    1. 猜疑心か相互信頼か、防御的か契約に基づくか 防御的プログラミングと契約プログラミングについて、後述する勉強会で疑問を持ち、勉強会内で説明されていること深堀りしてみました。 すべてが勉強になる話だったのですが、こちらの記事でフォーカスするのは「クラス設計スタイル」におけるふたつの選択肢 トランザクションスクリプト方式 ドメインモデル方式 に登場する「防御的プログラミングと契約プログラミング」になります。 トランザクションスクリプト方式が「防御的プログラミング」 ドメインモデル方式が「契約プログラミング」 増田さんのお話ではクラス設計において変更容易性を実現するには「ドメインモデル方式」選択すべきというお話でした。 記事では、実装フェーズにおいて、各クラスがどのレイヤー以降なのか?によって、防御的・契約どちらのプログラミングを行うべきか異なる。という話をしていきます。 どのレイヤー以降

    防御的プログラミングと契約プログラミング - Qiita
  • オブジェクトストレージ開発におけるDDD (ドメイン駆動設計) | さくらのナレッジ

    はじめに オブジェクトストレージというサービスの開発においてDDD(ドメイン駆動設計)をやってみたこと、実践してみたことについてお話ししていきたいと思います。 今日ご説明したいものとしては大きく3つあって、まず1つがDDDの基礎ですね。皆さんにDDDの目的とかメリットとか、そこら辺の知識を共通認識として持ちたいなと思っています。その後で、オブジェクトストレージにおいてどんなことをやって、どんなふうにDDDを進めていったのかを説明します。最後にまとめという流れで進めていきたいと思います。 DDDのよくある誤解 いきなりなんですが、皆さんはDDDとかドメイン駆動設計という言葉をインターネットで検索して、こんな書き込みを見たことはありませんか? 「エンジニアはドメインエキスパートの通訳者だ」とか「レイヤー構造を持ち込めばDDDになるんだよ」とか「DDDの構成要素をすべて利用しなければいけないんだ

    オブジェクトストレージ開発におけるDDD (ドメイン駆動設計) | さくらのナレッジ
  • メモ:値オブジェクトの定義と差異について - かとじゅんの技術日誌

    「値オブジェクト」の定義について不勉強だったので「DDDの値オブジェクト」の定義とDDD以外の「値オブジェクト」との違いについて、改めて関連書籍を読み直し整理してみました。 すごい長いし細かいので他人に読ませるような記事ではなく、自分のために書いたメモです。 もし読むなら興味がある人だけで。 自分向けのメモですが、一応 この記事の前提や意図を書いておきます。 「DDDの値オブジェクト」以外を否定する記事ではありません。 原理主義のように書籍の理想どおり実践するべきだと主張するつもりはありません 「理想に従えばよい」「理想に従うの無意味だ」と決め付けの二項対立的な思考ではなく、理想と現実の絡み合ったグレーゾーンを見極めつつ、現場で手を打つのが優れた実践者ではないでしょうか 下記に紹介する、それぞれの値オブジェクトの優劣について細かく議論し、論破する・されることを目的としていません。 言い訳と

    メモ:値オブジェクトの定義と差異について - かとじゅんの技術日誌
  • 値オブジェクト(Value Object)は3種類ある - パンダのプログラミングブログ

    Value Object(値オブジェクト)は3種類あった Value Object(値オブジェクト) の意義と使い所がわからなかった。そこで調べてみたらなんと3種類あった。面白かったのでその調査過程を紹介する。 なお、現在では DDD の意味での Value Object がメインであること、またこれは自転車置き場の議論であり、DDD Quickly の Value Object の章を読む方が有意義であることを先に記しておく。 1. Data Transfer Object 1つ目は、Data Transfer Object(DTO)の意味だ。これは PoEAA に少しだけだけ出てくる。かつてのJava界隈の一部では(?)DTOのことを Value Object と呼んでいた。だが、現代では Value Object と DTO は別物として定着している。PoEAA は2000年代前半に

    値オブジェクト(Value Object)は3種類ある - パンダのプログラミングブログ
    mimosafa
    mimosafa 2022/08/12
  • DDDの正体は実装パターンとモデリングの組み合わせ - パンダのプログラミングブログ

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

    DDDの正体は実装パターンとモデリングの組み合わせ - パンダのプログラミングブログ
  • 簡単にできるDDDのモデリング - ドメイン駆動設計 - little hands' lab

    DDDではよく「モデリングが重要だ!」と言われますが、どのようにモデリングすればいいのかがわからず、一歩を踏み出せないことは多いのではないでしょうか。 そんな方のために、記事ではDDDにおいてシンプルで成果が出しやすいモデリング手法について紹介します。 (記事は、YouTube動画「10分でわかるドメインモデリング」の内容をもとにした解説記事です。) DDDの目的 DDDの目的から確認しましょう。 DDDの目的は2つ。 ①機能性を高めること これは、役に立つものを作ること、言い換えると「作ったけど使えない」を避けることです。 そのために、ドメインモデリングを行い、ソフトウェアを適用して役立てようとしている現実世界の領域(これの領域をDDDでは「ドメイン」と呼びます)について理解を深め、解決策を検討することを目指します。 ②保守性を高めること これは、長期間開発しても機能拡張が容易であり

    簡単にできるDDDのモデリング - ドメイン駆動設計 - little hands' lab