Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
Search
soi013
December 26, 2024
Programming
0
440
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
December 26, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
770
A2A プロトコルを試してみる
azukiazusa1
2
1.3k
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
690
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
110
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
740
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.5k
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
5
1.1k
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
910
Is Xcode slowly dying out in 2025?
uetyo
1
260
Featured
See All Featured
Building an army of robots
kneath
306
45k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
810
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Music & Morning Musume
bryan
46
6.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
YesSQL, Process and Tooling at Scale
rocio
173
14k
A Tale of Four Properties
chriscoyier
160
23k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
A designer walks into a library…
pauljervisheath
207
24k
Gamification - CAS2011
davidbonilla
81
5.3k
Transcript
ΦχΦϯΞʔΩςΫνϟΛͬͯɺ 6OJUZͱ/&5ͰίʔυΛڞ༗͢Δ TPJ ΞυϕϯτΧϨϯμʔ͓ർΕ༷ձ
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 2 લॻ͖ 6OJUZͱ/&5 w 6OJUZ w 6OJUZࣾήʔϜΤϯδϯ w
ରNPCJMFʗ4UFBNʗ73 w /&5 w .JDSPTPGUࣾιϑτΣΞϓϥοτϑΥʔϜ w ର%FTLUPQʗ8FC どっちも $ で ॻ く
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 3 ΞϓϦ ͜ΜͳΞϓϦΛ࡞Γ·ͨ͠ 6OJUZ と /&5 コンソールアプリの ྆ํ
の プラ ッ トフ ォ ームで 50%0 ア プ リを ࡞ Unity アプリ コンソール アプリ
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 4 ΞϓϦ ϢʔβʔΛ͔͞ͳ͍ݫ͠ͷ50%0ΞϓϦ (ア ドベ ントカレン ダーの క
め り ؒ に ߹ わなくて ਃ し ༁ あり ませ ん ɻ ) wඞͣҰఆ࣌ؒͰظݶΕʹ͢Δ wҰظݶΕʹͳͬͨΒɺྃʹͰ͖ͳ͍ wˠ50%0ܾΊͨΒɺ͙͢Εʂ+645%0*5ʂ
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 5 ղઆ ΦχΦϯΞʔΩςΫνϟ w υϝΠϯத৺ઃܭ ΞϓϦέʔγϣϯͷϏδω εϧʔϧΛத৺ʹઃܭ w
ґଘੑͷํ ֎ଆͷϨΠϠʔ͕ଆͷϨΠϠ ʔʹґଘ͢Δ͕ɺٯͳ͍ w ςετ༰қੑ υϝΠϯ͕ଞͷϨΠϠʔ͔Β ಠཱ͍ͯ͠ΔͨΊɺϢχοτςετ͕༰қʹͳ Δ
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 6 ղઆ ΦχΦϯΞʔΩςΫνϟ wυϝΠϯ5PEPΤϯςΟςΟ50%0ͷ੍ ݶϧʔϧ wϢʔεέʔε50%0ϦετͷՃɾআɾҰ ཡऔಘͷϢʔεέʔε w6*ϢʔβʔΠϯλʔϑΣʔε෦
w ͜͜ϓϥοτϑΥʔϜݻ༗ʹͳΔͷͰɺ 6OJUZͱ/&5Ͱݸผʹ࣮ /LifeTodoConsole /Domain - Todo.cs /UseCase - TodoAppService.cs /ConsoleApp - Program.cs /Test - Todo_Test.cs /LifeTodoUnity /Assets/Scripts /UI - TodoAddView.cs
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 7 ղઆ υϝΠϯ wϏδωεϩδοΫΛදݱ wDo() ϝιουͰ ʮҰظݶΕʹͳͬͨ50%0 ྃʹͰ͖ͳ͍ʯ
ͱ͍͏ϧʔϧΛදݱ public class Todo { public TodoId Id { get; init; } public string Text { get; init; } public TodoStatus Status { get; private set; } . . . public void Do() { if (Status = = TodoStatus.Active) { Status = TodoStatus.Done; } } . . . }
public class TodoAppService { . . . public void AddTodo(string?
todoTextNew) { var todoNew = new Todo(todoTextNew!); todos.Add(todoNew); } . . . $PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 8 ղઆ Ϣʔεέʔε wΞϓϦέʔγϣϯͱͯ͠ΓཱͨͤΔ ͨΊʹඞཁͳϢʔεέʔε wAddTodo()ϝιουͰ ʮ༰Λࢦఆͯ͠50%0ΛՃ͢Δʯ ͱ͍͏ϢʔεέʔεΛ࣮ݱ
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 9 ղઆ 6*ίϯιʔϧΞϓϦ w6*ϓϥοτϑΥʔϜ͝ͱʹҟ ͳΔ wίϯιʔϧΞϓϦͰ Program.csʹॻ͘ wίʔϯιʔϧ͔Βจࣈ͕ೖྗ͞Ε
ͨΒɺϢʔεέʔεͷ50%0 ՃΛ࣮ߦ͢Δ class Program { . . . Console.Write("> "); string? todoTextNew = Console.ReadLine(); appService.AddTodo(todoTextNew); . . . }
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 10 ղઆ 6*6OJUZΞϓϦ w6*ϓϥοτϑΥʔϜ͝ͱʹҟ ͳΔ w6OJUZΞϓϦͰෳͷ MonoBehaviourܧঝͨ͠εΫϦ ϓτΛ༻
wbutton͕ԡ͞ΕͨΒɺtitle ͔ΒจࣈΛऔಘͯ͠ɺϢʔεέʔ εͷ50%0ՃΛ࣮ߦ͢Δ public class TodoAddView : MonoBehaviour { [SerializeField] private Button button; [SerializeField] private TMP_Text title; . . . private void Start() { button.onClick.AddListener(OnAdd); } private void OnAdd() { appService.AddTodo(title.text); title.text = string.Empty; } }
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 11 ղઆ コード共通化の 方 法 w ࠓճ/&5ίϯιʔϧΞϓϦʹڞ௨෦ΛؚΊͨ w
֤ͷ%--͕ੜ w %--Λ6OJUZ͔Βࢀর w ผͷखஈ͋Γ w OVHFU৴ w ιϦϡʔγϣϯ͝ͱಉډ w HJUTVCNPEVMF
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 12 ϝϦοτ 6OJUZͷґଘͷݮগ w 6OJUZͷґଘΛݮ w 7JFXҎ֎Ͱ6OJUZʹґଘ͠ͳ͘ͳΔ w
ଞϓϥοτϑΥʔϜͷҠ২͕༰қʹ w ςετ͕؆୯ʹ w EPOFUUFTUͰ୯ମςετ͕Մೳ w ୯ମςετ͕࣌ؒେ෯վળ w 6OJUZ࣮ߦڥ͕ͳͯ͘ಈ࡞֬ೝ͕Մೳ
$PQZSJHIU+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 13 ·ͱΊ オニ オ ンアーキテクチ ャを って
ɺ6OJUZ と /&5 で コ ードを ڞ༗ する 6OJUZ։ൃ でも /&5 を ར༻ す ると ศར です よ w ΦχΦϯΞʔΩςΫνϟΛͬͯ6*෦ΛΓͤΔ w 6*Ҏ֎/&5ͱ6OJUZͰίʔυΛڞ༗Ͱ͖Δ w /&5Ͱ୯ମςετಈ࡞֬ೝ͕Ͱ͖Δͱ։ൃ͕രʹͳΔ