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
依存性の注入とは?
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Tomoki Ota
June 13, 2024
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
依存性の注入とは?
依存性の注入についてまとめました。
Tomoki Ota
June 13, 2024
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
130
アーキテクチャとビジネスロジック
tomo1227
0
120
【Go言語】テスト
tomo1227
0
93
【Go言語】クロージャ
tomo1227
0
340
【Go言語】イテレータ
tomo1227
0
120
【Go言語】エラーハンドリング
tomo1227
0
95
AIに淘汰されないようにするには?
tomo1227
0
96
【Go言語】range
tomo1227
0
110
【Go言語】break
tomo1227
0
98
Other Decks in Programming
See All in Programming
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
340
FDEが実現するAI駆動経営の現在地
gonta
2
210
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
910
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
150
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
180
Android CLI
fornewid
0
160
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
140
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
160
Foundation Models frameworkで画像分析
ryodeveloper
1
130
共通化で考えるべきは、実装より公開する型だった
codeegg
0
280
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
850
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
1
9.8k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Why Our Code Smells
bkeepers
PRO
340
58k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
420
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
470
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
250
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
420
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.9k
4 Signs Your Business is Dying
shpigford
187
22k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Transcript
%* 5PNPLJ0UB 1
ԿΛֶͿ͔ w ґଘੑͷೖͷతɺ֓ཁ w ૄ݁߹ w %*ͷύλʔϯͱΞϯνύλʔϯ w 40-*%ݪଇ w
ΞεϖΫτࢦϓϩάϥϛϯά w 1VSF%*ͱ%*ίϯςφ 2
ୈճґଘੑೖͱ 3
ୈճΞδΣϯμ wґଘੑͷೖͱ wґଘੑͷೖͷޡղ wґଘੑͷೖʹඞཁͳࣝ wґଘੑͷೖͷత wૄ݁߹ 4
ґଘੑͷೖʹࣅͨݴ༿ w ґଘੑͷೖ %FQFOEFODZ*OKFDUJPO w ґଘؔٯసͷݪଇʢ%FQFOEFODZ*OWFSTJPO w ੍ޚͷస
*P$ w αʔυɾύʔςΟଓ UIJSEQBSUZDPOOFDU w αʔϏεɾϩέʔλ 4FSWJDF-PDBUPS 5
ґଘੑͷೖͱ 6 ґଘੑͷೖ ϕΞϧωʔθιʔε
ґଘੑͷೖͱ 7 ϕΞϧωʔθιʔεͱʁ ཛͱόλʔͷιʔεɻ ΤετϥΰϯɺΤγϟ ϩοτɺηϧϑΟʔ Ϣɺਣ͕ݪࡐྉɻ
ґଘੑͷೖͱ 8 ϕΞϧωʔθιʔεͱʁ ϑϨϯνͰجຊతͳιʔεɻ ్தͰࣦഊͨ͠Βͤͳ͍ɻ࡞ ʹ͕͔͔࣌ؒΔɻ
ґଘੑͷೖͱ ༷ʑͳιϑτΣΞઃܭͷݪଇύλʔϯΛूΊͨ ͷͰ͋Γɺίʔυ͕ૄ݁߹ MPPTFDPVQMJOH ͱͳ ΔΑ͏ͳ։ൃΛߦ͑ΔΑ͏ʹ͢ΔͷͰ͋Δɻ 9
ґଘੑͷೖͱ ࡀࣇWFS ͠ɺ܅͕ॴʹߦͬͯɺྫྷଂݿ͔Βউखʹ৯ҿΈΛͱ͖ͬͯͨ ΒɺޙͰʹͳΔΑͶʁྫ͑ɺྫྷଂݿͷυΞΛดΊΕͨΓɺϚϚύ ύ͕܅ʹ৯ͯཉ͘͠ͳ͍ͱࢥ͍ͬͯΔͷΛ৯ͯ͠·ͬͨΓ͢Δ͔͠ Εͳ͍͠ɺ͔ͨ͠͠Βɺ܅͕୳͍ͯ͠Δͷͦͦྫྷଂݿʹೖ͍ͬͯ ͳ͔ͬͨΓɺ͢Ͱʹຯظݶ͕͖Ε͍ͯͨΓ͢Δ͜ͱ͋Δ͠Ͷɻ͜ͷΑ͏ ͳ߹ɺ܅͕Δ͖͜ͱϚϚύύʹ܅͕ԿΛඞཁͱ͍ͯ͠Δͷ͔Λ ͑Δ͜ͱͳΜͩΑɻྫ͑ɺʮ͓ன͝൧Λ৯Δ͔ΒԿ͔ҿΈΛͱͬͯʯ ͱ͔͞ɻͦ͏͢ΔͱϚϚύύ܅ʹԿ͔Λ͖࣋ͬͯͯ͘ΕΔΜͩΑʯ
10
ґଘੑͷೖͱ ࡀࣇWFS αʔϏεΛඞཁͱ͢ΔΫϥε ࡀࣇ ɺඞཁͳαʔϏε Λఏڙ͢ΔΑ͏ʹج൫ ʹཔΔ͖Ͱ͋Δͱ͍͏͜ͱɻ 11
αʔϏεͱίϯϙʔωϯτ αʔϏεநͷ͜ͱɻͲͷΑ͏ͳαʔϏεΛఏڙ͢Δ͔Λࣔ͢ͷ ίϯϙʔωϯτநΛ࣮ͨ͠Ϋϥε 12
%*ʹؔ͢Δޡղ • ґଘੑೖԆόΠϯσΟϯάΛߦ͏࣌ʹ͔͠༻͍ΒΕͳ͍ • ୯ମςετΛ͢Δ࣌ʹ͚ͩؔͯ͘͠Δ • υʔϐϯάΛͨ͠Abstract FactoryύλʔϯͷΑ͏ͳͷ • ґଘੑೖΛಋೖ͢ΔʹDIίϯςφ͕ඞཁ
13
ԆόΠϯσΟϯά 14 ίʔυΛ࠶ίϯύΠϧ͢Δ͜ͱͳ͘ɺ ΞϓϦέʔγϣϯͷҰ෦ΛऔΓସ͑ΒΕΔػೳ FH74$PEFͳͲ ԆόΠϯσΟϯάͷͨΊʹ%*Λ͢ΔΘ͚Ͱͳ͍
୯ମςετʹؔ͢Δޡղ 15 5%%ͷͨΊ͚ͩʹ%*͢ΔΘ͚Ͱͳ͍ɻ
"CTUSBDU'BDUPSZύλʔϯͱ 16 ෳͷϝιουΛඋ͑ͨநͰ͋Γɺϝιου͝ͱ ʹಛఆͷछྨͷΦϒδΣΫτ͕ੜͰ͖ΔΑ͏ʹ͢ Δͷɻ
υʔϐϯάͨ͠"CTUSBDU'BDUPSZύλʔϯͰ͋Δͱ͍͏ޡղ 17 ґଘੑೖΛ͢Δ͜ͱͰɺଞͷαʔϏε ந Λݟͭ ͚ग़͢ͷΞϯνύλʔϯɻˠαʔϏεɾϩέʔλʔ
αʔϏεɾϩέʔλʔ 18 %*ͱશ͘ରۃͳ֓೦
αʔϏεɾϩέʔλʔ 19 %*ɺ໋ྩతͳίʔυͰґଘΛཁٻ͠ͳͯ͘ɺͦͷґଘΛ༻͍ͨΦ ϒδΣΫτΛੜͰ͖ΔΑ͏ʹ͢Δํ๏ɻґଘΛඞཁͱ͢ΔΫϥεΛ ར༻͢Δίʔυʹରͯ͠ɺͦͷґଘΛఏڙͤ͞ΔΑ͏ʹ͢Δͷɻ
%*ίϯςφʹؔ͢Δޡղ 20 %*ίϯςφ༷ʑͳΫϥεͷΦϒδΣΫτΛΈ߹ΘͤΔ͜ͱΛ༰қ ʹߦ͑ΔΑ͏ʹ͢ΔҙͷϥΠϒϥϦɻ %*ίϯςφΛΘͳ͍%*Λ1VSF%*ͱ͍͏ɻ
%*ʹඞཁͳࣝ 21 w40-*%ݪଇ wΫϦʔϯίʔυ wΞεϖΫτࢦϓϩάϥϛϯά
40-*%ݪଇͱ w 4JOHMF3FTQPOTJCJMJUZ1SJODJQMF w 0QFO$MPTFE1SJODJQMF w -JTLPW4VCTUJUVUJPO1SJODJQMF w *OUFSGBDF4FHSFHBUJPO1SJODJQMF w
%FQFOEFODZ*OWFSTJPO1SJODJQMF 22
%*ͱؔͷ͋Δͭͷύλʔϯ 23 w%FDPSBUPSύλʔϯ w$PNQPTJUFύλʔϯ w"EBQUFSύλʔϯ w/VMMΦϒδΣΫτ
ґଘੑͷೖͷత 24 wอक༰қੑͷ্ ˠૄ݁߹ͳઃܭʹ͢Δ
ΦϒδΣΫτಉ࢜ͷີ݁߹ 25
ૄ݁߹ 26
ίϯηϯτͱϓϥά 27 wίϯηϯτΠϯλʔϑΣΠε ந wϓϥάΠϯλʔϑΣΠεͷ࣮ ۩ମ
Ϧείϑͷஔݪଇ -41 28
Ϧείϑͷஔݪଇ -41 29 w4ܕͷΦϒδΣΫτPͷ֤ʑʹɺରԠ͢Δ5ܕͷΦϒδΣΫτ P͕ͭଘࡏ͠ɺ5Λͬͯఆٛ͞ΕͨϓϩάϥϜ1ʹରͯ͠ PͷΘΓʹPΛͬͯ1ͷৼΔ͍͕มΘΒͳ͍߹ɺ 45ͷੜܕͰ͋Δͱݴ͑ΔɻCZ#BSCBSB-JTLPW wੜܕʹґଘ͍͚ͯ͠ͳ͍ɻੜܕɺੜͱͷํʹஔ ՄೳͰͶ͚ΕͳΒͳ͍ɻ
Ϧείϑͷஔݪଇ -41 30 কདྷʹߟ͑Β͑Δ৽ͨͳཁٻʹରԠ͢ΔͨΊͷݪଇ
Ϧείϑͷஔݪଇ -41 31 কདྷʹߟ͑Β͑Δ৽ͨͳཁٻʹରԠ͢ΔͨΊͷݪଇ
32 ίϯηϯτ͕։͖ͬͺͳͩ͠ͱةͳ͍ ײిͨ͠Γ͢ΔՄೳੑ͕͋Δ
/VMMΦϒδΣΫτ 33
/VMMΦϒδΣΫτ 34 αʔϏεΛ͏͜ͱΛఆ࣮ͨ͠ʹ͕ͯͨ͠ɺαʔϏε͕ར༻ Ͱ͖ͳ͍߹ɺࢀরઌ͕ͳ͍͜ͱͰ/VMM3FGFSFODF&YDFQUJPOʹ ͋ΔͷΛ͙
/VMMΦϒδΣΫτ 35 αʔϏεΛ͏͜ͱΛఆ࣮ͨ͠ʹ͕ͯͨ͠ɺαʔϏε͕ར༻ Ͱ͖ͳ͍߹ɺࢀরઌ͕ͳ͍͜ͱͰ/VMM3FGFSFODF&YDFQUJPOʹ ͋ΔͷΛ͙
36 ͠ఀిͨ͠Βɻɻɻɻ
37 %FDPSBUPSύλʔϯ
38 %FDPSBUPSύλʔϯ ΠϯλʔϑΣΠεͷ࣮Ϋϥεʹରͯ͠ɺಉ͡Πϯ λʔϑΣΠεͷผͷ࣮ΫϥεΛհೖ JOUFSDFQUJPO ͤͯ͞৽ͨͳػೳΛՃ͑Δઃܭύλʔϯ
39 %FDPSBUPSύλʔϯͷత ৽ͨͳػೳԣஅతؔ৺͝ͱΛطଘͷίʔυΛॻ͖ ͑Δ͜ͱͳ͘ՃͰ͖ΔΑ͏ʹͳΔ
40 614ͱίϯϐϡʔλ ͦΕͧΕҟͳΔతΛ࣋ͭ ˠ୯Ұͷݪଇ ˠͦΕͧΕ͕ӨڹΛड͚Δ͜ͱ͕ͳ͍
41 ͭͷίϯηϯτͰ ෳͷՈిΛಉ࣌ʹ͍͍ͨ
42 $PNQPTJUFύλʔϯ
43 $PNQPTJUFύλʔϯ
44 $PNQPTJUFύλʔϯ ΠϯλʔϑΣΠεͷطଘͷ࣮Ϋϥεʹର ͯ͠ɺผͷ৽ͨͳ࣮ΫϥεΛՃ͑Δɻ
45 ւ֎ʹߦ͘ͱίϯηϯτͱ ϓϥάͷܗ͕Ұக͠ͳ͘ͳΔ
46 "EBQUFSύλʔϯ
47 "EBQUFSύλʔϯ ҟͳΔΠϯλʔϑΣΠεͰɺΞμϓλΛ հͯ͠͏͜ͱ͕Ͱ͖Δɻ
48 "EBQUFSύλʔϯ ΞϓϦέʔγϣϯ͕ར༻͢ΔΠϯλʔϑΣ ΠεΛհͯ͠طଘͷαʔυύʔςΟͷ"1* Λར༻͍ͨ͠ͱ͖ʹ༗ޮ
49 ΦʔϓϯɾΫϩʔζυͷݪଇ 0$1 طଘͷίʔυΛมߋ͢Δ͜ͱͳ͘ɺΞϓϦέ ʔγϣϯΛ֦ுͰ͖ΔΑ͏ʹ͢Δͱ͍͏֓೦
50 ΦʔϓϯɾΫϩʔζυͷݪଇ 0$1 ֦ுʹରͯ͠0QFO มߋʹରͯ͠$MPTFE
51 ૄ݁߹ʹ͢Δίπ ࣮ʹରͯ͠ɺϓϩάϥϛϯά͢Δͷ Ͱͳ͘ɺΠϯλʔϑΣΠεʹରͯ͠ ϓϩάϥϛϯάΛ͢Δ
52 ·ͱΊ ૄ݁߹ɺίϯηϯτͱϓϥάͷΑ͏ʹଟ ͘ͷ࢈Ή w614%FDPSBUFSύλʔϯ wిݯλοϓ$PNQPTJUύλʔϯ wίϯηϯτΧόʔ/VMMPCKFDU
wΞμϓλʔ"EBQUFSύλʔϯ wίϯηϯτͱϓϥάϦείϑͷஔݪଇ w614ͱ1$୯Ұͷݪଇ w֦ு͍ͯ֓͘͠೦ΦʔϓϯɾΫϩʔζυ ͷݪଇ
53 ·ͱΊ ґଘੑͷೖͱɺ༷ʑͳιϑτΣΞઃܭ ͷݪଇύλʔϯΛूΊͨͷͰ͋Γɺίʔ υ͕ૄ݁߹ʹͳΔΑ͏ʹଅ͢ɻͦͯ͠ɺૄ݁ ߹ʹ͢Δ͜ͱͰɺίʔυʹର͢Δอक༰қੑ ্͕͢Δɻ