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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

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

こんな人向け
・プログラミングを始めて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クラスが ガチガチに固まってしまっている。 そういう状態を密結合と呼んだりする。