<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=%E4%BE%9D%E5%AD%98%E6%80%A7%E6%B3%A8%E5%85%A5</id>
	<title>依存性注入 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=%E4%BE%9D%E5%AD%98%E6%80%A7%E6%B3%A8%E5%85%A5"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E4%BE%9D%E5%AD%98%E6%80%A7%E6%B3%A8%E5%85%A5&amp;action=history"/>
	<updated>2026-06-06T04:02:47Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=%E4%BE%9D%E5%AD%98%E6%80%A7%E6%B3%A8%E5%85%A5&amp;diff=12797&amp;oldid=prev</id>
		<title>Administrator: /* DIを利用する */</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E4%BE%9D%E5%AD%98%E6%80%A7%E6%B3%A8%E5%85%A5&amp;diff=12797&amp;oldid=prev"/>
		<updated>2020-04-10T01:55:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;DIを利用する&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2020年4月10日 (金) 01:55時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l39&quot;&gt;39行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;39行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;これにより[[クラス]]ごとの独立性が高まり、[[C言語]]の[[グローバル変数]]より悲惨なことになりがちが「[[階層化の有害性]]」が低減される。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;これにより[[クラス]]ごとの独立性が高まり、[[C言語]]の[[グローバル変数]]より悲惨なことになりがちが「[[階層化の有害性]]」が低減される。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ツルッパゲ（インターフェース）になればどんなカツラ（依存性注入）もかぶれるぞ！&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=%E4%BE%9D%E5%AD%98%E6%80%A7%E6%B3%A8%E5%85%A5&amp;diff=12796&amp;oldid=prev</id>
		<title>Administrator: ページの作成:「&#039;&#039;&#039;依存性注入&#039;&#039;&#039;（読み：いぞんせいちゅうにゅう、英語：Dependency Injection、通称：DI）とは、 オブジェクト指向プログラミ…」</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E4%BE%9D%E5%AD%98%E6%80%A7%E6%B3%A8%E5%85%A5&amp;diff=12796&amp;oldid=prev"/>
		<updated>2020-04-10T01:52:38Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「&amp;#039;&amp;#039;&amp;#039;依存性注入&amp;#039;&amp;#039;&amp;#039;（読み：いぞんせいちゅうにゅう、&lt;a href=&quot;/wiki/%E8%8B%B1%E8%AA%9E&quot; title=&quot;英語&quot;&gt;英語&lt;/a&gt;：Dependency Injection、通称：DI）とは、 オブジェクト指向プログラミ…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;依存性注入&amp;#039;&amp;#039;&amp;#039;（読み：いぞんせいちゅうにゅう、[[英語]]：Dependency Injection、通称：DI）とは、 [[オブジェクト指向プログラミング]]における[[カプセル化]]の際に、[[C言語]]の[[グローバル変数]]より悲惨なことになりがちが「[[階層化の有害性]]」を低減しようと試みる[[コーディングスタイル]]のことである。&lt;br /&gt;
&lt;br /&gt;
依存性注入を積極的に使う[[プログラミング]]のスタイルを「[[コンポーネント指向]]」と呼ぶらしい。&lt;br /&gt;
==概要==&lt;br /&gt;
その[[オブジェクト]]内で利用している別の[[オブジェクト]]を明示的に限定せず、 [[インターフェース]]だけを定義しておき、 利用時に設定ファイルなどから察して動的に読み込む（注入）という記述スタイルである。&lt;br /&gt;
==実装例==&lt;br /&gt;
まずは依存性注入の例を見てみよう。&lt;br /&gt;
===DIを利用しない===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
class Hair {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Human {&lt;br /&gt;
    Hair hair;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;Humanは常に「Hairの状態」がどうなっているのか気にしなければならない。実装によっては[[単体テスト]]をする際にも「Hairの状態」に応じた全パターンを試さなければならないなど悲惨なことになる。&lt;br /&gt;
&lt;br /&gt;
プロジェクトが肥大化すると「Aクラスで利用しているBクラスで利用しているCクラスで利用しているZフィールド変数の状態まで把握していないとAクラスは正常に動作しない」などという状態に陥り、いわゆる[[デスマーチ]]が発生する原因となっている。&lt;br /&gt;
===DIを利用する===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
interface IHair {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Hage : IHair {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Human {&lt;br /&gt;
    IHair hair;&lt;br /&gt;
    public Human() {&lt;br /&gt;
        // hairに依存性を注入（hageを注入）&lt;br /&gt;
        // このでは省略しているが「harに代入するのはHageクラス」というのは&lt;br /&gt;
        // 設定ファイルで切り替えれるようにしておく。&lt;br /&gt;
        hair = new Hage();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;HumanはIHairインターフェースだけをもつ。&lt;br /&gt;
&lt;br /&gt;
依存性注入を利用することでIHairインターフェースにどんなメソッドがあるかだけは気にする必要があるが、Hair内部の状態までは気にしなくてもよくなる。&lt;br /&gt;
&lt;br /&gt;
これにより[[クラス]]ごとの独立性が高まり、[[C言語]]の[[グローバル変数]]より悲惨なことになりがちが「[[階層化の有害性]]」が低減される。&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
</feed>