$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オブジェクト指向のこころ: イントロ / DESIGN PATTERNS EXPLAINED:...
Search
hideki kinjyo
PRO
August 24, 2021
Programming
0
80
オブジェクト指向のこころ: イントロ / DESIGN PATTERNS EXPLAINED: introduction
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
August 24, 2021
Tweet
Share
More Decks by hideki kinjyo
See All by hideki kinjyo
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
symfony/mcp-bundleで、既存アプリケーションもお手軽にMCPサーバー化
o0h
PRO
1
49
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
10
4.9k
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
600
Composerの依存解決 #phpstudy
o0h
PRO
0
150
「影響が少ない」を自分の目でみてみる
o0h
PRO
3
1.9k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.8k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
23
5.3k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
9
4.2k
Other Decks in Programming
See All in Programming
Developing static sites with Ruby
okuramasafumi
0
280
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
320
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
2.5k
connect-python: convenient protobuf RPC for Python
anuraaga
0
400
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
6
2.2k
チームをチームにするEM
hitode909
0
320
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
100
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
110
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
230
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
460
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
160
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Unsuck your backbone
ammeep
671
58k
Thoughts on Productivity
jonyablonski
73
5k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Building Flexible Design Systems
yeseniaperezcruz
330
39k
Site-Speed That Sticks
csswizardry
13
1k
Building an army of robots
kneath
306
46k
GraphQLとの向き合い方2022年版
quramy
50
14k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Transcript
Introduction 課題図書: オブジェクト指向のこころ: デザインパターンとともに学ぶ
訳者まえがき
ΦϒδΣΫτࢦͱ͍͏ύϥμΠϜ • ݱࡏͰ͔ܽͤͳ͍ͷʹͳͬͨ • ͦͷఆٛϝϦοτͷઆ໌ɺ࣌ʹΑͬͯมભ͍ͯ͠Δ • ॳʮݱ࣮ੈքΛͦͷ··ΦϒδΣΫτͰදݱͰ͖ Δʯͱ͔͞ΜʹᨳΘΕ͍ͯͨ • ্ྲྀఔͱԼྲྀఔΛγʔϜϨεʹܨ͛Δ(ئ)
関連・参考 • オブジェクト指向の概念の発明者は誰ですか?(改訂版) - Smalltalkのtは⼩⽂字です https://sumim.hatenablog.com/entry/20040525/p1
ʮݱ࣮ʯͱΦϒδΣΫτͷؔ • ࣮ࡍͷγεςϜ։ൃʹʮநԽʯ͕͏ • 10͋Δଆ໘͔Β1Λબ͢Δ͜ͱ(ࣺ) • ཁٻมԽ͠ଓ͚Δͷɺͱ͍͏ݱ࣮ • ʮγεςϜ͠ͳ͍ʯ 関連・参考
• ソフトウェア保守の法則(リーマンの法則)、ご存知ですか?:森崎修司の「どうやってはかるの?」 https://blogs.itmedia.co.jp/morisaki/2012/04/post-7e5d.html
มߋͱΦϒδΣΫτࢦ • ͠ʮݱ࣮ͦͷͷʯͩͱͨ͠Βมߋʹऑ͘ͳΔ • ࢲʮͦΜͳ͜ͱͨ͠ΒɺόλϑϥΠΤϑΣΫτى͖ͪΌ ͏Αʙʯ • ೡΖʮநԽʯʹ͓͍ͯՁ͕ൃݟ͞Ε͍ͯͬͨ • ΦϒδΣΫτࢦʮӨڹΛด͡ࠐΊΔʯ
• ίʔυͷʮ࠶ར༻ʯΛଅਐͤ͞Δ
ΦϒδΣΫτࢦͱGoFͷσβΠϯύλʔϯ • ࠶ར༻ੑΛڧௐͨ͠ͷ͕ʮGoFͷσβΠϯύλʔϯʯ • ύλʔϯϥϯήʔδͷΦϒδΣΫτࢦϓϩάϥϛϯάͷద༻ • ॻ੶໊ʹʮΦϒδΣΫτࢦʹ͓͚Δ࠶ར༻ͷͨΊͷʯͬͯೖͬͯΔͷʹண • ͢ͳΘͪɺʮͦͦσβύλ͕࠶ར༻ͷͨΊͷͷʯͰ͋Δ •
ͬͱ͍͑ʮύλʔϯϥϯήʔδ͕(ryʯ • σβύλ͕ʮΦϒδΣΫτࢦͷϕλʔϓϥΫςΟεʯͳΒɺ ʮ࠶ར༻ɺ͍͜͞ʙʂਅͬͯײ͡Ͱ͢ʂʯͬͯͳΔಓཧΛײͯ͜͡ὑ
ຊॻͰղઆ͞Ε͍ͯΔ؍ʹཱͭ͜ͱͰɺʮ࣌ؒ࣠Λݟͨ͠ઃ ܭʯͱݴ͑Δߟ͑ํΛʹ͚ͭΔ͜ͱ͕Ͱ͖ɺ͋ͳͨͷ࡞͢ ΔγεςϜͻͱຯ;ͨຯҧͬͨͷͱͳΔͣͰ͢ɻ l
࣌ؒ࣠Λݟͨ͠ઃܭ • アレグザンダーが意識の根底にありそうな表現😏 • 我々にも「全体性」「いきいきとした建築」が必要 • 「時を超える」=> 「変動に強い」 ʮมಈΛΧϓηϧԽͤΑʯ ʮιϑτΣΞͬͱม͍͍͑ͯͣͩ͘͢ʯ
ʮϓϩδΣΫτ͕ഊ͠ͳ͍Α͏ͳ ϓϥΫςΟεΛಋೖ͠ͳ͚ΕͳΒͳ͍ʯ
まえがき
σβΠϯύλʔϯɺΦϒδΣΫτࢦ • デザインパターンとOOPは、設計者や開発者の⽣活を楽にする重要な鍵 • “オブジェクトの持つ本当の⼒は、継承ではなく「カプセル化された振 る舞い」にあると感じ取っているかも知れません” • 「概念の根底にある『やること』と『その理由』によって、⼀気に理解 が進む」という信念に基づいて本書はつくられている •
デザインパターンの考察を通じて「オブジェクト指向の本当の姿」を 理解できるようになる
σβΠϯύλʔϯ͔ΒಘΒΕΔͷ • パターンと向き合うことでオブジェクト指向の理解が深まる • オブジェクト指向設計の優れた実例が⽰される • 基本的なオブジェクト指向原則が浮き彫りにされる • 著者⾃⾝が「デザインパターンを学習することによって、 オブジェクト指向設計能⼒が広く・深くなった」のを経験している
• オブジェクト指向設計初⼼者にとっても悪くない事
ύλʔϯͱͷ͖߹͍ํ • 頻出する「問題」と「原則」「戦略」を知ることが重要 • 決して「型」を丸暗記したり、乱⽤するものではない • ⾊々な場⾯で様々なデザインパターンが「⾒えてくる」ようになる • ⽬の前の状況に対して、パターンの原則や戦略を⽤いた解決策が 浮かんでくるようになること
• 「知っている」と「理解した」の違い
ຊॻͰಘΒΕΔͷ • パターンを学ぶことができる • なぜうまく機能するのか?を理解できる • パターン同⼠を協調させる⽅法が分かる • 原則と戦略が分かる
ຊॻͷҐஔ͚ͮͱඪ • 位置づけ: 導⼊書 • デザインパターンを正しく、迅速に理解できるようになる • デザインパターンの根拠にある原則や戦略を理解できるようになる • ⽬標:
デザインパターンを経験してもらう • その世界の広さを知ってもらう • 読者の将来にあろう「パターンの旅」を計画できるようにする