Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
Search
soi013
December 26, 2024
Programming
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
December 26, 2024
Other Decks in Programming
See All in Programming
setup-vp GitLab対応の裏側
naokihaba
0
110
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
630
What We Talk About When We Talk About XP
m_seki
2
660
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
120
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
240
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
380
The Rails Doctrine Decade
koic
2
170
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
190
一人だけ、Kiroが静止する日
hideg
0
120
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
220
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.1k
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
140
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
The Invisible Side of Design
smashingmag
301
52k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
For a Future-Friendly Web
brad_frost
183
10k
Accessibility Awareness
sabderemane
1
210
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
280
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
400
GraphQLとの向き合い方2022年版
quramy
50
15k
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Ͱ୯ମςετಈ࡞֬ೝ͕Ͱ͖Δͱ։ൃ͕രʹͳΔ