Python勉強51:DIとは?設計が一気にレベルアップする「依存性注入」

Pythonの勉強を続けています🐍

今回は
👉 DI(依存性注入:Dependency Injection) を学びました。

正直、最初は👇

👉 「難しそう…」

と思いましたが、

結論👇

👉 クラスのつなぎ方の話です


■ DIとは?

👉 外からオブジェクトを渡すこと


■ DIなし(よくあるコード)

 
class Engine:
 def start(self):
  print("エンジン起動")


class Car:
 def __init__(self):
  self.engine = Engine()

def run(self):
 self.engine.start()
 

❌ 問題

👉 CarがEngineに依存しすぎ

👉 変更しづらい


■ DIあり(改善)

 
class Engine:
 def start(self):
  print("エンジン起動")


class Car:
 def __init__(self, engine):
  self.engine = engine

 def run(self):
  self.engine.start()


engine = Engine()
car = Car(engine)

car.run()
 

✔ 何が違う?

👉 Engineを外から渡している

👉 依存が弱くなる


■ DIのメリット

① 柔軟に変更できる

 
class ElectricEngine:
 def start(self):
  print("電気で起動")
 

👉 差し替えできる


② テストしやすい

👉 ダミーを渡せる


③ 設計が綺麗になる

👉 依存関係が整理される


■ イメージ

  • DIなし → 自分で作る
  • DIあり → 外からもらう

■ 今までの学びとのつながり

👉 継承 → 共通化
👉 組み合わせ → 柔軟性
👉 DI → さらに柔軟

👉 設計の完成形に近い


■ 今日の気づき

最初は

「わざわざ渡す意味ある?」

と思いました。

でも

👉 変更に強いコードになる

とわかりました。

👉 実務でかなり使われる理由が納得できました🐍


🎥 動画で見たい方はこちら(TikTok)

👉 https://www.tiktok.com/@programbenkyo0078


▶️ YouTubeで体系的に学ぶ

👉 https://www.youtube.com/@programming-delivery0082


📌 フォローお願いします

このブログではPython初心者の学習記録を発信しています🐍

フォローするとPython学習の流れが全部追えます。


まとめ

✔ DIは「外から渡す」
✔ 依存を弱くできる
✔ 柔軟で変更に強い
✔ 実務でよく使う


👉 ここ理解できたら“設計できる人”です🔥