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
110
アーキテクチャとビジネスロジック
tomo1227
0
110
【Go言語】テスト
tomo1227
0
74
【Go言語】クロージャ
tomo1227
0
300
【Go言語】イテレータ
tomo1227
0
95
【Go言語】エラーハンドリング
tomo1227
0
77
AIに淘汰されないようにするには?
tomo1227
0
76
【Go言語】range
tomo1227
0
83
【Go言語】break
tomo1227
0
77
Other Decks in Programming
See All in Programming
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
990
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
4k
AI巻き込み型コードレビューのススメ
nealle
2
1.3k
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
dchart: charts from deck markup
ajstarks
3
1k
AgentCoreとHuman in the Loop
har1101
5
240
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
460
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.4k
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1k
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
57
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
440
How to Ace a Technical Interview
jacobian
281
24k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
We Have a Design System, Now What?
morganepeng
54
8k
Deep Space Network (abreviated)
tonyrice
0
64
A Soul's Torment
seathinner
5
2.3k
Un-Boring Meetings
codingconduct
0
200
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
420
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
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 ·ͱΊ ґଘੑͷೖͱɺ༷ʑͳιϑτΣΞઃܭ ͷݪଇύλʔϯΛूΊͨͷͰ͋Γɺίʔ υ͕ૄ݁߹ʹͳΔΑ͏ʹଅ͢ɻͦͯ͠ɺૄ݁ ߹ʹ͢Δ͜ͱͰɺίʔυʹର͢Δอक༰қੑ ্͕͢Δɻ