Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for soi013 soi013
December 26, 2024

オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する

Avatar for soi013

soi013

December 26, 2024
Tweet

Other Decks in Programming

Transcript

  1. $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 どっちも $ で ॻ く
  2. $PQZSJHIU˜+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 3 ΞϓϦ ͜ΜͳΞϓϦΛ࡞Γ·ͨ͠ 6OJUZ と /&5 コンソールアプリの ྆ํ

    の プラ ッ トフ ォ ームで 50%0 ア プ リを ࡞੒ Unity アプリ コンソール アプリ
  3. $PQZSJHIU˜+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 4 ΞϓϦ ϢʔβʔΛ؁΍͔͞ͳ͍ݫ͠໨ͷ50%0ΞϓϦ (ア ドベ ントカレン ダーの క

    め ੾ り ؒ に ߹ わなくて ਃ し ༁ あり ませ ん ɻ ) wඞͣҰఆ࣌ؒͰظݶ੾Εʹ͢Δ wҰ౓ظݶ੾ΕʹͳͬͨΒɺ׬ྃʹ͸Ͱ͖ͳ͍ wˠ50%0ܾΊͨΒɺ͙͢΍Εʂ+645%0*5ʂ
  4. $PQZSJHIU˜+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 5 ղઆ ΦχΦϯΞʔΩςΫνϟ w υϝΠϯத৺ઃܭ ΞϓϦέʔγϣϯͷϏδω εϧʔϧΛத৺ʹઃܭ w

    ґଘੑͷํ޲ ֎ଆͷϨΠϠʔ͕಺ଆͷϨΠϠ ʔʹґଘ͢Δ͕ɺٯ͸ͳ͍ w ςετ༰қੑ υϝΠϯ૚͕ଞͷϨΠϠʔ͔Β ಠཱ͍ͯ͠ΔͨΊɺϢχοτςετ͕༰қʹͳ Δ
  5. $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
  6. $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; } } . . . }
  7. 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Λ௥Ճ͢Δʯ ͱ͍͏ϢʔεέʔεΛ࣮ݱ
  8. $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); . . . }
  9. $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; } }
  10. $PQZSJHIU˜+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 11 ղઆ コード共通化の 方 法 w ࠓճ͸/&5ίϯιʔϧΞϓϦʹڞ௨෦෼ΛؚΊͨ w

    ֤૚ͷ%--͕ੜ੒ w %--Λ6OJUZ͔Βࢀর w ผͷखஈ΋͋Γ w OVHFU഑৴ w ιϦϡʔγϣϯ͝ͱಉډ w HJUTVCNPEVMF
  11. $PQZSJHIU˜+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 12 ϝϦοτ 6OJUZ΁ͷґଘͷݮগ w 6OJUZ΁ͷґଘΛ࡟ݮ w 7JFX૚Ҏ֎Ͱ6OJUZʹґଘ͠ͳ͘ͳΔ w

    ଞϓϥοτϑΥʔϜ΁ͷҠ২͕༰қʹ w ςετ͕؆୯ʹ w EPOFUUFTUͰ୯ମςετ͕Մೳ w ୯ମςετ͕࣌ؒେ෯վળ w 6OJUZ࣮ߦ؀ڥ͕ͳͯ͘΋ಈ࡞֬ೝ͕Մೳ
  12. $PQZSJHIU˜+0--:(00%*OD"MM3JHIUT3FTFSWFE $0/'*%&/5*"- 13 ·ͱΊ オニ オ ンアーキテクチ ャを ࢖ って

    ɺ6OJUZ と /&5 で コ ードを ڞ༗ する 6OJUZ։ൃ でも /&5 を ར༻ す ると ศར です よ w ΦχΦϯΞʔΩςΫνϟΛ࢖ͬͯ6*෦෼Λ੾Γ཭ͤΔ w 6*Ҏ֎͸/&5ͱ6OJUZͰίʔυΛڞ༗Ͱ͖Δ w /&5Ͱ୯ମςετ΍ಈ࡞֬ೝ͕Ͱ͖Δͱ։ൃ͕ര଎ʹͳΔ