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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
hidenorigoto
March 30, 2019
Programming
4.8k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
抽象化って何? (What is abstraction?)
2019年3月30日 PHPerKaigi 2019
hidenorigoto
March 30, 2019
More Decks by hidenorigoto
See All by hidenorigoto
ドメインと向き合う - 旅行予約編
hidenorigoto
4
1.2k
「ソフトウェア設計」のドメイン - 「データモデリングでドメインを駆動する」を読んで
hidenorigoto
10
3.5k
メルカリ バックエンド領域のこれまでとこれから
hidenorigoto
1
610
メルカリのエンジニアリング組織の変化〜Engineering Managerの視点から〜
hidenorigoto
0
8.7k
The changes of the engineering organization in Mercari - from the view of an engineering manager -
hidenorigoto
0
340
PHPerKaigi 2019 ランチセッション (3/31)
hidenorigoto
1
4.5k
抽象化って何? (What is abstraction?)
hidenorigoto
11
7.5k
続・SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則 センパイのコーディングノート編〜
hidenorigoto
14
6.4k
SOLIDの原則ってどんなふうに使うの? 〜オープン・クローズドの原則編(拡大版)〜
hidenorigoto
9
5.4k
Other Decks in Programming
See All in Programming
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
100
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2k
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.6k
dRuby over BLE
makicamel
2
330
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
530
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
220
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
880
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
2
660
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
The browser strikes back
jonoalderson
0
1.2k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Accessibility Awareness
sabderemane
1
140
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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 ΞϧΰϦζϜ