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
オブジェクト指向のこころ: 第3章 / DESIGN PATTERNS EXPLAINED: ...
Search
hideki kinjyo
PRO
August 24, 2021
Programming
59
0
Share
オブジェクト指向のこころ: 第3章 / DESIGN PATTERNS EXPLAINED: chapter-3
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
August 24, 2021
More Decks by hideki kinjyo
See All by hideki kinjyo
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
160
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
190
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
430
PHPer Book Revue 「雑に作る」 #phperkaigi
o0h
PRO
0
330
俺にも私がAIと作った オススメの個人ツールを語らせてくれ
o0h
PRO
0
51
#phperbiglt のLT
o0h
PRO
0
82
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
260
symfony/mcp-bundleで、既存アプリケーションもお手軽にMCPサーバー化
o0h
PRO
1
140
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
10
5.7k
Other Decks in Programming
See All in Programming
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
170
飯MCP
yusukebe
0
480
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
120
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
230
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
140
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
120
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
300
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
230
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
430
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
3
410
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
1
240
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
750
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
450
Test your architecture with Archunit
thirion
1
2.2k
The browser strikes back
jonoalderson
0
890
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
510
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
110
Game over? The fight for quality and originality in the time of robots
wayneb77
1
160
Automating Front-end Workflow
addyosmani
1370
200k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
A Soul's Torment
seathinner
5
2.6k
Transcript
第3章 柔軟なコードを必要とする問題 課題図書: オブジェクト指向のこころ: デザインパターンとともに学ぶ
ͲΜͳষͳͷ 「こういう課題を解決したい」を分析して(問題領域)、 「それにはどうやってアプローチできるだろう?」という 初めてのモデリング体験のコーナー!!みたいなやつです
問題を表現してみよう 3.2 CAD/CAMシステムから情報を抽出する 3.3 ボキャブラリを理解する 3.4 問題を表現する 3.5 本質的な問題とアプローチ
͓ $"%$".γεςϜ͔ΒใΛநग़͢Δ Ͱ·ͣɺࢲ͕ຊॻͰղઆ͍ͯ͠ΔಎΛಘΔ͖͔͚ͬͱͳͬͨɺࢲࣗͷաڈͷઃܭΛৼΓฦͬ ͯΈΔ͜ͱʹ͠·͢ɻ ࣌ɺࢲγʔτϝλϧ ൘ۚ ͷՃΛߦ͏$"%$".γεςϜͷઃܭ࡞ۀΛߦ͍ͬͯ·ͨ͠ɻਤ ɺͦ͏͍ͬͨγʔτϝλϧͷՃྫͰ͢ɻ ࢲͷࣄɺ$"%$".γεςϜ͔ΒσʔλΛநग़͠ɺطଘͷΤΩεύʔτγεςϜ͕ར༻Ͱ͖Δ Α͏ʹɺͦͷσʔλΛՃ͢ΔγεςϜΛ։ൃ͢Δ͜ͱͰͨ͠ɻ
ΤΩεύʔτγεςϜɺ࡞ػցΛ੍ޚ͢ΔͨΊʹ͜ͷใΛඞཁͱ͍ͯͨ͠ͷͰ͢ɻ͔͠͠ɺ ΤΩεύʔτγεςϜมߋ͢Δ͜ͱ͕͘͠ɺݱࡏ༻͍ͯ͠Δ$"%$".γεςϜසൟʹι ϑτΣΞ͕όʔδϣϯΞοϓ͢Δͱ͍͏͜ͱ͔ΒɺσʔλͷՃʹಛԽͨ͠γεςϜΛ։ൃ͢Δ ͜ͱͰɺ$"%$".γεςϜͷվగʹ؆୯ʹରԠͰ͖ΔΑ͏ʹ͔ͨͬͨ͠ͱ͍͏Θ͚Ͱ͢ɻ 1
͓ $"%$".γεςϜ͔ΒใΛநग़͢Δ Ͱ·ͣɺࢲ͕ຊॻͰղઆ͍ͯ͠ΔಎΛಘΔ͖͔͚ͬͱͳͬͨɺࢲࣗͷաڈͷઃܭΛৼΓฦͬ ͯΈΔ͜ͱʹ͠·͢ɻ ࣌ɺࢲγʔτϝλϧ ൘ۚ ͷՃΛߦ͏$"%$".γεςϜͷઃܭ࡞ۀΛߦ͍ͬͯ·ͨ͠ɻਤ ɺͦ͏͍ͬͨγʔτϝλϧͷՃྫͰ͢ɻ ࢲͷࣄɺ$"%$".γεςϜ͔ΒσʔλΛநग़͠ɺطଘͷΤΩεύʔτγεςϜ͕ར༻Ͱ͖Δ Α͏ʹɺͦͷσʔλΛՃ͢ΔγεςϜΛ։ൃ͢Δ͜ͱͰͨ͠ɻ
ΤΩεύʔτγεςϜɺ࡞ػցΛ੍ޚ͢ΔͨΊʹ͜ͷใΛඞཁͱ͍ͯͨ͠ͷͰ͢ɻ͔͠͠ɺ ΤΩεύʔτγεςϜมߋ͢Δ͜ͱ͕͘͠ɺݱࡏ༻͍ͯ͠Δ$"%$".γεςϜසൟʹι ϑτΣΞ͕όʔδϣϯΞοϓ͢Δͱ͍͏͜ͱ͔ΒɺσʔλͷՃʹಛԽͨ͠γεςϜΛ։ൃ͢Δ ͜ͱͰɺ$"%$".γεςϜͷվగʹ؆୯ʹରԠͰ͖ΔΑ͏ʹ͔ͨͬͨ͠ͱ͍͏Θ͚Ͱ͢ɻ 1
ੳͷॳา: ϘΩϟϒϥϦͷཧ • 「要求」を聞き出しつつ、名詞や動詞を抽出していきま しょうね〜みたいな話があります • それによって「責任を伴うオブジェクト」を⾒出していこ う、というものですね
本⽂をみてくれよな!
Զ͕ؤுͬͯॻ͍ͨਤݟ͍ͯͩ͘͞
ͯ͞ɺͲ͏͍͏ͷΛ࡞Ζ͏ʁ • なんでもCADはversion1(現⾏)、version2(移⾏ターゲッ ト)、version3(出るという噂)があるらしい • V1とV2で全く作りが異なる • V1はルーチンのコレクション、V2はOOP的な作り • 要するに使い⽅が異次元に違うの・・・
• でも「エキスパートシステム」から⾒た際に、 「CADデータのバージョンいくつ?」は隠蔽したいよね
͜͏͍͏ײ͡Ͱ͍͚͔ͦͬ͢
૬ޓ࡞༻ਤ クラス(オブジェクト)がどのようにメッセージングし合うか を⽰す(動的モデリング)
ݱ͔ΒҎ্Ͱ͢ 感じてほしいのは、 この章では↓みたいなことを体験できたぜ〜という点 • 「問題領域」に対して「抽象」で思考する流れ • 静的なモデリングを⽤いて、責任の区分を汲み取りやすくし た点 • 誰がどこまで関与するか、何を隠蔽するか
「コードから⼊って考える」以外の武器を⼿に⼊れることは、 オブジェクト脳を作る上での第1歩ですよ・・!