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.1k
Kafkaを利用したアプリケーションでのオフセットの制御について/Kafka Offsets
tarugo07
1
1.1k
Other Decks in Design
See All in Design
プロダクトデザイナー視点から見た チームでの意思決定の難しさと 重要ポイント3点
kei141
0
420
Webフォント選定の極意!フォントの基本から最新トレンドまで徹底解説
takanorip
5
670
拡大するマルチプロダクトSaaSの顧客理解にデザイン組織はどう取り組んでいるか / RAKUSTechCon2024_Design
rakus_dev
0
2.1k
Designship2024 Panel Discussion インハウスデザイナーは 何をデザインしているか、するべきか で使用したスライドを公開します。
kiyoshifuwa
0
2.1k
超・ファシリテーション 無理ゲー課題を軽やかに超える MIMIGURI流チームデザイン|TOKYO CREATIVE COLLECTION
madue
1
1.2k
知を活かせるチームづくりとは?-MIMIGURIで実践している「全員探究」の仕組みと文化づくり-
chiemitaki
1
700
root COMPANY DECK / We are hiring!
root_recruit
1
15k
利用者が離れないUX/UIデザイン 長く使われる業務アプリデザインのポイント
ncdc
3
170
1年目のクリエイターがつくりあげた!採用冊子CANVAS制作の裏側 / creator-canvas
cyberagentdevelopers
PRO
1
200
Карта процесса-опыта. Презентация метода
ashapiro
0
330
デザインシステム構築の進め方 基本から実践まで、具体的な手順を徹底解説
ncdc
1
210
「ちょっといいUI」を目指す努力 / Striving for Little Big Details
usagimaru
6
3.8k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Building Your Own Lightsaber
phodgson
103
6.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
GitHub's CSS Performance
jonrohan
1030
460k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
A designer walks into a library…
pauljervisheath
204
24k
How GitHub (no longer) Works
holman
310
140k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Scaling GitHub
holman
458
140k
Thoughts on Productivity
jonyablonski
67
4.3k
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をはじめよう