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()
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()
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("電気で起動")
def start(self):
print("電気で起動")
👉 差し替えできる
② テストしやすい
👉 ダミーを渡せる
③ 設計が綺麗になる
👉 依存関係が整理される
■ イメージ
- DIなし → 自分で作る
- DIあり → 外からもらう
■ 今までの学びとのつながり
👉 継承 → 共通化
👉 組み合わせ → 柔軟性
👉 DI → さらに柔軟
👉 設計の完成形に近い
■ 今日の気づき
最初は
「わざわざ渡す意味ある?」
と思いました。
でも
👉 変更に強いコードになる
とわかりました。
👉 実務でかなり使われる理由が納得できました🐍
🎥 動画で見たい方はこちら(TikTok)
👉 https://www.tiktok.com/@programbenkyo0078
▶️ YouTubeで体系的に学ぶ
👉 https://www.youtube.com/@programming-delivery0082
📌 フォローお願いします
このブログではPython初心者の学習記録を発信しています🐍
フォローするとPython学習の流れが全部追えます。
まとめ
✔ DIは「外から渡す」
✔ 依存を弱くできる
✔ 柔軟で変更に強い
✔ 実務でよく使う
👉 ここ理解できたら“設計できる人”です🔥