From 7f64a086ff7debbdb174ac136f1d94871b4c4a6d Mon Sep 17 00:00:00 2001 From: hadashi Date: Fri, 6 Aug 2021 12:59:45 +0900 Subject: [PATCH] [website] Fix ja --- .../current/about/what-is-di.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/i18n/ja/docusaurus-plugin-content-docs/current/about/what-is-di.mdx b/website/i18n/ja/docusaurus-plugin-content-docs/current/about/what-is-di.mdx index 7c63a6ae..14d7a8f9 100644 --- a/website/i18n/ja/docusaurus-plugin-content-docs/current/about/what-is-di.mdx +++ b/website/i18n/ja/docusaurus-plugin-content-docs/current/about/what-is-di.mdx @@ -4,11 +4,11 @@ title: DIって何 ? DI(=Dependency Injection) は、オブジェクト指向プログラミングにおける一般的なテクニック/パターンのことです。 -あるクラスのコードの中から「委譲先のオブジェクトがどこからやってくるのか?」という情報を消すことで、クラスの実装同士を疎結合にする、というのが主なコンセプトです。 +あるクラスのコードの中から「委譲先のオブジェクトがどこからやってくるのか?」という情報を取り除き、クラスたちと、それらの関係を結びつける設定とを分けてしまおう、というのが主なコンセプトです。 DIで参照関係を組み立てると、アプリケーションのコードを変更せずともクラス同士の依存関係をつなぎかえることができるので、テスタビリティやある種のメンテナンス性が改善する... とかとか一般的には言われています。 -……そんな教科書的な話の全てがクライアントサイドでも強いメリットを持つとも限りませんが、依存関係を結びつけるやりかたに一貫したスタイルを持ち込むことにはある種の快適さがあることは確かです。 +……そんな教科書的な話の全てがクライアントサイドでも強いメリットを持つとも限りませんが、参照関係を結びつけるやりかたに一貫したスタイルを持ち込むことにある種の快適さがあることは確かです。 :::note C# では、サーバやコンソールアプリケーションを書くための 設定・ロギング・などなどを整備する標準的な仕組み [Generic Host](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-5.0) がありますが、これはDIをベースにしたフレームワークとしてデザインされてます。 @@ -26,8 +26,8 @@ C# でDIを使用するプログラミングをするなら要チェックだ! 2. オブジェクトは自身の責務ではない仕事については、別のオブジェクトへ委譲する。 よさそうです。しかし実際にこれを完璧に行おうとするのは意外に簡単ではありません。 -あるクラスのコードのなかに別のクラスへの委譲を書こうとすると、単純に考えれば、委譲先のオジェクトの生成方法または取得方法もそこに書くことになりそうです。しかし考えてみると、それは委譲元が委譲先の実装を選んでしまうことになりますし、委譲先のインターフェイスさえ知っていれば十分な場合でも、委譲元ではコードを書き換えないと実装が交換可能ではありません。 -実を言うと、突き詰めていけば、これを避けるには外側からオブジェクトの参照を渡してあげるしかありません。DI っていうのはつまりそれを行うパターンのことです。 +あるクラスのコードのなかに別のクラスへの委譲を書こうとすると、単純に考えれば、委譲先のオジェクトの生成方法または取得方法もそこに書くことになりそうです。しかしもう少し考えてみると、それは委譲元が委譲先の実装を選んでしまうことになりますし、委譲先のインターフェイスさえ知っていれば十分な場合でも、委譲元ではコードを書き換えないと実装が交換可能ではありません。 +実を言うと、これをカンペキに避けるには外側からオブジェクトの参照を渡してあげるしかありません。DI っていうのはつまりそれを行うパターンのことです。 - 合わせて読みたい: - [Manning | Dependency Injection in .NET](https://www.manning.com/books/dependency-injection-in-dot-net) @@ -42,9 +42,9 @@ C# でDIを使用するプログラミングをするなら要チェックだ! ## なぜ Unity にDI ? {#whi-di-for-unity} -通常、Unityにおいては、 `MonoBehaviour` が アプリケーションの処理の起点になります。それと同時に、画面に表示するものを表現した 「Viewコンポーネント」の役割を持つのもまた `MonoBehaviour` です。 +通常、Unityにおいては、 `MonoBehaviour` が アプリケーションの処理の起点になります。と同時に、画面に表示するものを表現した 「Viewコンポーネント」の役割を持つのもまた `MonoBehaviour` です。 -アプリケーション設計においては、「ドメインロジックとプレゼンテーション(Viewコンポーネント)の分離」がとても大事です。`MonoBehaviour` が多くの役割(イベントハンドリング、制御フロー、ドメインロジック呼び出し、etc...)を担っていると、この原則は破綻してしまいます。 +アプリケーション設計においては、「ドメインロジックとプレゼンテーション(Viewコンポーネント)の分離」がとても大事です。`MonoBehaviour` が多くの役割(イベントハンドリング、制御フロー、ドメインロジック呼び出し、etc...)を担っていると、この原則が破綻してしまいがちです。 DI の目的のひとつに IoC (制御の反転) があります。DIコンテナを使うと、参照関係の順番についていかようにでも主導権を握れるので、 `MonoBehaviour` のようなUnityに依存した末端のオブジェクトじゃなくて、自由に定義した C# クラスの方を処理のはじまりにすることができます。 これは、制御フローおよびその他のドメインロジックと、ViewコンポーネントとしてのMonoBehaviourの機能との分離に役立ちます。