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
オブジェクト指向設計はどうして必要とされたか
Search
まりも
September 24, 2024
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
オブジェクト指向設計はどうして必要とされたか
オブジェクト指向の説明を、なぜオブジェクト指向が必要とされ現れたかの観点からまとめてみました。
まりも
September 24, 2024
More Decks by まりも
See All by まりも
オブジェクトモデルと関係モデルの設計
hrmstrsmgs
0
64
メンタルモデルから見るオブジェクト設計
hrmstrsmgs
1
430
技術的負債
hrmstrsmgs
1
470
よい設計のプログラムを作るには
hrmstrsmgs
0
140
歴史から理解するJavaScript
hrmstrsmgs
0
110
論理的な考え方
hrmstrsmgs
0
120
論理的な話し合いはなぜ必要か
hrmstrsmgs
0
85
腕のある技術者はなぜ
hrmstrsmgs
0
160
疑似乱数の生成
hrmstrsmgs
0
82
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
360
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Product Roadmaps are Hard
iamctodd
55
13k
The Language of Interfaces
destraynor
162
27k
Odyssey Design
rkendrick25
PRO
2
880
エンジニアに許された特別な時間の終わり
watany
109
250k
Building an army of robots
kneath
307
47k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Into the Great Unknown - MozCon
thekraken
41
2.8k
Transcript
オブジェクト指向設計 とか抽象データ型とかドメイン駆動設計とか
よい設計 今日の資料は作ってい て気合が入りました 私はこのために生きているのかもしれない
よい設計はなぜ大切か
目的 目的 まず目的を明確にします
よい設計はなぜ大切か プログラムはどんどん 複雑になっています よほど整理し ないとわけが 分からない 最近のOSで1億行くらい?
よい設計はなぜ大切か うまい 整理 よい 設計
動くプログラム 動くかどうかはどうでもいい
動くプログラム この仕様なら要件を満た せるとかどうでもいい
動くプログラム この仕様なら要件を満た せるとかどうでもいい
動くプログラム 完成したプログラムは最低でも動いてはいる 動いてからが勝負 そもそも動くだけなら1950年代の技術で十分
動作 この仕様なら要件を満たせるとかどうでもいい そこから先が勝負 そうしないと、仕様を追加していくうちにどうせ動か くなりますからね
よい設計 よい設計 保守 拡張性
どれだけ整理すればよいのか?
どれだけ整理すればよいのか? 方向はわかった 距離は?
どれだけ整理すればよいのか? 文章や図を 使って最もわ かりやすく
シンプル ものごとはできるかぎりシンプルに すべきだ。しかし、シンプルすぎて もいけない。 • アルバート・アインシュタイン
プログラム分野では • 必要な要件を正しく表現し、できる限り少 ない要素の組み合わせて説明する • できるだけ少ない実装ではないことに注意 できるかぎり シンプルに • 要件の説明を省略するために正しさを端
折ってはいけない • 実装できてもだめ シンプルすぎ てもいけない。
実装 表現はなるべく自然言語に近いレベルでわかりやすく この技術は日進月歩なので、最新のライブラリを参考に シンプルな説明に出てきた図、単語をそのままプログラムにする オブジェクト指向
整理のための方法
構造化 ツリーにしてわかりやすく
結合度・凝集度 • よそのモジュールのことを知らない といけない度合い • 小さいほうが良い 結合度 • 同じモジュールでは統一された内容 を各度合
• 大きい方がよい 凝集度
オブジェクト指向 すべてはオブジェクト 構造化を簡単に実装 データと処理を関連付ける カプセル化 継承
ドメイン駆動設計 • 単にオブジェクト指向 じゃないですかね? • ビジネスロジックのため のデザインパターンが必 要 ドメイン駆動設計(英: domain-
driven design, DDD)とはソフト ウェアの設計手法であり、「複雑 なドメインの設計は、モデルベー スで行うべき」であり、また「大 半のソフトウェアプロジェクトで は、システムを実装するための特 定の技術ではなく、ドメインその ものとドメインのロジックに焦点 を置くべき」であるとする。 (Wikipedia)
DSL 複雑なライブラリは内部DSLとして実装すべき。 特定タスク向けの簡易言語 外部DSL 内部DSL