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
February 16, 2019
Programming
11
6.4k
抽象化って何? (What is abstraction?)
2019年2月16日 Laravel JP Conference
hidenorigoto
February 16, 2019
Tweet
Share
More Decks by hidenorigoto
See All by hidenorigoto
ドメインと向き合う - 旅行予約編
hidenorigoto
4
600
「ソフトウェア設計」のドメイン - 「データモデリングでドメインを駆動する」を読んで
hidenorigoto
10
2.6k
メルカリ バックエンド領域のこれまでとこれから
hidenorigoto
1
400
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
240
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
3.8k
抽象化って何? (What is abstraction?)
hidenorigoto
9
4.4k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
5.7k
SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則編(拡大版)〜
hidenorigoto
9
5k
Other Decks in Programming
See All in Programming
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
8
3.3k
Kubernetes上でOracle_Databaseの運用を楽にするOraOperatorの紹介
nnaka2992
0
170
LangChain & LangServeでAPIを爆速作成
kijitorabuti
2
350
ML-прайсинг_на_Lamoda__вошли_и_вышли__приключение_на_20_минут__Слава_Цыганков.pdf
lamodatech
0
380
今日で分かる!カスタムコップの作り方
krpk1900
2
140
データマイグレーションの成功戦略~サービスリニューアルで失敗しないための実践ガイド~
tkzwtks
8
840
sqlcを利用してsqlに型付けを
kamiyam
0
250
Why I Choose NetBeans for Jakarta EE
ivargrimstad
0
740
CSC509 Lecture 04
javiergs
PRO
0
160
/←このスケジュール表に立ち向かう フロントエンド開発戦略 / A front-end development strategy to tackle a single-slash schedule.
nrslib
1
390
Vaporモードを大規模サービスに最速導入して学びを共有する
kazukishimamoto
2
520
書籍『LangChainとLangGraphによるRAG・AIエージェント[実践]入門』の紹介
os1ma
2
120
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Done Done
chrislema
181
16k
Become a Pro
speakerdeck
PRO
24
4.9k
Fontdeck: Realign not Redesign
paulrobertlloyd
81
5.2k
Scaling GitHub
holman
458
140k
How to Think Like a Performance Engineer
csswizardry
18
1k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
GitHub's CSS Performance
jonrohan
1030
450k
A Modern Web Designer's Workflow
chriscoyier
692
190k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Transcript
நԽͬͯԿʁ ޙ౻लએ IJEFOPSJHPUP!HNBJMDPN -BSBWFM+1$POGFSFODF 8IBUJTBCTUSBDUJPO
நԽ "CTUSBDUJPO
͜ͷτʔΫͷඪ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺ ཧղ͢Δ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺ ཧղ͢Δ w ϓϩάϥϛϯάʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱ ͳͷ͔ɺཧղ͢Δ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺ ཧղ͢Δ w ϓϩάϥϛϯάʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱ ͳͷ͔ɺཧղ͢Δ w நԽͷࢦΛΓɺநԽͷྑ͠ѱ͠ΛஅͰ͖ ΔΑ͏ʹͳΔ
͓આ໌
γνϡΤʔγϣϯ w ʮಠʢφϯϓϨɺ/VNCFS1MBDFʣʯͷΞϓϦΛ։ ൃ͢Δ
ಠʢφϯϓϨʣͱʁ
ಠʢφϯϓϨʣͱʁ ݸͷϚεʹ͓͍ͯɺ ̍ʙ̕ͷࣈ͕ ॏෳ͍ͯ͠ͳ͍͜ͱ
γνϡΤʔγϣϯ w ʮಠʢφϯϓϨɺ/VNCFS1MBDFʣʯͷΞϓϦΛ։ൃ ͢Δ w ಠͷʮਖ਼ղνΣοΫػೳʯͷ࣮Λ୲͢Δ w ϧʔϧΛຬ͍ͨͯ͠Δ͔Ͳ͏͔ʁ w લఏ
w ಠͷͯ͢ͷϚεʹࣈ͕ೖ͍ͬͯΔ w ̍ʙ̕ͷࣈҎ֎ͷೖྗͳ͍
࠷ॳͷίʔυ֓ཁ ಠͷϚεͷใΛ ̎࣍ݩྻͰอ࣋ ਖ਼ղ͔Ͳ͏͔Λ νΣοΫ͢Δ
None
None
B<J><K> Jଆ͕ߦ Kଆ͕ྻ
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ࣈͷྻ͚ͩΛѻ͏
ࣈͷྻͷੜΞμϓλʔͰٵऩ͢Δ
None
None
None
վળલͷ$IFDLFSͱൺֱ
ڱ͍ൣғநԽ ந౷Ұ .BUSJYΛѻ͏ $IFDLFS /VNCFS$PMMFDUJPO Λѻ͏$IFDLFS .BUSJYશମ ࣈͷྻ
6.- $IFDLFS.BUSJY͔ΒΓ͞Εͨ
நԽͷԸܙ w $IFDLFSΫϥεͷίʔυ͕ݮͬͨ w $IFDLFSΫϥεͷґଘର͕খ͘͞ͳͬͨ
·ͱΊ
͜ͷτʔΫͷඪ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺ ཧղ͢Δ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺ ཧղ͢Δ w ϓϩάϥϛϯάʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱ ͳͷ͔ɺཧղ͢Δ
͜ͷτʔΫͷඪ w ݱ࣮ੈքʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱͳͷ͔ɺ ཧղ͢Δ w ϓϩάϥϛϯάʹ͓͚ΔநԽͱͲͷΑ͏ͳ͜ͱ ͳͷ͔ɺཧղ͢Δ w நԽͷࢦΛΓɺநԽͷྑ͠ѱ͠ΛஅͰ͖ ΔΑ͏ʹͳΔ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
ࢀߟ w 4ɾ*ɾϋϠΧϫʰࢥߟͱߦಈʹ͓͚Δݴޠʱݪॻୈ ࢛൛ؠॻళ