165 Views
June 23, 25
スライド概要
しょーじ発表。
ゲームエンジニア。
Unity1weekやってみた ~Clean Architectureを添えて~ 発表者:しょーじ
ことの経緯 クリーンアーキテクチャ採用します! 苦しめ まーしー ひえぇ〜 しょーじ ひえぇ〜 るるたぁ
Clean Architectureって何? • すべてのソフトウェアアーキテクチャが守るべき考え方や アプローチがまとめられた概念 • ソースコードは「上位レベル」の 方針だけに向かうべき ・上位レベルとはソースコード内で 最も重要な概念や処理のこと 出典:The Clean Architecture
レイヤー層に分ける 上位レベルに依存している!!! Entity (HPなどのmodel) Domain(ゲーム進行とか) UI Presentation AppMain ・エントリー ポイント ・DI Data ・セーブ機能 ・ScriptbleObject
色々制約を設けた ・「Assembly Definition」を作る →各Assemblyに参照の制限するやつ 例) Domain層にあるクラスがData層のクラスを 参照できなくなる! セーブ使えないンゴ Domain Data SaveSystem.cs
Assembly Definitionの恩恵 ・ システム的に扱うことを制限しているので 人為的ミスが減る ・Domain層はMonobehaviorを知らない( Unity非依存 ) ・他にも色々メリットあり
参照できないときどうする?
A. インターフェースを使う 依存性逆転の原則(DIP)
例) DomainがPresentationを参照したいとき ・Viewでボタンが押されたことを発火して処理したい場合など ボタンの通知知りたい! Domain Presentation
例) DomainがPresentationを参照したいとき ・Domain側でIPresentationを定義 ・DomainはそのIPresentationを使う ・PresentationはIPresentationを実装する ・依存関係がDomain→PresentaionからPesentation→Domain Domain IPresentation Presentation
例) DomainがPresentationを参照したいとき ・Domain層はPresentaton層を知らなくて済む!!! ・場合によってはPresentation層もDomain層の実装を 気にしなくていい Presentationって何ですか?? IPresentation使おーっと Domain IPresentation Presentation
感想 ・依存性逆転の原則を初めて正しく使えた ・Assembly Definitionで制限かけたのがでかい ・どのレイヤー層に書けば良いのか戸惑った