Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
Search
soi013
December 26, 2024
Programming
0
480
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
December 26, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
AIコーディングエージェント(Gemini)
kondai24
0
150
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
470
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
5
270
Google Antigravity and Vibe Coding: Agentic Development Guide
mickey_kubo
2
130
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.3k
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
24
21k
関数実行の裏側では何が起きているのか?
minop1205
1
580
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
580
AIコーディングエージェント(NotebookLM)
kondai24
0
130
UIデザインに役立つ 2025年の最新CSS / The Latest CSS for UI Design 2025
clockmaker
17
6.6k
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
190
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
110
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
960
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Raft: Consensus for Rubyists
vanstee
140
7.2k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
380
We Have a Design System, Now What?
morganepeng
54
7.9k
Side Projects
sachag
455
43k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Automating Front-end Workflow
addyosmani
1371
200k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
80
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
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Ͱ୯ମςετಈ࡞֬ೝ͕Ͱ͖Δͱ։ൃ͕രʹͳΔ