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
オブジェクト指向のこころ: イントロ / DESIGN PATTERNS EXPLAINED:...
Search
hideki kinjyo
PRO
August 24, 2021
Programming
0
74
オブジェクト指向のこころ: イントロ / DESIGN PATTERNS EXPLAINED: introduction
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
August 24, 2021
Tweet
Share
More Decks by hideki kinjyo
See All by hideki kinjyo
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
230
Composerの依存解決 #phpstudy
o0h
PRO
0
99
「影響が少ない」を自分の目でみてみる
o0h
PRO
3
1.6k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.5k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
23
5.1k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
10
3.6k
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
650
ヒューマンエラーの本を読んだ ~報告会~
o0h
PRO
3
330
みんなでワイワイ「テスト駆動開発」の話をやる会 #techramen24conf
o0h
PRO
4
650
Other Decks in Programming
See All in Programming
VS Code Update for GitHub Copilot
74th
1
380
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
270
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
330
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
570
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
100
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
Elixir で IoT 開発、 Nerves なら簡単にできる!?
pojiro
1
150
C++20 射影変換
faithandbrave
0
530
NPOでのDevinの活用
codeforeveryone
0
190
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
150
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
340
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
930
RailsConf 2023
tenderlove
30
1.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
670
Faster Mobile Websites
deanohume
307
31k
Six Lessons from altMBA
skipperchong
28
3.8k
KATA
mclloyd
29
14k
Producing Creativity
orderedlist
PRO
346
40k
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は、設計者や開発者の⽣活を楽にする重要な鍵 • “オブジェクトの持つ本当の⼒は、継承ではなく「カプセル化された振 る舞い」にあると感じ取っているかも知れません” • 「概念の根底にある『やること』と『その理由』によって、⼀気に理解 が進む」という信念に基づいて本書はつくられている •
デザインパターンの考察を通じて「オブジェクト指向の本当の姿」を 理解できるようになる
σβΠϯύλʔϯ͔ΒಘΒΕΔͷ • パターンと向き合うことでオブジェクト指向の理解が深まる • オブジェクト指向設計の優れた実例が⽰される • 基本的なオブジェクト指向原則が浮き彫りにされる • 著者⾃⾝が「デザインパターンを学習することによって、 オブジェクト指向設計能⼒が広く・深くなった」のを経験している
• オブジェクト指向設計初⼼者にとっても悪くない事
ύλʔϯͱͷ͖߹͍ํ • 頻出する「問題」と「原則」「戦略」を知ることが重要 • 決して「型」を丸暗記したり、乱⽤するものではない • ⾊々な場⾯で様々なデザインパターンが「⾒えてくる」ようになる • ⽬の前の状況に対して、パターンの原則や戦略を⽤いた解決策が 浮かんでくるようになること
• 「知っている」と「理解した」の違い
ຊॻͰಘΒΕΔͷ • パターンを学ぶことができる • なぜうまく機能するのか?を理解できる • パターン同⼠を協調させる⽅法が分かる • 原則と戦略が分かる
ຊॻͷҐஔ͚ͮͱඪ • 位置づけ: 導⼊書 • デザインパターンを正しく、迅速に理解できるようになる • デザインパターンの根拠にある原則や戦略を理解できるようになる • ⽬標:
デザインパターンを経験してもらう • その世界の広さを知ってもらう • 読者の将来にあろう「パターンの旅」を計画できるようにする