Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
意訳 Domain-Driven Design A Happy New Year !! 2020/01/10 DDDCJ DDD Talk MeetUp #3 @hirodragon112
Slide 2
Slide 2 text
今日は 「DDDってなんだっけ?」 を改めて考えるきっかけになればと思っています
Slide 3
Slide 3 text
DDD ってご存じですか?
Slide 4
Slide 4 text
成瀬・允宣 ヴァーン・ヴァーノン エリック・エバンス
Slide 5
Slide 5 text
Domain-Driven Design Domain : 領域 領域 = (システム化する) 対象領域
Slide 6
Slide 6 text
Domain-Driven Design Driven : 駆動 駆動 = 動力を与えて動かすこと。
Slide 7
Slide 7 text
Domain-Driven Design Design : 設計 設計 =ある目的を具体化するためのもくろみ
Slide 8
Slide 8 text
Domain-Driven Design 直訳を繋げると ドメインを動力として設計する となるでしょうか。
Slide 9
Slide 9 text
いまいちよくわからない…
Slide 10
Slide 10 text
左下に船が 海坊主いる? ×印にお宝が よくわからないままだと 同じ地図を見ても視点によって見えるものが変わる
Slide 11
Slide 11 text
よくわからないと人はこうなる DDDとは… -ユビキタス言語が大切! - 単なるOOP? - エバンスの日記? - 設計ではなくコミュニケーションの話し? - Repositoryって便利だね
Slide 12
Slide 12 text
DDD ってご存じですか?
Slide 13
Slide 13 text
今日はこの辺に切り込んだ話しをしてみたいと思います。
Slide 14
Slide 14 text
自己紹介 株式会社ミライトデザイン CEO/Founder 株式会社 Jocy CTO 上流から下流までプロダクト作成に必要な事はだいたいやりま す。 インフラ苦手です。 勉強会・カンファレンス ペチオブ (https://phper-oop.connpass.com/) OOC (https://ooc.dev/) を主催しております。 Twitter : @hirodragon112
Slide 15
Slide 15 text
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデル 4. HowとWhy 5. その先の世界
Slide 16
Slide 16 text
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。
Slide 17
Slide 17 text
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。 木を見ずに森を見よう
Slide 18
Slide 18 text
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。 木を見ずに森を見よう つまり訳者が存在する。 この資料で言えばhiroです
Slide 19
Slide 19 text
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。 木を見ずに森を見よう つまり訳者が存在する。 この資料で言えばhiroです これが地図を見る時の 視点となる
Slide 20
Slide 20 text
船で上陸で きそう お宝は隣の島 にありそう ×印にお宝が 視点を加えると見えやすくなる お宝のありかを示す地図です
Slide 21
Slide 21 text
意訳とは? 原文の語句の一つ一つにこだわらず、 全体の意味に重点をおいて訳すこと。 木を見ずに森を見よう つまり訳者が存在する。 この資料で言えばhiroです Domainの表現に集中できるよう に考慮された設計手法
Slide 22
Slide 22 text
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデル 4. HowとWhy 5. その先の世界
Slide 23
Slide 23 text
DDDはどこまでいっても設計論 意訳の前にあえて一つ明言しておきます。
Slide 24
Slide 24 text
DDDはどこまでいっても設計論 DDDは パターン集でも コミュニケーションの道具でも 日記でもありません もちろん設計者がドメインエキスパートになれというような事で もありません
Slide 25
Slide 25 text
設計論です
Slide 26
Slide 26 text
DDDはどこまでいっても設計論 システム開発におけるリソースを 一番コアであり重要であるドメインの表現に極力割きたいのです。 ドメインをより正確に表現し、その他の要素の影響を気にするこ となく集中して設計、実装をしたいのです。
Slide 27
Slide 27 text
DDDはどこまでいっても設計論 これが意訳の前提を揃える説明でも書いた 「Domainの表現に集中できるように考慮された設計手法」 という事です。
Slide 28
Slide 28 text
DDDはどこまでいっても設計論 ここからはこの視点を元に細かい語句にこだわらず、 視点に重点を置いて意訳していきたいと思います。
Slide 29
Slide 29 text
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. DDDの目的 4. 単一モデルとレイヤー分割 5. HowとWhy 6. その先の世界
Slide 30
Slide 30 text
DDDの目的 具体的にドメインに集中した設計を行うとは?
Slide 31
Slide 31 text
DDDの目的 1. ドメインエキスパートとドメイン知識を分析する 2. それをモデル化する 3. 分析モデルをそのまま実装モデルにも使用する 4. ドメインがアプリケーションの影響を受けない様にする 5. 実装時に発見した考慮漏れを1に戻り反映する こ こ に 時 間 を 使 い た い
Slide 32
Slide 32 text
DDDの目的 DDDとはたったこれだけの事を目指しているに過ぎません。 簡単だね!明日からどんどんやりましょう! 完
Slide 33
Slide 33 text
DDDの目的 ちゃんと解説します
Slide 34
Slide 34 text
DDDの目的 まず、そもそも我々の目的は何でしょうか? × DDDを導入する事 〇 DDDを導入する事で解決できる課題の恩恵を得る
Slide 35
Slide 35 text
DDDの目的 DDDが解決してくれる課題 - ドメインに対する分析 - 実装から分析へのフィードバック - このループの実現 言い換えると ドメイン分析の精度を高め、分析結果をそのままシステムとして 表現する事で最も複雑かつ重要なドメインを正確に表す質の高い ソフトウェアを開発できるようになる
Slide 36
Slide 36 text
DDDの目的 目指す世界 ドメインエキスパート 開発者 システム モデル 表現 実装 フィードバック 知識共有 発見 整理 フィードバック 使用 整理 発見 フィードバック
Slide 37
Slide 37 text
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデル 4. HowとWhy 5. その先の世界
Slide 38
Slide 38 text
ドメインエキスパート 開発者 システム 分析モデル 実装 モデル フィードバック 分析モデルまで フィードバックし辛い 反映 よくある開発 実装
Slide 39
Slide 39 text
ドメインエキスパート 開発者 システム 分析モデル 実装 モデル ここの問題を解決する 必要がある よくある開発
Slide 40
Slide 40 text
ドメインエキスパート 開発者 システム 単一 モデル フィードバック フィードバック フィードバック 単一モデル
Slide 41
Slide 41 text
単一モデル 分析に使うモデルをそのまま実装に落とし込む
Slide 42
Slide 42 text
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデルとレイヤー分割 4. HowとWhy 5. その先の世界
Slide 43
Slide 43 text
HowとWhy DDD目的 分析と実装を同じモデルを使用する 方法論 - ユビキタス言語で作成されたモデルを使用する - 境界コンテキストを分析する - Entity, ValueObject, Repository 等の戦術的パターンを使用す る - レイヤードアーキテクチャにてドメインを隔離する
Slide 44
Slide 44 text
HowとWhy 方法論は目的ではない
Slide 45
Slide 45 text
ドメインエキスパート 開発者 システム システムの中身がユビキタス言語でできた モデルのまま実装されているので理解できる ユビキタス言語で作成した分析モデルを そのまま実装モデルとしてシステムに実装する ユビキタス言語で作成した分析モデルを そのまま実装モデルとしてシステムに実装する 重要 単一 モデル
Slide 46
Slide 46 text
HowとWhy だから我々は方法論を知る必要があるのです
Slide 47
Slide 47 text
意訳Domain-Driven Design 目次 1. 意訳とは? 2. DDDはどこまでいっても設計論 3. 単一モデルとレイヤー分割 4. HowとWhy 5. その先の世界
Slide 48
Slide 48 text
その先の世界 単一モデルを実現するには方法論を知る以外にも重要な事がある - 単一モデルの適応範囲は? - ドメインとアプリケーションの境界を知る - UIとドメインの境界を知る その辺はまた別の機会にお話しできればと思います。
Slide 49
Slide 49 text
その先の世界 ご清聴ありがとうございました