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
Tomoki Ota
June 13, 2024
Programming
0
110
依存性の注入とは?
依存性の注入についてまとめました。
Tomoki Ota
June 13, 2024
Tweet
Share
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
72
アーキテクチャとビジネスロジック
tomo1227
0
80
【Go言語】テスト
tomo1227
0
46
【Go言語】クロージャ
tomo1227
0
230
【Go言語】イテレータ
tomo1227
0
57
【Go言語】エラーハンドリング
tomo1227
0
52
AIに淘汰されないようにするには?
tomo1227
0
48
【Go言語】range
tomo1227
0
47
【Go言語】break
tomo1227
0
53
Other Decks in Programming
See All in Programming
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
970
MySQL9でベクトルカラム登場!PHP×AWSでのAI/類似検索はこう変わる
suguruooki
1
210
MCPで実現できる、Webサービス利用体験について
syumai
5
1.6k
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
190
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
260
コーディングエージェント概観(2025/07)
itsuki_t88
0
120
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1.2k
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
780
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
980
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
1
220
Yes, You Can Work on Rails & any other Gem
kaspth
0
110
中級グラフィックス入門~効率的なメッシュレット描画~
projectasura
2
1.2k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
990
Become a Pro
speakerdeck
PRO
29
5.4k
Facilitating Awesome Meetings
lara
54
6.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Rails Girls Zürich Keynote
gr2m
95
14k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
A better future with KSS
kneath
238
17k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
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 ·ͱΊ ґଘੑͷೖͱɺ༷ʑͳιϑτΣΞઃܭ ͷݪଇύλʔϯΛूΊͨͷͰ͋Γɺίʔ υ͕ૄ݁߹ʹͳΔΑ͏ʹଅ͢ɻͦͯ͠ɺૄ݁ ߹ʹ͢Δ͜ͱͰɺίʔυʹର͢Δอक༰қੑ ্͕͢Δɻ