謝罪
社内勉強会向けのスライドをQiitaに移植したものです。
レイアウトが崩れている箇所がございますが、何卒ご了承下さい。
Unityエンジニアへ
単体テストを一緒に書こうぜ!!
こんな経験ありませんか?
バグを1つ修正したら、
今までちゃんと動いていた別の箇所がバグった!
バグを直すと別の箇所がバグる
※矢印はクラスの参照を表します。
B君とC君の都合を考えてからA君を修正すればいいの?
現実はもっと複雑・・・
様々な登場人物が複雑に参照しあっている。
すべての登場人物の都合を考えるのは無理!!
勝手な変更されないように単体テストを作って監視しよう
単体テストを作ってクラスの動作を保証しよう!
単体テストを書こう!
Unityで単体テストを書くには?
asmdefがないとUnityで単体テストが導入できない
asmdefがあればUnityで単体テストが導入できる!
asmdefを導入しよう!
asmdef(AssemblyDefinition)とは?
Unityでは、C#ファイルのまとまりをアセンブリと定義することができる。
Unityにおけるアセンブリとは?
- C言語でいう .so , .lib
- .NETでいう .dll
- Javaでいう .jar
のようなもの
asmdefを導入しよう!
参照先が対応していないと参照元が対応できない
参照先が対応していないと参照元が対応できない
参照先が対応していないと参照元が対応できない
末端からasmdefを導入しよう!
末端から少しずつasmdefを導入しよう!
現実はもっともっと複雑・・・
末端はどこ?
参照方向をそろえよう!
泥臭い作業が必要だけど、参照方向をそろえよう!
参照方向をどうやってそろえるの?
大変だけど様々な方法を駆使すればできます!
- 依存性逆転の原則
- 依存性の注入
詳しくはググってください
すごく大変そうだけどそこまでやる価値あるの?
やる価値あります!
単体テストなし vs あり
プログラマーの学習コストが大幅に下がります!
学習コストが下がれば多人数開発がしやすくなります
多人数開発ができれば製品の開発スピードが向上します
これがいわゆる疎結合!
泥臭い作業が必要なのは自分の代だけ!
(ババ引いたとか言わないで)