Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DDDで利用するアーキテクチャと プレゼンテーション層について/DDD Architec...
Search
Tomoyoshi Ogura
September 07, 2016
Design
0
3.7k
DDDで利用するアーキテクチャと プレゼンテーション層について/DDD Architecture
2016-09-07に行われた「Design For User #2 - コンポーネント指向から考えるUIと設計」で発表した時の資料です。
Tomoyoshi Ogura
September 07, 2016
Tweet
Share
More Decks by Tomoyoshi Ogura
See All by Tomoyoshi Ogura
Apache Kafkaとストリーム処理/Reactive Streams
tarugo07
4
3.2k
Kafkaを利用したアプリケーションでのオフセットの制御について/Kafka Offsets
tarugo07
1
1.2k
Other Decks in Design
See All in Design
Night Shift (beginning sequence)
cpineda57
0
950
成長する組織のナレッジベースのつくりかた_知識基盤のデザインとメタデザイン
gaussbeam
0
810
AIネイティブな時代におけるUXデザインの在り方とは
kuni29
0
1.1k
The Very Small Creatures - dressing up warm sequence
lizziestoryboards
0
130
[Designship2024] デザインの力でサービスの価値を追求していたら、組織全体をデザインしていた話
okakasoysauce
2
1k
デザインシステムの力 Webデザイナーとエンジニアのための実践ガイド / The Power of Design System
spindle
9
4.7k
Tableau曲線表現講座(2024.11.21)
cielo1985
0
220
デザイナーのマネジメント職、 身構えずにやっていこう
fumink7
0
700
20241204_UI/UXデザイナーLT会 - vol.10_DMM
motokoishida
0
220
みんなに知って欲しい 視覚過敏のアクセシビリティ
0opacity_
5
1.7k
20241019-CUD友の会「困った!を解決するデザイン改訂版」交流会
majimasachi
0
300
プロダクトデザイナー視点から見た チームでの意思決定の難しさと 重要ポイント3点
kei141
0
560
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Navigating Team Friction
lara
183
15k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
A Philosophy of Restraint
colly
203
16k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Scaling GitHub
holman
459
140k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
19
2.3k
A Tale of Four Properties
chriscoyier
157
23k
Unsuck your backbone
ammeep
669
57k
Transcript
Design For User #2 DDDで利用するアーキテクチャと プレゼンテーション層について Tomoyoshi Ogura 2016/09/07
自己紹介 • 小椋友芳 • ChatWork株式会社 CTO室所属 • ソフトウェアエンジニア • Scala、Akka、Golang、DDD
• twitter: @tomoyoshi_ogura • github: tarugo07
アジェンダ • Smart UIとDDDについて • DDDを実践するためのアーキテクチャ • プレゼンテーション層ファースト
Smart UIパターンとDDD
Smart UIパターンとは • 画面(UI)をベースに設計、実装を行うこと
Smart UIパターンの特徴 • 生産性が高くすぐに形にできる ◦ 単純なアプリ開発に向いている • 要件分析が不足していても問題にならない • 開発者に高いスキルは求めない
• 引き継ぎが特に必要ない • ふるまいやビジネスルールがUIのロジックに埋もれてしまう • 保守・運用が困難 ◦ UIが変わったら作り直しになる ◦ 修正の影響範囲が分かり難い
ドメイン駆動設計 • 利用する人の関心事に着目する ◦ Smart UIアンチパターン • ソフトウェアの複雑さに立ち向かう • ユビキタス言語
◦ ドメインエキスパートやソフトウェア開発者を含めたチーム全体で作り上げる共 通言語 • 境界づけられたコンテキスト ◦ ドメインモデルやユビキタス言語が同じ意味で使える範囲 • ドメインモデル
詳しくは読みましょう
アーキテクチャ
レイヤードアーキテクチャ
レイヤードアーキテクチャ • ドメインを隔離させる • UI、アプリケーション、ドメイン、インフラストラ クチャの四層で構成される • 依存関係は上から下 • レイヤーごとのモデル変換が必要
クリーンアーキテクチャ
クリーンアーキテクチャ • ドメインを中心に考える • 外部機能が独立 ◦ UI、データベース、外部サービスのAPI • 内側の層にのみ依存 •
ユースケース層がある ◦ アプリケーション固有のビジネスルール • 依存関係逆転の法則 (DIP : Dependency Inversion Principle) ◦ ドメインがインフラストラクチャに依存しない • https://8thlight.com/blog/uncle-bob/2012/08/13/th e-clean-architecture.html
プレゼンテーション層ファースト
ドメインが定義できない • ドメインエキスパートがいない • スタートアップ • 新規開発
どうするか • プレゼンテーション層を先にやる • UXファースト ◦ スケッチ、ワイヤーフレーム、モックアップ • プレゼンテーション層に目処がついたらDDD ◦
アプリケーションの関心事が整理できてる ◦ ユビキタス言語とコンテキストをきめる
まとめ • Smart UIはやめましょう ◦ 簡単なアプリケーションは除く • 複雑な関心事のアプリケーションはDDD ◦ ただしコストはかかる
• 関心事が明確にできない時はプレゼンテーション層から ◦ 立ち止まってDDDをはじめよう