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

さては密結合だなオメー Clean Architecture で学ぶ テストフレンドリーな疎結合設計/Loosely Coupled Design Learning with Clean Architecture

さては密結合だなオメー Clean Architecture で学ぶ テストフレンドリーな疎結合設計/Loosely Coupled Design Learning with Clean Architecture

2018/06/06 に開催された「Unity テスト完全に理解した」という勉強会での発表資料です。

7b13f432547b92d04c79b749adb535e0?s=128

Tetsuya Mori

June 06, 2018
Tweet

Transcript

  1. גࣜձࣾΩοζελʔ CTO ৿ɹ఩࠸ ͯ͞͸ີ݁߹ͩͳΦϝʔ Clean Architecture ͰֶͿ ςετϑϨϯυϦʔͳૄ݁߹ઃܭ Unity ςετ׬શʹཧղͨ͠

    @ 2018/06/06
  2. 2 ͜Μ͹Μ͸ʂ

  3. 3 ಥવͰ͕͢ ઃܭਤͷݕূ༻ઃܭਤ ςετɺॻ͍ͯ·͔͢ʁ

  4. 4 ࢲ͸ɺ࠷ۙ·Ͱ ॻ͍͍ͯ·ͤΜͰͨͬ͠ʂ

  5. r΋ΜΓ͌ઌੜ l͋ͳͨͨͪͷதͰςετΛॻ͍͍ͯΔऀ͕ɺ ·ͣɺࢲʹੴΛ౤͛ͳ͍͞ɻz 5

  6. 6 ͋͋ͬʂੴΛ౤͛ͳ͍Ͱʂ ϚαΧϦΛ౤͛ͳ͍Ͱʂʂʢ੾࣮ʣ

  7. ࣗݾ঺հ 7

  8. w৿ɹ఩࠸ʢBLB΋ΜΓ͌ઌੜʣ w೥࡛ۄݝ࢈ wגࣜձࣾΩοζελʔ$50 wࡀϲ݄ͷ່ʹκοίϯ-07& w͓ञͱ߹এͱϓϩάϥϛϯά͕झຯ w5XJUUFS!NPOSZ(JU)VC!NPOSZ 8 Who am I

    ?
  9. w ࢠͲ΋޲͚εϚϗΞϓϦ
 ։ൃͳͲ w ೥͋ͨΓ͔Β
 6OJUZΨοπϦ w ͬ͜͝ϥϯυ
 ྦྷܭສ%- w

    "QQ4UPSF(PPHMF1MBZ
 ʹͯࢠͲ΋޲͚ΧςΰϦ
 ϥϯΩϯά501 9 ͓͠͝ͱ
  10. લஔ͖ 10

  11. 11 ࠓճ͸

  12. 12 ϓϩδΣΫτͷίʔυΛ ςετ͠қ͘͢Δख๏ʹ ͍͓ͭͯ࿩͠͠·͢ɻ

  13. ΞδΣϯμ 13

  14. w6OJUZςετʹ͓͚Δ՝୊ wૄ݁߹ͷجຊతͳߟ͑ํ w$MFBO"SDIJUFDUVSFʹ͍ͭͯ w$"'6ʹ͍ͭͯ 14 ͓͠ͳ͕͖

  15. 15 ຊ୊

  16. w6OJUZςετʹ͓͚Δ՝୊ wૄ݁߹ͷجຊతͳߟ͑ํ w$MFBO"SDIJUFDUVSFʹ͍ͭͯ w$"'6ʹ͍ͭͯ 16 ͓͠ͳ͕͖

  17. Unity ςετʹ͓͚Δ՝୊ 17

  18. w୯ମςετ6OJU5FTU w݁߹ςετ*OUFHSBUJPO5FTU w૯߹ςετ4ZTUFN5FTU 18 ςετ is Կʁ Unity ςετʹ͓͚Δ՝୊

  19. wʮ͍΍ɺγϯϓϧͳΫϥεͳΒ65ॻ͚ΔΜ͢Αʯ wঢ়ଶΛඞཁͱ͢Δςετ͕γϯυΠ w֎෦σʔλʹґଘ͢Δςετ΍ɺ 4DSJQUBCMF0CKFDUͷσʔλʹґଘ͢Δςετ͕
 γϯυΠ w7JFX .POP#FIBWJPVS ʹґଘ͢Δͱ͔ͳΔͱ
 ઈ๬త 19

    Կނɺॻ(͔|͚)ͳ͍ʁ Unity ςετʹ͓͚Δ՝୊
  20. wʮ͍΍ɺ1MBZ.PEFςετ͋Δ΍Μʯ w͍͟΍ͬͯΈΔͱɺ৭ʑͳ՝୊͕
 ݟ͑ͯ͘Δ 20 Կނɺॻ(͔|͚)ͳ͍ʁ Unity ςετʹ͓͚Δ՝୊

  21. w͋ΔΫϥε͸ͭҎ্ͷΫϥεͷ
 ΠϯελϯεΛඞཁͱ͍ͯ͠Δ w৔߹ʹΑͬͯ͸ɺͦΕΒͷ
 Πϯελϯε͸ߋʹผͷΫϥεͷ
 ΠϯελϯεΛඞཁͱ͍ͯ͠Δ
 ͳΜͯ͜ͱ΋ 21 ՝୊ʁ Unity ςετʹ͓͚Δ՝୊

  22. wσʔλͷݩωλʹڌΒͣɺσʔλΛ
 औಘɾઃఆ͢ΔॲཧΛςετ͍ͨ͠ w<0CTPMFUF>3FTPVSDFT-PBE  w6OJUZ8FC3FRVFTU wϩʔΧϧΩϟογϡ wFUD 22 ՝୊ʁ Unity

    ςετʹ͓͚Δ՝୊
  23. w7JFXͷॲཧ͕λοϓೖྗΛલఏʹͯ͠ ͍Δ wଞͷ(BNF0CKFDU͕ॳظԽ͞Ε͍ͯΔ ίτΛલఏʹ͍ͯ͠Δ w4JOHMFUPOͱ͔ͰલͷγʔϯͰઃఆ͞ Εͨ஋Λඞཁͱ͢Δ 23 ՝୊ʁ Unity ςετʹ͓͚Δ՝୊

  24. 24 ͜͏͍͏ঢ়ଶ

  25. 25 is

  26. 26 ີ݁߹

  27. 27 ີ݁߹

  28. 28 ີ݁߹

  29. 29

  30. w4JOHMFUPO.POP#FIBWJPVSűŒŕŰŖ wTUBUJD͓͡͞Μ w ߦΛ௒͑Δ6QEBUF 30 ີ݁߹ Unity ςετʹ͓͚Δ՝୊

  31. wͪΐͬͱؾΛൈ͘ͱ͙͢͜͏ͳΔ w݁߹Λ΄Ͳ͍ͯૄ݁߹ʹ͠Α͏ʂ 31 ີ݁߹ Unity ςετʹ͓͚Δ՝୊

  32. 32 ͦͷลΛ౿·͑ͯ

  33. w6OJUZςετʹ͓͚Δ՝୊ wૄ݁߹ͷجຊతͳߟ͑ํ w$MFBO"SDIJUFDUVSFʹ͍ͭͯ w$"'6ʹ͍ͭͯ 33 ͓͠ͳ͕͖

  34. ૄ݁߹ͷجຊతͳߟ͑ํ 34

  35. 35

  36. 36 Ҏ্ɻ

  37. 37 ………ɻ

  38. 38 ૄ݁߹ͷͨΊͷ
 ςΫχοΫΛʢࡶʹʣ঺հ

  39. w4JOHMF3FTQPOTJCJMJUZ1SJODJQMF w0QFODMPTFEQSJODJQMF w-JTLPWTVCTUJUVUJPOQSJODJQMF w*OUFSGBDFTFHSFHBUJPOQSJODJQMF w%FQFOEFODZJOWFSTJPOQSJODJQMF 39 SOLID ݪଇ ૄ݁߹ͷجຊతͳߟ͑ํ

  40. w୯Ұ੹೚ͷݪଇ w։์ด࠯ͷݪଇ wϦείϑͷஔ׵ݪଇ wΠϯλϑΣʔε෼཭ͷݪଇ wґଘੑٯసͷ๏ଇ 40 SOLID ݪଇ ૄ݁߹ͷجຊతͳߟ͑ํ

  41. 41

  42. w40-*%ݪଇ͕कΒΕ͍ͯΔίʔυ͸
 ͦͷҰͭҰͭʹ͍ͭͯɺؔ৺ͷ෼཭͕
 ߦΘΕ͍ͯΔͱݴ͑Δ w͢ͳΘͪɺݸʑͷίʔυʹ͓͚Δ
 ςετର৅ͷؔ৺ࣄ͕গͳ͍ w͢ͳΘͪɺૄ݁߹ͩͱݴ͑Δ 42 SOLID ݪଇ ૄ݁߹ͷجຊతͳߟ͑ํ

  43. wૄ݁߹ͳγεςϜʹର͢Δςετ͸
 ͭͷςετίʔυ͕ෛ͏੹຿͕ڱ͍ wςετΛ࣮ࢪ͢Δࡍͷ४උॲཧ͕
 গͳ͘ͳΔέʔε͕ଟ͍ 43 ૄ݁߹ × ςετ ૄ݁߹ͷجຊతͳߟ͑ํ

  44. wۃ࿦ͱͯ͠͸ɺ֤ཁૉʹର͢Δ65͕
 ॻ͔Ε͍ͯΕ͹*5͸ͦ͜·Ͱ
 ؤுΒͳͯ͘΋ࡁΉ 44 ૄ݁߹ × ςετ ૄ݁߹ͷجຊతͳߟ͑ํ

  45. 45 ͰʁHow to ૄ݁߹ʁ

  46. w6OJUZςετʹ͓͚Δ՝୊ wૄ݁߹ͷجຊతͳߟ͑ํ w$MFBO"SDIJUFDUVSFʹ͍ͭͯ w$"'6ʹ͍ͭͯ 46 ͓͠ͳ͕͖

  47. Clean Architecture ʹ͍ͭͯ 47

  48. 48 ͷɺલʹ

  49. w͜͜·Ͱ͸୯ҰͷΫϥεʹؔ͢Δ
 ؔ৺ͷ෼཭ʹ͍ͭͯ wҰͭࢹ࠲Λ֦͛ͯϨΠϠʔʹؔ͢Δ
 ؔ৺ͷ෼཭ʹ͍ͭͯߟ͑Δ 49 ؔ৺ͷ෼཭ Clean Architecture ʹ͍ͭͯ

  50. wιϑτ΢ΣΞΞʔΩςΫνϟ ʹԙ͍ͯɺҰൠʹҎԼͷ
 Α͏ʹϨΠϠʔΛ෼͚Δ
 ʢίτ͕ଟ͍ʣ w1SFTFOUBUJPO ݟͨ໨  w%PNBJO ϩδοΫ 

    w%BUB σʔλ 50 ؔ৺ͷ෼཭ for ϨΠϠʔ Presentation Domain Data Clean Architecture ʹ͍ͭͯ
  51. w.7$΍.71ͳͲͷ
 ΞʔΩςΫνϟʹΑΓ
 1SFTFOUBUJPOͱ%PNBJO
 ͷ෼཭͕࣮ݱ͞ΕΔ w֤ΞʔΩςΫνϟͰ
 ෼཭ͷ۩ମతͳखஈ͸
 ༷ʑ w.71΍.77.ͩͱ
 3YΛ࢖͏ͷ͕Ұൠతʁ 51

    ؔ৺ͷ෼཭ for ϨΠϠʔ Presentation Domain Data Clean Architecture ʹ͍ͭͯ
  52. w%PNBJOͱ%BUBͷ෼཭͸
 ֤छσβΠϯύλʔϯ͕
 ୲͏͜ͱ͕ଟ͔ͬͨ wͱ͍͏͔ɺ.7 Ͱ͸
 %PNBJO૚Ҏ߱ʹ͍ͭͯͷ
 ੹຿ΛΞʔΩςΫνϟ
 ͱͯ͠͸ෛ͍ͬͯͳ͍ײ͡ 52 ؔ৺ͷ෼཭

    for ϨΠϠʔ Presentation Domain Data Clean Architecture ʹ͍ͭͯ
  53. wͰɺͦͷล΋ఆٛͨ͠
 ΞʔΩςΫνϟ͕ొ৔͢Δ w)FYBHPOBM"SDIJUFDUVSF w0OJPO"SDIJUFDUVSF w$MFBO"SDIJUFDUVSF 53 ؔ৺ͷ෼཭ for ϨΠϠʔ Presentation

    Domain Data Clean Architecture ʹ͍ͭͯ
  54. 54 Α͏΍͘ຊ୊

  55. w6ODMF#PC 3PCFSU$.BSUJO ࢯ͕ ೥݄ʹఏҊ wJ04ͷ7*1&3ͳΜ͔΋ίϨ͕ݯྲྀ 55 Clean Architecture Clean Architecture

    ʹ͍ͭͯ
  56. 56 Clean Architecture Clean Architecture ʹ͍ͭͯ

  57. 57 ͳΔ΄ͲɺΘ͔ΒΜɻ

  58. 58 ࢲͳΓʹղऍͯ͠Έͨ

  59. wϨΠϠʔͷ໾ׂΛఆٛ͢Δ wϨΠϠͷ੹຿Λ໌֬Խ wOBNFTQBDFͳͲͰ
 ෼͔Γ΍͘͢͢Δ 59 Clean Architecture Clean Architecture ʹ͍ͭͯ

  60. wґଘͷϧʔϧΛकΔ wؔ৺ͷ޲͖͸Ұํ޲ wݪଇతʹಉϨΠϠʔؒ͸
 ґଘͤ͞ͳ͍ wϨΠϠʔΛඈͼӽ͑ͳ͍ 60 Clean Architecture Clean Architecture

    ʹ͍ͭͯ
  61. wϨΠϠʔఆٛ͸ࣗ༝ w਺ͱ͔͸ෆఆ wϓϩμΫτຖʹॊೈʹ w଍Γͳ͖Ό૿΍͢ 61 Clean Architecture Clean Architecture ʹ͍ͭͯ

  62. wϨΠϠʔؒͷؔ৺Λ෼཭ w40-*%ݪଇ wJOUFSGBDFΛ༻͍ͯ
 ۩৅Ϋϥε΁ͷґଘഉআ w%FQFOEFODZ*OKFDUJPOT 62 Clean Architecture Clean Architecture

    ʹ͍ͭͯ
  63. wಉ৺ԁͷਤ͸ؔ৺ͷ޲͖ w಺ଆ͸֎ଆΛ஌Βͳ͍ w(BUFXBZT͸%#͕
 Ͳ͏΍ͬͯσʔλΛ
 ѻ͏͔͸஌Βͳ͍ɺͱ͔ wσʔλͷྲྀΕ͸ผͷ͓࿩ wӈԼͷਤ͕ιϨ 63 Clean Architecture

    Clean Architecture ʹ͍ͭͯ
  64. 64 ΜͰ

  65. 65 ͜ΕΛ Unity ʢ͔ͬͯ C#ʣ
 Ͱ࣮૷ͯ͠Έͨ

  66. w6OJUZςετʹ͓͚Δ՝୊ wૄ݁߹ͷجຊతͳߟ͑ํ w$MFBO"SDIJUFDUVSFʹ͍ͭͯ w$"'6ʹ͍ͭͯ 66 ͓͠ͳ͕͖

  67. CAFU ʹ͍ͭͯ 67

  68. w$MFBO"SDIJUFDUVSF'PS6OJUZͷུ wʮ͔;ʔʯͱಡΉ wώωϦ͕ͳ͍ͱ͔ݴΘͳ͍ɻ w.*5-JDFOTFͳ044 wIUUQTHJUIVCDPNVNNQSPKFDUTDBGV@DPSF 68 CAFU is Կʁ CAFU

    ʹ͍ͭͯ
  69. wجຊతʹ͸JOUFSGBDFͷΈΛఏڙ w6OJUZͱର࿩͢Δ্ͰඞཁʹͳΔ
 ΫϥεΛఏڙ wΩοζελʔͷΞϓϦ։ൃͰ
 ௒ઈ࢖ͬͯΔ 69 CAFU is Կʁ CAFU

    ʹ͍ͭͯ
  70. 70 ϨΠϠʔఆٛ

  71. 71 ϨΠϠʔఆٛ CAFU ʹ͍ͭͯ

  72. 72 ґଘؔ܎ CAFU ʹ͍ͭͯ

  73. w.POP#FIBWJPVSͱର࿩͠
 ݟͨ໨Λ࢘ΔϨΠϠʔ w1SFTFOUFSͷΈґଘՄ 73 Presentation / View CAFU ʹ͍ͭͯ

  74. w7JFXͱ6TF$BTFΛܨ͙ϨΠϠʔ w6TF$BTF͸ޙड़ wঢ়ଶΛ࣋ͨͳ͍ 74 Presentation / Presenter CAFU ʹ͍ͭͯ

  75. wϏδωεϩδοΫͷ࣮૷ͦͷ΋ͷ wܭࢉॲཧͳͲΛ୲͏ wޙड़ͷ.PEFMͱͯ͠දݱ͞ΕΔ
 ঢ়ଶΛอ࣋ͨ͠Γ͢Δ 75 Domain / UseCase CAFU ʹ͍ͭͯ

  76. wओʹ7JFXͰͷར༻Λ໨తͱͨ͠
 σʔλͷߏ଄ w6OJ3YΛ௨ͯ͡7JFXʹૹΒΕΔ w3YετϦʔϜΛؚΊͨঢ়ଶΛ؅ཧ 76 Domain / Model CAFU ʹ͍ͭͯ

  77. wޙड़ͷ&OUJUZͱ.PEFMͱΛ૬ޓม׵ ͢ΔͨΊͷTranslate()ϝιουΛ
 උ͑Δ w֎෦࢓༷ͷมߋΛ6TF$BTF΍7JFX ʹ఻೻ͤ͞ͳ͍ͨΊʹఆٛ 77 Domain / Translator CAFU

    ʹ͍ͭͯ
  78. w%BUBϨΠϠʔͱର࿩͢ΔͨΊͷ
 ϨΠϠʔ wσʔλΛಡΈॻ͖͢ΔͨΊͷ
 ΠϯλϑΣʔεΛ࣋ͭ 78 Domain / Repository CAFU ʹ͍ͭͯ

  79. wσʔλͷߏ଄Λఆٛͨ͠ϨΠϠʔ wσʔλͷ࣮ମ͕ԿͰ͋Εɺ
 ߏ଄දݱͱͯ͠͸ҰͭͷΫϥεͰද͢ w4DSJQUBCMF0CKFDU͕ϝϯυΠʜɻ 79 Data / Entity CAFU ʹ͍ͭͯ

  80. wσʔλͷऔΓѻ͍Λ࣮૷ͨ͠ϨΠϠʔ w4DSJQUBCMF0CKFDUͱ͔ɺ
 8FC"1*ܦ༝ͷ+40/ͱ͔ɺ
 42-JUFܦ༝ͷσʔλͱ͔ɺFUD 80 Data / DataStore CAFU ʹ͍ͭͯ

  81. wFOVNͱ͔DPOTUతͳ஋Λ؅ཧ͢Δ ͨΊͷ"QQMJDBUJPOϨΠϠʔ w%*༻ͷ'BDUPSZΫϥεͱ͔Λ
 ֨ೲ͢Δ6UJMJUZϨΠϠʔ 81 ͦͷଞ CAFU ʹ͍ͭͯ

  82. wམͪϞϊήʔϜΛྫʹղઆ wʙ৭ͷάϛ͕
 ݸηοτͰམԼ wͭἧ͏ͱফ͑Δ wළͷ࠷্ஈ·Ͱୡͨ͠Β
 ήʔϜΦʔόʔ wͦͷ࣌఺ͷείΞΛه࿥ 82 ྫ͑͹ CAFU

    ʹ͍ͭͯ
  83. • Controller w γʔϯ੍ޚ w 1SFTFOUFSॳظԽ • Gummi w ߱ͬͯ͘Δάϛ


    •Floor wϘτϧͷচ •Ceil wϘτϧͷఱҪ •Wall wϘτϧͷน 83 Presentation / View CAFU ʹ͍ͭͯ
  84. w Gummiʹ.PDLΠϕϯτ͕ඈΜͰ͖ͨΒ
 .PDL1SFTFOUFSͷϝιου͕ݺ͹ΕΔ͔ʁςετ w .PDL1SFTFOUFSͷ3YετϦʔϜʹ
 ஋͕ྲྀΕ͖ͯͨΒWall͕ΤϑΣΫτΛ
 *OTUBOUJBUF͢Δ͔ʁςετ 84 Presentation /

    View CAFU ʹ͍ͭͯ
  85. •StagePresenter wγʔϯैଐ1SFTFOUFS 85 Presentation / Presenter CAFU ʹ͍ͭͯ

  86. 86 Presentation / Presenter CAFU ʹ͍ͭͯ w StagePresenterͷ֤ϝιουΛςετ w 6TF$BTFͷΠϯελϯε͸શͯ.PDL

    w 1SFTFOUFSϨΠϠʔ͸ςετॻ͘Ձ஋௿Ί
  87. •GummiStateUseCase wεςʔδதͷάϛͷঢ়ଶ Λ؅ཧɾܭࢉ wάϛண஍ˠ࠶ܭࢉͱ͔ wͪ͗Ε൑ఆͱ͔ •ScoreUseCase wಘ఺Λ؅ཧɾܭࢉ •StageUseCase wεςʔδͷߏ੒Λ؅ཧ wԿ৭ͷάϛΛग़͢ʁ

    wམԼεϐʔυ͸ʁ 87 Domain / UseCase CAFU ʹ͍ͭͯ
  88. 88 Domain / UseCase CAFU ʹ͍ͭͯ w ֤6TF$BTFͷQVCMJDϝιουΛςετ w ೖྗ΍ग़ྗ͸1SJNJUJWFͳ஋΍JOUFSGBDFΛ


    ௨ͯ͡ߦΘΕΔϋζ w ScoreUseCaseͷ&OUJUZ΍.PEFM͸.PDL͢Δ
  89. •GummiModel wάϛҰͭ෼Λදݱ w৭ͱ͔4UBUFͱ͔ •GummiMapModel wεςʔδ಺ͷશάϛ৘ใ
 •ForecastGummiModel w༧ࠂάϛͷঢ়ଶ •ScoreModel wݱࡏͷಘ఺ •PointModel

    wάϛফڈʹΑΔ֫ಘಘ఺ 89 Domain / Model CAFU ʹ͍ͭͯ
  90. 90 Domain / Model CAFU ʹ͍ͭͯ w ͪΐͬͱͨ͠஋ͷՃ޻ॲཧͳͲΛߦ͍ͬͯΔ
 ৔߹͸ςετॻ͘ w

    جຊతʹ͸ςετॻ͔ͳͯ͘Ϥαι΢
  91. •GummiTranslator w4UBHF-FWFM&OUJUZͱ
 Ґஔ͔Β4DPSF.PEFM Λੜ੒ •ScoreEntityTranslator w4DPSF.PEFMΛ 4DPSF&OUJUZʹม׵ 91 Domain /

    Translator CAFU ʹ͍ͭͯ
  92. 92 Domain / Translator CAFU ʹ͍ͭͯ w GummiModelTranslator͸IStageLevelEntityΛ
 .PDLͯ͠Translate()Λςετ w

    ScoreEntityTranslator͸IScoreModelΛ
 .PDLͯ͠Translate()Λςετ
  93. •ScoreRepository wείΞΛಡΈॻ͖ •StageLevelRepository wεςʔδͷάϛ৭ߏ੒
 ͳͲͷϚελΛऔಘ 93 Domain / Repository CAFU

    ʹ͍ͭͯ
  94. 94 Domain / Repository CAFU ʹ͍ͭͯ w ScoreRepository͸IScoreModelͷ.PDLͰςετ w StageLevelRepository͸IStageLevelEntity


    Ͱςετ
  95. •ScoreEntity wεςʔδ෼ͷείΞ •ScoreMapEntity wશεςʔδ෼ͷείΞ
 •GummiPointMapEntity w࿈࠯ຖͷ֫ಘ఺਺Ϛελ •StageLevelEntity wεςʔδ೉қ౓ఆٛ •StageLevelMapEntity wશεςʔδ෼ͷ೉қ౓

    95 Data / Entity CAFU ʹ͍ͭͯ
  96. 96 Data / Entity CAFU ʹ͍ͭͯ w .PEFMಉ༷ɺಛघͳϝιουΛੜ΍͍ͯ͠ͳ͍
 ݶΓςετ͸ෆཁ

  97. •ScriptableObjectDataStore wγʔϯதͷ೚ҙͷ
 ίϯϙʔωϯτ͔Β
 ࢀর͞ΕΔ 4DSJQUBCMF0CKFDU͔Β
 &OUJUZΛऔಘ
 •LocalStorageDataStore wϩʔΧϧετϨʔδʹ
 +40/ͱ͔Ͱ&OUJUZΛ
 อଘͨ͠ΓಡΜͩΓ

    97 Data / DataStore CAFU ʹ͍ͭͯ
  98. 98 Data / DataStore CAFU ʹ͍ͭͯ w ScriptableObjectDataStore͸'JYUVSFγʔϯ
 ͔ΒͷΠϯελϯεऔಘΛςετ w

    LocalStorageDataStore͸೚ҙͷ&OUJUZΛ
 ૬ޓʹಡΈॻ͖ग़དྷΔ͔Λςετ
  99. 99 σʔλͷྲྀΕ

  100. wϘλϯ͕ΫϦοΫ͞ΕͯԿ͔ॲཧ͢Δ 100 σʔλͷྲྀΕ CAFU ʹ͍ͭͯ

  101. wԿΒ͔ͷτϦΨʔͰঢ়ଶ͕มԽ 101 σʔλͷྲྀΕ CAFU ʹ͍ͭͯ

  102. wλΠϚʔతͳ࣮૷ 102 σʔλͷྲྀΕ CAFU ʹ͍ͭͯ

  103. wόφʔը૾Λαʔό͔Βऔಘ 103 σʔλͷྲྀΕ CAFU ʹ͍ͭͯ

  104. wόφʔը૾Λ୺຤ʹΩϟογϡ 104 σʔλͷྲྀΕ CAFU ʹ͍ͭͯ

  105. wϚελσʔλΛ4DSJQUBCMF0CKFDU͔Βऔಘ 105 σʔλͷྲྀΕ CAFU ʹ͍ͭͯ

  106. wϚελσʔλΛ4DSJQUBCMF0CKFDU͔Βऔಘ
 ʢϥΠτ൛ʣ 106 σʔλͷྲྀΕ CAFU ʹ͍ͭͯ

  107. ·ͱΊ 107

  108. wૄ݁߹ͳΞϓϦέʔγϣϯΛ
 ߏங͢Δͱςετ͕͠΍͘͢ͳΔ w$MFBO"SDIJUFDUVSF͕Φεεϝ w$"'6࢖ͬͯΈͯͶʂελʔ΋śūŢŒţ 108 ·ͱΊ

  109. 109 Thank you for your attention!!