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
抽象化って何? (What is abstraction?)
Search
hidenorigoto
March 30, 2019
Programming
9
4.6k
抽象化って何? (What is abstraction?)
2019年3月30日 PHPerKaigi 2019
hidenorigoto
March 30, 2019
Tweet
Share
More Decks by hidenorigoto
See All by hidenorigoto
ドメインと向き合う - 旅行予約編
hidenorigoto
4
910
「ソフトウェア設計」のドメイン - 「データモデリングでドメインを駆動する」を読んで
hidenorigoto
10
3.1k
メルカリ バックエンド領域のこれまでとこれから
hidenorigoto
1
520
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8.3k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
310
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
4.1k
抽象化って何? (What is abstraction?)
hidenorigoto
11
7k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
6.1k
SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則編(拡大版)〜
hidenorigoto
9
5.2k
Other Decks in Programming
See All in Programming
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
280
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
150
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
710
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
300
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
170
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
450
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
190
VS Code Update for GitHub Copilot
74th
2
660
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
2
160
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
260
Goで作る、開発・CI環境
sin392
0
240
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Designing for humans not robots
tammielis
253
25k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Thoughts on Productivity
jonyablonski
69
4.7k
Speed Design
sergeychernyshev
32
1k
Transcript
நԽͬͯԿʁ ޙ౻लએ IJEFOPSJHPUP!HNBJMDPN 1)1FS,BJHJWFS 8IBUJTBCTUSBDUJPO
நԽ "CTUSBDUJPO
͜ͷτʔΫͷඪ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺཧղ͢Δ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺཧղ͢Δ w ϓϩάϥϛϯάʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺཧղ͢ Δ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺཧղ͢Δ w ϓϩάϥϛϯάʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺཧղ͢ Δ w நԽͷࢦΛΓɺநԽͷྑ͠ѱ͠ΛஅͰ͖ΔΑ͏ʹͳΔ
͓આ໌
γνϡΤʔγϣϯ w ʮಠʢφϯϓϨɺ/VNCFS1MBDFʣʯͷΞϓϦΛ։ൃ͢Δ
ಠʢφϯϓϨʣͱʁ
ಠʢφϯϓϨʣͱʁ ݸͷϚεʹ͓͍ͯɺ ̍ʙ̕ͷࣈ͕ ॏෳ͍ͯ͠ͳ͍͜ͱ
γνϡΤʔγϣϯ w ʮಠʢφϯϓϨɺ/VNCFS1MBDFʣʯͷΞϓϦΛ։ൃ͢Δ w ಠͷʮਖ਼ղνΣοΫػೳʯͷ࣮Λ୲͢Δ w ϧʔϧΛຬ͍ͨͯ͠Δ͔Ͳ͏͔ʁ w લఏ w
ಠͷͯ͢ͷϚεʹࣈ͕ೖ͍ͬͯΔ w ̍ʙ̕ͷࣈҎ֎ͷೖྗͳ͍
࠷ॳͷίʔυ֓ཁ ಠͷϚεͷใΛ ̎࣍ݩྻͰอ࣋ ਖ਼ղ͔Ͳ͏͔Λ νΣοΫ͢Δ
None
None
B<J><K> Jଆ͕ߦ
None
None
վળϙΠϯτͳ͍͔ʁ w ϩδοΫͰ͖͍ͯΔɻਖ਼͘͠νΣοΫͰ͖Δɻ w ίʔυΛཧͰ͖Δؾ͕͢Δɻ͔͠͠ɺͲΜͳΞϓϩʔνͰΔͷ͔ w $IFDLFS͕.BUSJYʹґଘ͍ͯ͠Δͱ͜Ζ͔Βʁ
ґଘͱ͍͑ɾɾɾ ґଘؔٯసͷݪଇʢ%*1ʣ ͬͯϠπΛ͏ͷ͔ͳɾɾɾ ্ҐϨϕϧͷϞδϡʔϧԼҐϨϕϧͷϞδϡʔ ϧʹґଘ͖͢Ͱͳ͍ɻ྆ํͱந ʢBCTUSBDUJPOT ʹґଘ͖͢Ͱ͋Δɻ
ґଘؔٯసͷݪଇͬͯɺ ؒʹJOUFSGBDFΛ͞Ήܗʹ ͢Εྑ͍ΜͩΑͳɻ ˞ҙɿԋग़ͷ߹্ͷɺۃͳཧղྫͰ͢
ґଘؔٯసʂґଘͯ͠·ͤΜʂ
Կ͔ؒҧ͍ͬͯΔ ؾ͕͢Δ
Ͳ͕ؒ͜ҧ͍ͬͯΔͷ͔આ ໌͍ͯͩ͘͠͞ʂ
Ͳ͕ؒ͜ҧ͍ͬͯΔͷ͔ʁ
நԽͱ
ࣙॻతఆٛ நʢͪΎ͏͠ΐ͏ʣ ࣄදΛɺ͋Δੑ ࣭ɾڞ௨ੑɾຊ࣭ʹண ͠ɺͦΕΛந͖ग़͠ ͯѲ͢Δ͜ͱɻ ࣺʢ͠Ό͠ΐ͏ʣ ֓೦Λந͢Δࡍʹɺ ந͞ΕͨॾදҎ֎ ͷදΛߟͷର͔
ΒΓࣺͯΔ͜ͱɻ
4ɾ*ɾϋϠΧϫʮநͷϋγΰʯ ʰࢥߟͱߦಈʹ͓͚ΔݴޠʱQ ܦݧͷରʢ໒ڇʣ Պֶతঢ়ଶʢ໒ ϕογʔ ޠʮ໒ڇʯ Ոச ࢿ࢈ ࢿ࢈
ݴޠ நԽ நԽ நԽ
ܦݧͷରʢ໒ڇʣ Պֶతঢ়ଶʢ໒ڇʣ ϕογʔ ޠʮ໒ڇʯ Ոச ࢿ࢈ ࢿ࢈
ϕογʔ ܦݧͷରʢ໒ڇʣ Պֶతঢ়ଶʢ໒ڇʣ ϕογʔ ޠʮ໒ڇʯ Ոச ࢿ࢈ ࢿ࢈
໒ڇ ϕογʔ ܦݧͷରʢ໒ڇʣ Պֶతঢ়ଶʢ໒ڇʣ ϕογʔ ޠʮ໒ڇʯ Ոச ࢿ࢈ ࢿ࢈
நԽʹ͓͚ΔมԽ ϕογʔ ޠʮ໒ڇʯ நԽ ಛͷྔ ଟ͍ গͳ͍ ରͷ
গͳ͍ ଟ͍
நϨϕϧ͕͓͔͍͠จ ܦݧͷରʢ໒ڇʣ Պֶతঢ়ଶʢ໒ ϕογʔ ޠʮ໒ڇʯ Ոச ࢿ࢈ ࢿ࢈
ࢲ໌ͷேɺࢲୡͷࢿ࢈ʹ㕒 Λ༩͑ͳ͚Ε͍͚ͳ͍ ࢿ࢈ 㕒 ผͷந Ϩϕϧ͕ ࠞࡏ͍ͯ͠ Δʂ
நԽͷ·ͱΊ w நʹϨϕϧ͕͋Δʢநͷϋγΰʣ w ϋγΰΛ্ΔʹɺಛΛΓࣺͯͯநԽ͢Δ ಛྔݮΔ͕ɺΑΓଟ͕͘ରʹೖΔ w நͷϨϕϧ͕ἧ͍ͬͯͳ͍ͱɺίϛϡχέʔγϣϯͰ͖ͳ͍
ϓϩάϥϛϯάʹ͓͚Δ நԽͱ
ݱ࣮ੈքɺϓϩάϥϛϯάͷੈք
ݱ࣮ੈքɺϓϩάϥϛϯάͷੈք ࢿ࢈ 㕒 ͓ۚ ϕογʔ
ݱ࣮ੈքɺϓϩάϥϛϯάͷੈք ࢿ࢈ 㕒 ͓ۚ ϕογʔ ࠃޠɺߏจɺޠኮ ಓ ۩
ݱ࣮ੈքɺϓϩάϥϛϯάͷੈք ࢿ࢈ 㕒 ͓ۚ ϕογʔ .BUSJY νΣοΫ Ϛε ϧʔϧ ࠃޠɺߏจɺޠኮ
ಓ ۩
ݱ࣮ੈքɺϓϩάϥϛϯάͷੈք ࢿ࢈ 㕒 ͓ۚ ϕογʔ .BUSJY νΣοΫ Ϛε ϧʔϧ ࠃޠɺߏจɺޠኮ
ϓϩάϥϛϯάݴޠɺߏจɺޠኮ ಓ ۩
ϓϩάϥϛϯάʹ͓͚ΔநԽͱ ѻ͍ͬͯΔ֓೦ͷநԽ *OUFSGBDF"CTUSBDUDMBTTΛ͏͜ ͱ ͜ΕΛୡ͢ΔͨΊʹɺݴޠʹ༻ҙ͞Ε ͍ͯΔ༷ʑͳػೳΛ͏ʢ*OUFSGBDFɺ "CTUSBDUɺFUDʣ
ࢦʁ
ϓϩάϥϛϯάʹ͓͚ΔͷநԽͷࢦ Ծ దͳ໋໊ ໊લͱ༰͕Ұக ͍ͯ͠Δ͜ͱ நͷ౷Ұ ͋Δଆ໘͕औΓग़ ͞Εͨͷ͚ͩͰ ⁋᧒͕߹͏͜ͱ ڱ͍ൣғ
ߟྀ͢Δಛͷ ͕খ͘͞ͳ͍ͬͯ Δ͜ͱ ˞ҙɿIJEFOPSJHPUPʹΑΔࡶͳఏҊͰ͢
͜ͷநԽԿ͕ؒҧ͍ͬͯͨʁ
͜ͷநԽԿ͕ؒҧ͍ͬͯͨʁ దͳ໋໊
͜ͷநԽԿ͕ؒҧ͍ͬͯͨʁ நͷ౷Ұ
ଞʹϝιου ͕͋Δ ͚̍ͭͩ ͜ͷநԽԿ͕ؒҧ͍ͬͯͨʁ ڱ͍ൣғ
͜ͷநԽԿ͕ؒҧ͍ͬͯͨʁ ڱ͍ൣғ
վળྫ
ґଘؔͷຊ࣭ΛݟۃΊΔ
ґଘؔͷຊ࣭ΛݟۃΊΔ w $IFDLFSͱ.BUSJYͷຊ࣭తͳؔɺׂΛߟ͑Δ $IFDLFSɺ࠷ݶԿ͕͋ΕΛՌͨͤΔ͔
ґଘؔͷຊ࣭ΛݟۃΊΔ w $IFDLFSͱ.BUSJYͷຊ࣭తͳؔɺׂΛߟ͑Δ $IFDLFSɺ࠷ݶԿ͕͋ΕΛՌͨͤΔ͔ w $IFDLFSɺݸͷࣈΛड͚औΕɺͦΕ͕0,͔/(͔ΛఆͰ͖ Δ
ґଘؔͷຊ࣭ΛݟۃΊΔ w $IFDLFSͱ.BUSJYͷຊ࣭తͳؔɺׂΛߟ͑Δ $IFDLFSɺ࠷ݶԿ͕͋ΕΛՌͨͤΔ͔ w $IFDLFSɺݸͷࣈΛड͚औΕɺͦΕ͕0,͔/(͔ΛఆͰ͖ Δ w ݸͷࣈͷஔɺఆʹ͕ؔͳ͍
$IFDLFSࣈͷྻ͚ͩΛѻ͏ ࣈͷίϨΫγϣϯ ࣈͷίϨΫγϣϯ ͕ਖ਼ղ͔Ͳ͏͔ νΣοΫ
ࣈͷྻͷੜΞμϓλʔͰٵऩ͢Δ .BUSJYͷσʔλΛ ࣈͷίϨΫγϣϯ ʢͷྻʣ ม
None
ࣈͷྻͷੜίʔυ ʢ$IFDLFSͷதʹ͋ͬ ͨϧʔϓʹ૬ʣ
None
վળલͷ$IFDLFSͱൺֱ
ڱ͍ൣғநԽ ந౷Ұ .BUSJYΛѻ͏ $IFDLFS /VNCFS$PMMFDUJPO Λѻ͏$IFDLFS .BUSJYશମ ࣈͷྻ
6.- $IFDLFS.BUSJY͔ΒΓ͞Εͨ
நԽͷԸܙ w $IFDLFSΫϥεͷίʔυ͕ݮͬͨ w $IFDLFSΫϥεͷґଘର͕খ͘͞ͳͬͨ
·ͱΊ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺཧղ͢Δ w ϓϩάϥϛϯάʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺཧղ͢ Δ w நԽͷࢦΛΓɺநԽͷྑ͠ѱ͠ΛஅͰ͖ΔΑ͏ʹͳΔ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
ࢀߟ w 4ɾ*ɾϋϠΧϫʰࢥߟͱߦಈʹ͓͚Δݴޠʱݪॻୈ࢛൛ؠॻళ
நԽτϨʔχϯά
நԽτϨʔχϯά w ຊ࣭Λൃݟ͢ΔεΩϧΛຏ͘ʹʁ
நԽτϨʔχϯά w ຊ࣭Λൃݟ͢ΔεΩϧΛຏ͘ʹʁ w ֶ
நԽτϨʔχϯά w ຊ࣭Λൃݟ͢ΔεΩϧΛຏ͘ʹʁ w ֶ w ཧֶ
நԽτϨʔχϯά w ຊ࣭Λൃݟ͢ΔεΩϧΛຏ͘ʹʁ w ֶ w ཧֶ w ΞϧΰϦζϜ