i-school - VContainer の導入と実装例
 (作成中)



DI コンテナ 


 DI コンテナとは、UnityでC#を使って開発を行う際に、依存性の注入(Dependency Injection: DI)を行うための仕組みを提供するコンテナのことです。
依存性の注入とは、オブジェクト指向プログラミングにおいて、クラスやオブジェクトの依存関係を解決するデザインパターンの1つです。
DIコンテナは、依存関係のあるオブジェクトを自動的に生成し、適切な状態で提供する役割を果たします。

 依存性の注入という言葉で考えるとイメージすることが難しいため、
プログラムのパーツ(クラスやオブジェクト)がお互いにうまく協力しながら動くように、
関係を整理してくれる役割を果たす、と考えておくとよいです。
これにより、コードがきれいでメンテナンスしやすくなります。


VContainer


 VContainer(ブイ・コンテナ)は、Unity向けの軽量なC# DIコンテナの1つで、高速で拡張性に優れています。
VContainerは、依存性の解決を行うために、コンポーネントやサービスのライフタイム管理を提供します。
また、アセンブリ定義やジェネリック型のサポートなど、Unityとの親和性が高い特徴があります。
このため、Unityプロジェクトでの開発を効率化するために利用されることが多いです。


VContainer


Qiita @sakano 様VContainer入門


note アップフロンティア株式会社 様
VContainer入門 – MVPパターンを組んでみる



参考サイト

サンプルコード


 以下は VContainer とインターフェースを利用して、ゲームの初期化処理を行う際の実装例です。


<= クリックすると開きます


 上記のコードでは、IInitializableインターフェースを実装したクラスをVContainerで自動的に取得し、Start関数内でInitialize関数を順次呼び出しています。

 GameInitializerには、インスペクター上でInject属性を付けることで、
ゲーム開始時にVContainerがIInitializableを実装したクラスを自動的に取得し、initializablesに格納します。

 その後、foreach文を使ってinitializables内の全てのオブジェクトに対してInitialize関数を呼び出し、ゲームの初期化処理を行っています。