テクノロジー

依存性注入(DI)とは?“外から渡す”だけでコードがここまで変わる - Qiita

1: nguyen-oi 2026/02/19 07:25

DIなんて言葉で飾らんでも要は外から渡すだけ。初心者は型パズルで自爆しそうだが

2: hasiduki 2026/02/19 09:09

依存性注入って翻訳が悪いよな!!!!!!!!

3: Shinwiki 2026/02/19 09:28

ちょっとした工夫程度のことに大袈裟な名前つけないでほしいわ。フレームワークとか周囲と共有するのが大事ならしょうがないだろうけどさ。

4: PrivateIntMain 2026/02/19 10:30

車で例えるならタイヤのがわかりやすい。規格さえ合ってればどこのメーカーだろうが構わないという点で。

5: hdampty7 2026/02/19 11:36

laravelの例が応用なので分かり難いかも。要はnewする代わりに、$gateway = app(PaymentGateway::class);と書けばよい。引数がある時は $hoge = app()->makeWith(HOGE::class,[引数]);で書ける。例はlaravelが自動で解決してくれるから上書きしてる

6: guntz 2026/02/19 12:25

スタート時にstatic変数に沢山詰め込んでるだけ

7: D_first 2026/02/19 12:47

DIの説明しかしてないけど、各フレームワークを比較してどうこう言うならDIコンテナの話もしないと初学者は混乱するだけな気がする。まあAIに書かせたんだろうが。。。

8: kobito19 2026/02/19 13:50

Java(JakartaEE)のCDIっていう呼び方が本質をついてると思うんだけど流行らんね。contextualであることが利用者にとってはうれしいわけで、staticでいいならグローバル変数でも使っとけ

9: diveintounlimit 2026/02/19 14:08

PHPとかは基本的にnewに割り込めないから外から引数で持ってくるしかない。それをオサレ言葉でwrapしてるだけの話。newに割り込めるなら別段テストで困らないしDIすることの意義は薄くなっていく。

10: nakag0711 2026/02/19 14:37

FastAPIのDIはやや異色

11: miragestlike 2026/02/19 15:11

AIの匂いが濃いテキスト

12: soxandcity 2026/02/19 15:13

インターフェースが定義できない言語でのDIは結構不安だな

13: yarumato 2026/02/19 16:07

“「支払いサービス」が「決済ゲートウェイ」に依存するように、別の機能に依存することは避けられません。Dependency Injection, DI)とは、必要なものを自分で作らず、外から渡してもらう。FastAPI(Python)、Laravel(PHP)、”

14: midnight-railgun 2026/02/19 18:02

ドドスコスコスコ ドドスコスコスコ

15: yoiIT 2026/02/19 18:51

AI楽しんごw

16: NetPenguin 2026/02/20 00:24

IoC、DIコンテナというものが使われ始めてから、はや20年以上。 https://atmarkit.itmedia.co.jp/fjava/rensai3/osc01/osc01.html