Upgrade to Pro — share decks privately, control downloads, hide ads and more …

依存性注入ってなんですか? どうしてそれが大事なんですか?

依存性注入ってなんですか? どうしてそれが大事なんですか?

依存性注入ということについて、わかりやすい言葉で解説します。

こんな人向け
・プログラミングを始めて2,3年以上
・オブジェクト指向でプログラミングをしている
・オブジェクト指向のプログラミングを理解はできるし、自分で書いているが、うまく書けているか自信がない
・依存性注入という言葉を聞いたことがあったり、依存性注入をした方がよいとか言われるがよくわからない

Avatar for Goto Akiko

Goto Akiko

April 25, 2026

More Decks by Goto Akiko

Other Decks in Programming

Transcript

  1. 2 自己紹介 • 株式会社オンラインコンサルタント 代表取締役 • プログラミング歴は17年 • 受託開発・自社サービスなど多数の開発 •

    メインの実績は3000社以上の導入実績がある 「ODIN リアルタイム配送システム」 という配送会社向けのシステム https://delivery-system.com/ @Akiko_Goto999
  2. 7 依存とは コード例 コードはTypeScriptで書いていきます。 // 味噌汁を作るクラス class MisoSoup { seasoning

    : Miso // 味は味噌 ingredient : Tofu // 具材は豆腐 constructor(seasoning: Miso, ingredient: Tofu) { this.seasoning = seasoning; this.ingredient = ingredient; } } class Miso { name : string flavor : string constructor(name: string, flavor: string) { this.name = name; this.flavor = flavor; } } class Tofu { name : string texture : string constructor(name: string, texture: string) { this.name = name; this.texture = texture; } }
  3. 8 依存とは コード例 // 味噌汁を作るクラス class MisoSoup { seasoning :

    Miso // 味は味噌 ingredient : Tofu // 具材は豆腐 constructor(seasoning: Miso, ingredient: Tofu) { this.seasoning = seasoning; this.ingredient = ingredient; } } この時、MisoSoupクラス は Misoクラスと Tofuクラスに 「依存している」 と言います。
  4. 11 依存とは コード例 // 味噌汁を作るクラス class MisoSoup { seasoning :

    Miso // 味は味噌 ingredient : Tofu // 具材は豆腐 constructor(seasoning: Miso, ingredient: Tofu) { this.seasoning = seasoning; this.ingredient = ingredient; } } Misoが 入ってなかったら MisoSoupとは 言えない 味噌汁は味噌に依存している
  5. 13 依存性注入とは コード例 // 味噌汁を作るクラス class MisoSoup { seasoning :

    Miso // 味は味噌 ingredient : Tofu // 具材は豆腐 constructor(seasoning: Miso, ingredient: Tofu) { this.seasoning = seasoning; this.ingredient = ingredient; } } すでに、このコードは 依存性を注入している と言える
  6. 14 依存性注入とは コード例 // 味噌汁を作るクラス class MisoSoup { seasoning :

    Miso // 味は味噌 ingredient : Tofu // 具材は豆腐 constructor(seasoning: Miso, ingredient: Tofu) { this.seasoning = seasoning; this.ingredient = ingredient; } } 依存性注入とは、外部のコードから 渡すことである。 依存に必要なモジュールとは、ここでは Misoクラス、Tofuクラスなので、 依存性はコンストラクタの引数で 渡されているので 注入している、ということになる。
  7. 19 依存性を注入していない場合 コード例 依存性を注入していない場合、とは 左の例のように、メソッドや コンストラクタ内でインスタンスを作る 場合。 例えば左の例では、後で豆腐を「絹」 から「木綿」に変えたい場合、このコー ドに手を入れなければならず、面倒。

    class MisoSoup { seasoning : Miso ingredient : Tofu constructor() { this.seasoning = new Miso("赤味噌", "濃厚") this.ingredient = new Tofu("絹", "なめらか") } } MisoSoupとMisoクラス、Tofuクラスが ガチガチに固まってしまっている。 そういう状態を密結合と呼んだりする。