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
90
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
オブジェクト指向のこころ: イントロ / DESIGN PATTERNS EXPLAINED: introduction
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
August 24, 2021
More Decks by hideki kinjyo
See All by hideki kinjyo
Symfonyが 簡単にAI agentになる
o0h
PRO
0
3
yield再入門 #phpcon
o0h
PRO
0
1.1k
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
330
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
310
ソースコード→AST→オペコード、の旅を覗いてみる
o0h
PRO
1
220
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
430
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
270
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
960
PHPer Book Revue 「雑に作る」 #phperkaigi
o0h
PRO
0
430
Other Decks in Programming
See All in Programming
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
280
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
520
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
メールのエイリアス機能を履き違えない
isshinfunada
0
240
Google Apps Script で Ruby を動かす
kawahara
0
270
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
140
リアルな遅延を測る仕様
kota_yata
1
120
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
120
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
180
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
840
Accessibility Awareness
sabderemane
1
180
Google's AI Overviews - The New Search
badams
0
1.1k
The SEO identity crisis: Don't let AI make you average
varn
0
530
Automating Front-end Workflow
addyosmani
1369
210k
Side Projects
sachag
455
43k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Building Applications with DynamoDB
mza
96
7.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How to make the Groovebox
asonas
2
2.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
470
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
470
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は、設計者や開発者の⽣活を楽にする重要な鍵 • “オブジェクトの持つ本当の⼒は、継承ではなく「カプセル化された振 る舞い」にあると感じ取っているかも知れません” • 「概念の根底にある『やること』と『その理由』によって、⼀気に理解 が進む」という信念に基づいて本書はつくられている •
デザインパターンの考察を通じて「オブジェクト指向の本当の姿」を 理解できるようになる
σβΠϯύλʔϯ͔ΒಘΒΕΔͷ • パターンと向き合うことでオブジェクト指向の理解が深まる • オブジェクト指向設計の優れた実例が⽰される • 基本的なオブジェクト指向原則が浮き彫りにされる • 著者⾃⾝が「デザインパターンを学習することによって、 オブジェクト指向設計能⼒が広く・深くなった」のを経験している
• オブジェクト指向設計初⼼者にとっても悪くない事
ύλʔϯͱͷ͖߹͍ํ • 頻出する「問題」と「原則」「戦略」を知ることが重要 • 決して「型」を丸暗記したり、乱⽤するものではない • ⾊々な場⾯で様々なデザインパターンが「⾒えてくる」ようになる • ⽬の前の状況に対して、パターンの原則や戦略を⽤いた解決策が 浮かんでくるようになること
• 「知っている」と「理解した」の違い
ຊॻͰಘΒΕΔͷ • パターンを学ぶことができる • なぜうまく機能するのか?を理解できる • パターン同⼠を協調させる⽅法が分かる • 原則と戦略が分かる
ຊॻͷҐஔ͚ͮͱඪ • 位置づけ: 導⼊書 • デザインパターンを正しく、迅速に理解できるようになる • デザインパターンの根拠にある原則や戦略を理解できるようになる • ⽬標:
デザインパターンを経験してもらう • その世界の広さを知ってもらう • 読者の将来にあろう「パターンの旅」を計画できるようにする