VContainer
VContainerは Unity(ゲームエンジン)上で動作する高速なDIフレームワークです。(DI = Dependency Injection のこと。)
"V" は、Unity の頭文字 "U" を 鉛筆削りで鋭く削ってスリムにした形状をイメージしています。
- 高速なResolve: Zenjectとの比較でおよそ 5-10倍の性能 。
- GCにやさしい: オブジェクト解決時 ゼロアロケーション 。(生成したインスタンス自身を除く)
- コンパクトなサイズ: internal 型や .callvirt 命令とかも少ない。ビルドサイズにやさしい。
- 過不足のない機能: シンプルで透明性のあるAPI。過度に複雑で理解し難い設 定を避けます。
- イミュータブルなコンテナ: 一度コンテナをつくったら遅い処理がほとんどない。スレッドセーフ。
主な機能
- コンストラクタ インジェクション / メソッド インジェクション / プロパティ & フィールド インジェクション
- PlayerLoopSystem上への 独自C#型のスケジュール
- 柔軟なスコープ生成
- Roslyn SourceGeneratorによる高速化
- Diagnostics Window
- UniTask連携
- ECS連携 beta
DI + Inversion of Control for Unity
通常、Unityは MonoBehaviour
を継承したクラスのみを処理の起点にできますが、VContainerを用いることでオブジェクト同士の参照関係/所有関係を自由に構築したり、純粋なC# クラスのエントリポイントをつくることができます。これはUnityのコンポーネントに依存する部分・見た目の部分と、その他純粋なロジックを分離する設計の手助けになります。
このような制御の反転はIoC(Inversion of Control) などと呼ばれていて、DIコンテナの設計上の利点のひとつです。
- くわしくは:
- 合わせて読みたい: