SlideShare a Scribd company logo
Clean Architecture
x
Assembly definition
中野洋輔
自己紹介
• 中野洋輔
• @naninuneno_y
• ___
• asmdefは「アセンデフ」と読む派
Assembly definition
Assembly Definition Filesという神機能(テラシュールブログ)
> C#のコードが出力するアセンブリを
複数のアセンブリに分割する機能です
Clean Architecture
• Clean Architecture for Unity
• @monry
• https://learning.unity3d.jp/4021/
• Unityでオニオンアーキテクチャ
• @toRisouP
• https://www.slideshare.net/torisoup
/unity-14815173
Main InstallerUseCase
IPresenter IRepository
Presenter Repository
IView IDataStore
View DataStore
所持
依存 依存
依存依存
実装実装
実装 実装
DI
UI Data
Frameworks & Drivers
-Detail-
Interface Adapter
-Adapter-
App Business Rule
-Domain-
構成
ここが大変
• 学習コスト高
• クラス・インタフェースが増える
• ファイルが増えるのでフォルダ分けが重要に
• レイヤの依存関係を守ってもらうのが大変
• レイヤを不正にまたいだ依存
• 逆の依存
ここが大変
• 学習コスト高
• クラス・インタフェースが増える
• ファイルが増えるのでフォルダ分けが重要に
asmdef考慮で綺麗にフォルダ分け
• レイヤの依存関係を守ってもらうのが大変
• レイヤを不正にまたいだ依存
• 逆の依存
asmdefに事前に設定して不正な関係を防ぐ
Hoge.MainHoge.Installer
Hoge.Domain.UseCase
Hoge.Domain.Presenter Hoge.Domain.Repository
Hoge.Presenter Hoge.Repository
Hoge.Repository.Detail
Hoge.asmdef
UniRx
Zenject
UniRx.Async
Installer.cs Main.cs
UseCase.cs
IPresenter.cs IRepository.cs
Presenter.cs
IView.cs
Repository.cs
IDataStore.cs
View.cs DataStore.cs
共通の定義
・データ型
・Util関数
自分のプロジェクト 外部ライブラリ
重要
Hoge.Domain
共通のロジック
Domain
Adapter
Detail
Hoge.Presenter.Detail
firebaseとか
Hoge.Domain.UseCase
Hoge.Domain.Presenter Hoge.Domain.Repository
Hoge.asmdef
UniRx
UseCase.cs
IPresenter.cs IRepository.cs
共通の定義
・データ型
・Util関数
Hoge.Domain
共通のロジック
UseCase
重要
自分のプロジェクト 外部ライブラリ
Domain
Adapter
Detail
UniRx.Async
Hoge.Domain.Presenter Hoge.Domain.Repository
Hoge.asmdef
UniRx
IPresenter.cs IRepository.cs
共通の定義
・データ型
・Util関数
IPresenter/
IRepository
重要
自分のプロジェクト 外部ライブラリ
Domain
Adapter
Detail
UniRx.Async
Hoge.Domain.Presenter Hoge.Domain.Repository
Hoge.Presenter Hoge.Repository
Hoge.asmdef
UniRx
IPresenter.cs IRepository.cs
Presenter.cs
IView.cs
Repository.cs
IDataStore.cs
共通の定義
・データ型
・Util関数
重要
Domain
Adapter
Detail
Presenter/
Repository
自分のプロジェクト 外部ライブラリ
UniRx.Async
Hoge.Presenter Hoge.Repository
Hoge.Presenter.Detail Hoge.Repository.Detail
Hoge.asmdef
Presenter.cs
IView.cs
Repository.cs
IDataStore.cs
View.cs DataStore.cs
共通の定義
・データ型
・Util関数
重要
Adapter
Detail
View/
DataStore
自分のプロジェクト 外部ライブラリ
Domain
firebaseとか
UniRx.Async
Hoge.Main
Hoge.Domain.UseCase
Hoge.Domain.Presenter Hoge.Domain.Repository
Hoge.asmdef
Zenject
Main.cs
UseCase.cs
IPresenter.cs IRepository.cs
共通の定義
・データ型
・Util関数
重要
Domain
Adapter
Detail
Main 自分のプロジェクト 外部ライブラリ
Hoge.Installer
Hoge.Domain.Presenter Hoge.Domain.Repository
Hoge.Presenter Hoge.Repository
Hoge.Repository.Detail
Hoge.asmdef
Zenject
Installer.cs
IPresenter.cs IRepository.cs
Presenter.cs
IView.cs
Repository.cs
IDataStore.cs
View.cs DataStore.cs
共通の定義
・データ型
・Util関数
重要
Domain
Adapter
Detail
Hoge.Presenter.Detail
Installer 自分のプロジェクト 外部ライブラリ
まとめ
• 自然とディレクトリも分けられる
• 関心の分離にも繋がる
• Intellisenseの候補が絞られる
• レビュー時にasmdefに差分があったら注意すれば良い
• asmdefの番人が必要
• AssetBundleに罠がある(らしい)
• csprojの数にビビる
• ここまでくると可視化やvalidationツールが欲しくなる
naninunenoy/
UnityCleanArchitectureExample
MainInstaller
UseCase
IPresenter IRepository
Presenter Repository
IView IDataStore
View DataStore
所持
依存 依存
依存依存
実装実装
実装 実装
DI
UI Data
Frameworks & Drivers
-Detail-
Interface Adapter
-Adapter-
App Business Rule
-Domain-
UseCase
アプリケーションでしたいこと
Presenterを介してUIの入力/表示を実装
Repositoryを介してDataのIOを実装
UniRxが便利
public class UseCase : IUseCase {
readonly IPresenter presenter;
readonly IRepository repository;
public UseCase(IPresenter presenter,
IRepository repository) {
this.presenter = presenter;
this.repository = repository;
}
void IUseCase.Begin() {
// ボタンが押された回数を保存みたいな
}
void IUseCase.Finish() {
// 終了処理
}
}
MainInstaller
UseCase
IPresenter IRepository
Presenter Repository
IView IDataStore
View DataStore
所持
依存 依存
依存依存
実装実装
実装 実装
DI
UI Data
Frameworks & Drivers
-Detail-
Interface Adapter
-Adapter-
App Business Rule
-Domain-
IPresenter/IReposiotry
UseCaseが参照するUIやデータを操作
するための停止
UseCase(したいこと)があってこいつら
が決まるので、Domain層の住人
public interface IPresenter {
IObservable<Unit> ClickObs {get;}
void SetText(string text);
}
public interface IRepository {
void SetCount(int count);
int GetCount();
}
データのI/Oを非同期にしたいなら
UniTaskも選択肢
MainInstaller
UseCase
IPresenter IRepository
Presenter Repository
IView IDataStore
View DataStore
所持
依存 依存
依存依存
実装実装
実装 実装
DI
UI Data
Frameworks & Drivers
-Detail-
Interface Adapter
-Adapter-
App Business Rule
-Domain-
Presenter/Reposiotry
実際に処理を行う奴らとUseCaseの仲介
こいつらも詳細は知らない
いわゆる腐敗防止層(?)
public class Presenter : IPresenter {
readonly IView view;
public Presenter(IView view) {
this.view = view;
}
public IObservable<Unit> ClickObs =>
view.Button.OnClickObservable();
public void SetText(string text) {
view.Text.text = text;
}
}
public interface IView {
Button Button {get;}
Text Text {get;}
}
MainInstaller
UseCase
IPresenter IRepository
Presenter Repository
IView IDataStore
View DataStore
所持
依存 依存
依存依存
実装実装
実装 実装
DI
UI Data
Frameworks & Drivers
-Detail-
Interface Adapter
-Adapter-
App Business Rule
-Domain-
View/DataStore
実際に処理を行う奴ら
外部フレームワークに依存しまくってOK
ここを変えてもアプリケーションの
ロジックに影響はなし
public class View : MonoBehaviour, IView {
[SerializeField] Button button = default;
[SerializeField] Text text = default;
public Button Button => button;
public Text Text => text;
}
public class DataStore : IDataStore {
public void SaveCount(int count) {
PlayerPrefs.SetInt("count", count);
}
public int LoadCount() {
return PlayerPrefs.GetInt("count", 0);
}
}
MainInstaller
UseCase
IPresenter IRepository
Presenter Repository
IView IDataStore
View DataStore
所持
依存 依存
依存依存
実装実装
実装 実装
DI
UI Data
Frameworks & Drivers
-Detail-
Interface Adapter
-Adapter-
App Business Rule
-Domain-
Main
PresenterやRepositoryの実装を
(どうにかして)受け取り、
UseCaseの作成/実行/破棄を行う。
MonoBehaviourを継承し、Unityのライ
フサイクルにのせる。
public class Main : MonoBehaviour {
IUseCase usecase;
[Inject]
Construct(IPresenter presenter,
IRepository repository) {
usecase = new UseCase(
presenter, repository);
}
void Awake() {
usecase.Begin();
}
void OnDestroy() {
usecase.Finish();
}
}
MainInstaller
UseCase
IPresenter IRepository
Presenter Repository
IView IDataStore
View DataStore
所持
依存 依存
依存依存
実装実装
実装 実装
DI
UI Data
Frameworks & Drivers
-Detail-
Interface Adapter
-Adapter-
App Business Rule
-Domain-
Installer
Zenject.MonoInstallerを継承
あるinterfaceを要求された時に返すクラ
スやインスタンスを事前に定義できる
全ての定義を知る存在
public class Installer : MonoInstaller {
[SerializeField] View view;
[SerializeField] DataStore dataStore;
public override void InstallBindings() {
Container
.Bind<IPresenter>()
.FromInstance(new Presenter(view))
.AsCached();
Container
.Bind<IRepository>()
.FromInstance(new Repository(dataStore))
.AsCached();
}
}

More Related Content

What's hot

CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
 
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
Unity Technologies Japan K.K.
 
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Amazon Web Services Japan
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
DeNA
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
 
UniRxでMV(R)Pパターン をやってみた
UniRxでMV(R)PパターンをやってみたUniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターン をやってみた
torisoup
 
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてTatsuhiko Yamamura
 
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
UnityTechnologiesJapan002
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
 
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話
Yusuke Hisatsu
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
Sugimoto Chizuru
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
UnityTechnologiesJapan002
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
Kohei Kadowaki
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
 
テストを書こう、Unity編
テストを書こう、Unity編テストを書こう、Unity編
テストを書こう、Unity編
Hiroto Imoto
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
 

What's hot (20)

CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
 
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
 
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
Game Development on AWS (ゲーム開発環境を向上させるためのAWS活用術)
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
UniRxでMV(R)Pパターン をやってみた
UniRxでMV(R)PパターンをやってみたUniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターン をやってみた
 
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
 
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話
 
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
 
テストを書こう、Unity編
テストを書こう、Unity編テストを書こう、Unity編
テストを書こう、Unity編
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
 

Similar to CleanArchitecture with AssemblyDefinition in unity

【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
日本マイクロソフト株式会社
 
VIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCIVIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCI
tetsusat
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
Masanori Ishigami
 
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門
Keisuke Fujikawa
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
Yosuke HASEGAWA
 
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
TomomitsuKusaba
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
bitbank, Inc. Tokyo, Japan
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
Michitaka Terada
 
zozotown real time linkage infrastructure
zozotown real time linkage infrastructurezozotown real time linkage infrastructure
zozotown real time linkage infrastructure
KeisukeTaniguchi2
 
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
シスコシステムズ合同会社
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発Kazuki Nakajima
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
Shinji Tanaka
 
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
Naoki (Neo) SATO
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansai
Tomohiro Kumagai
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
de:code 2017
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
Atsushi Fukui
 
Tech talk salesforce mobile sdk
Tech talk   salesforce mobile sdkTech talk   salesforce mobile sdk
Tech talk salesforce mobile sdkKazuki Nakajima
 

Similar to CleanArchitecture with AssemblyDefinition in unity (20)

【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
VIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCIVIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCI
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
 
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼうEntity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
 
zozotown real time linkage infrastructure
zozotown real time linkage infrastructurezozotown real time linkage infrastructure
zozotown real time linkage infrastructure
 
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansai
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
 
Tech talk salesforce mobile sdk
Tech talk   salesforce mobile sdkTech talk   salesforce mobile sdk
Tech talk salesforce mobile sdk
 

CleanArchitecture with AssemblyDefinition in unity