Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DDDで利用するアーキテクチャと プレゼンテーション層について/DDD Architec...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tomoyoshi Ogura
September 07, 2016
Design
4.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DDDで利用するアーキテクチャと プレゼンテーション層について/DDD Architecture
2016-09-07に行われた「Design For User #2 - コンポーネント指向から考えるUIと設計」で発表した時の資料です。
Tomoyoshi Ogura
September 07, 2016
More Decks by Tomoyoshi Ogura
See All by Tomoyoshi Ogura
Apache Kafkaとストリーム処理/Reactive Streams
tarugo07
4
3.5k
Kafkaを利用したアプリケーションでのオフセットの制御について/Kafka Offsets
tarugo07
1
1.3k
Other Decks in Design
See All in Design
PLATEAUで白い街を作る
aikautau
0
220
デザインレビューを「他者へのおすそわけ」に再定義し、たのしい場にする試み
webnaut
1
120
「惜しいデザイン」 を生み出さないための AIレビューループ
0b1tk
3
4.7k
富山デザイン勉強会_生成AIを使ったデザイン制作2026最新版.pdf
keita_yoshikawa
0
170
Pra não dizer que não falei das flores...
videlvequio
0
120
Agentic Design Workflowを育てる 「三層デザインハーネス」の現在地
sayadesign2
0
810
個人理念(自分の言葉)の言語化ワークショップ
kakukoki
1
420
デザインワークフローの最前線。 ログラスでのAI活用の現在地
ukaoli
1
3.5k
言幹と言葉(Stems & Leaves)
kakukoki
0
250
Where Imagination Ends AI Begins
r5ni4
0
470
エンジニアでも捗る デザイナー的思考入門(bitA Edit 新ver)
tinykitten
1
650
【CEDEC2026】アートとゲームデザインをつなぐVFX設計『GRANBLUE FANTASY: Relink - Endless Ragnarok』における表現と可読性の両立
cygames
PRO
2
1.6k
Featured
See All Featured
Practical Orchestrator
shlominoach
192
12k
Design in an AI World
tapps
1
360
Product Roadmaps are Hard
iamctodd
55
13k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Git: the NoSQL Database
bkeepers
PRO
433
67k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
Ruling the World: When Life Gets Gamed
codingconduct
0
410
Everyday Curiosity
cassininazir
0
360
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
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をはじめよう