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

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

soi013
December 26, 2024

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

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Ͱ୯ମςετ΍ಈ࡞֬ೝ͕Ͱ͖Δͱ։ൃ͕ര଎ʹͳΔ