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
470
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
December 26, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
Swift Concurrency 年表クイズ
omochi
3
230
Amazon Bedrock Knowledge Bases Hands-on
konny0311
0
140
FlutterKaigi 2025 システム裏側
yumnumm
0
960
「10分以内に機能を消せる状態」 の実現のためにやっていること
togishima
1
280
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
10
4.1k
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
150
なぜ強調表示できず ** が表示されるのか — Perlで始まったMarkdownの歴史と日本語文書における課題
kwahiro
11
5.5k
SUZURIの規約違反チェックにおけるクリエイタフィードバックの試⾏錯誤/Trial and Error in Creator Feedback for SUZURI's Terms of Service Violation Checks
ae14watanabe
1
140
r2-image-worker
yusukebe
1
170
ビルドプロセスをデバッグしよう!
yt8492
0
300
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
420
AI駆動開発カンファレンスAutumn2025 _AI駆動開発にはAI駆動品質保証
autifyhq
0
160
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Unsuck your backbone
ammeep
671
58k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Making Projects Easy
brettharned
120
6.4k
Done Done
chrislema
186
16k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Become a Pro
speakerdeck
PRO
29
5.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
4 Signs Your Business is Dying
shpigford
186
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
970
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Ͱ୯ମςετಈ࡞֬ೝ͕Ͱ͖Δͱ։ൃ͕രʹͳΔ