1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnityでDIをやってみた話(1) ~~ DI導入編 ~~

Posted at

はじめに

こんにちは。Streamerioアドベントカレンダー9日目から担当する guu です。
Streamerioでは、主にゲーム側のUIを担当していました。

これまで、ゆうだいさんが Web側バックエンド側のこだわりを詳しく書いてくれています。
今日からはバトンを受け取って、ゲーム側の実装でこだわった点 を紹介していきます。

今回から4回にわたって Unity の DI 設計について書いていきます。
第1回となる今回は「DI導入編」です。

Streamerio の概要は、まず 1日目の記事をご覧ください。

DIとは

DI(Dependency Injection)は、クラスが必要とする依存オブジェクトを自分で生成せず、外部から受け取るという設計思想です。
これにより、クラスを違うものに変えたい時、渡すクラスを差し替えるだけでよくなり、変更に強くなります。
今回は、クラスを渡す部分を自動化してくれるDIコンテナを使用しました。

DI導入のきっかけ

DIってなんかかっこいいですよね。
……という本音はさておき。

Web側やバックエンド側が設計にこだわり始めたのを見て、ゲーム側もちゃんと設計を詰めたいという話があがりました。
じゃあ具体的にどこをこだわろうかと考えたときに、まず 機能の中身を気にせず、窓口となるクラスだけで使える構成 にしたいと思いました。
さらに、MonoBehaviour 依存を減らして軽量で扱いやすい実装 にしたい、という狙いもありました。
この2つをやりたくてDIを導入しました。

VContainer導入理由

UnityでDIを導入するにあたって、まずはコンテナ選びが必要になります。
代表的なものは、ExtenjectVContainerの2つです。
今回は、動作が軽く、簡単に使えそうという理由でVContainerを採用しました。

おわりに

今回は、DIについてと、ゲーム側でDIを導入した理由を紹介しました。
次回からは、VContainerを使って実際にどう設計・実装していったかを説明していきます。
第2回のテーマは 「代表クラスだけを別コンテナに公開する」 です。

最後まで読んでくれてありがとうございます!次回もゆるっと見てもらえるとうれしいです‼︎

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?