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

Unity meets Clean Architecture

Unity meets Clean Architecture

【年末だよ】Unity お・と・な のLT大会 2017【ポロりしてもいいのよ】での発表資料です。

Tetsuya Mori
PRO

December 09, 2017
Tweet

More Decks by Tetsuya Mori

Other Decks in Programming

Transcript

  1. 6OJUZNFFUT $MFBO"SDIJUFDUVSF 6OJUZ͓ɾͱɾͳͷ-5େձ גࣜձࣾΩοζελʔ $505FDI-FBEɹ৿ɹ఩࠸

  2. סഋʂ

  3. ࣗݾ঺հ

  4. 8IPBNɹ w /JDLOBNFNPOSZ w /BNF৿ɹ఩࠸ w 8PSL,JET4UBS*OD w 5XJUUFS!NPOSZ w

    'BDFCPPLNPOSZ w (JU)VCNPOSZ w +PC6OJUZશൠɺϏϧυ͓͡͞Μ
  5. ಥવͰ͕͢

  6. 6OJUZ։ൃ͋Δ͋Δ

  7. 6OJUZ։ൃ͋Δ͋Δ w ʮ͜ͷॲཧɺͲ͜ʹॻ͚͹ྑ͍ͷʜʁʯ w αϯϓϧίʔυ͸ωοτʹ͍ͬͺ͍͋Δ͚Ͳɺ
 ॻ͖ํ͕όϥόϥ w ͳΜͳΒ6OJUZެࣜͷϚχϡΞϧͱ͔΋Ұ؏ੑ͕ແ͍

  8. 6OJUZ։ൃ͋Δ͋Δ w ʮ͜͜ʹ࢓༷௥Ճ͍ͨ͠Μ͚ͩͲʜɻʯ w ӨڹൣғɺΊͬͪΌ޿͍ʜɻ w ίονΛ௚͢ͱΞονʹӨڹͪ͠Όͬͯʜɻ w Θʔ͍ɺ

  9. 6OJUZ։ൃ͋Δ͋Δ w ʮίʔυϨϏϡʔśūŢŒţʯ w ϨϏϡϫʔʮԿॲʹԿ͕ॻ͔ΕͯΔ͔෼͔ΒΜʜɻʯ w ϨϏϡΠʔʮΫϥεͷ੹೚ൣғͱ͔ݴΘΕͯ΋ʜɻʯ

  10. 8IZ

  11. ͦΕ͸ภʹ ͻͱ͑

  12. ઃܭෆ଍ʂ

  13. ઃܭͷॏཁੑ͸ UP3JTPV1͞ΜͷొஃࢿྉΛ ಡ΋͏ʂ

  14. ࠓ೔͸ɺͦΜͳʮઃܭͷॏཁੑ͕
 ཧղग़དྷͨʯوํʹૹΔ಺༰Ͱ͢

  15. Ҏ্ɺ௕͍લஔ͖ɻ

  16. ຊ୊

  17. ͷɺલʹ

  18. ʢΦϨ͕ࢥ͏ʣ
 6OJUZͷֶशϓϩηε

  19. 6OJUZֶशϓϩηε w 77JFX w 7JFX.POP#FIBWJPVSͷ
 4UBSU ΍Β6QEBUF ΍ΒʹΰϦοΰϦʹॻ͘ w 7JFXͱ7JFXͱͷ݁߹͕ڧ͘ͳΓ͕ͪ

    w ʮந৅ԽʁͳʹͦΕ͓͍͍͠ͷʁʯঢ়ଶͳͷͰ
 %3:ݪଇͱ͔ɺͲ͜ਧ͘෩ঢ়ଶ w ஋อ࣋༻ͷ4JOHMFUPO.POP#FIBWJPVS͘Μొ৔
  20. 6OJUZֶशϓϩηε w 7$7JFX$POUSPMMFS w 7JFX͚ͩͩͱγϯυ͘ͳ͖ͬͯͯɺ
 .BOBHFS͕ྔ࢈͞ΕΔ w (BNF.BOBHFSͱ͔͍͏ڊେͳΫϥε͕ग़དྷ্͕Δ w $POUSPMMFSͱ7JFXͱͷ݁߹ڧ౓͕ڧ͍

    w ςετͱ͔ॻ͚ͨ΋Μ͡Όͳ͍
  21. 6OJUZֶशϓϩηε w .7$.PEFM7JFX$POUSPMMFS w .PEFMͱͯ͠஋Λ࣋ͭΫϥε͕ొ৔͢Δ w ͜ͷล͔ΒΑ͋͘ΔϓϩδΣΫτʹͳΔ w 7JFXͱ.PEFM͕૬ޓʹࢀরΛ࣋ͪෳࡶԽ͢Δ w

    7JFX΍.PEFMͷมߋʹऑ͍ʢ࢓༷มߋʹऑ͍ʣ
  22. 6OJUZֶशϓϩηε w .77. 1 .PEFM7JFX7JFX.PEFM 1SFTFOUFS  w 6OJ3YʢͳͲʣΛ࢖͍ɺ.7$ͷ֤ϨΠϠΛ෼཭ w

    ϨΠϠؒͰͷґଘΛݮΒ͢ w ΄΅͜Ε͕౴͑ͳײ͡͸͢Δʂ w Ͱ΋ɺϧʔϧ͕ᐆດͰϨʔϧ͕ෑ͔Ε͍ͯͳ͍ײ͡
  23. ͯ͜ͱͰɺ·ͩ՝୊͕͋Δ

  24. ͦ͜Ͱ

  25. $MFBO"SDIJUFDUVSF

  26. $MFBO"SDIJUFDUVSF w JTԿʁ w ݩʑ͸೥ʹ6ODMF#PCʹΑΓఏএ͞Εͨ
 ΞʔΩςΫνϟ w J04ք۾ͰΑ͘࢖ΘΕ͍ͯΔͱ͔͍ͳ͍ͱ͔

  27. $MFBO"SDIJUFDUVSF w ͜Μͳਤͱ͔ ग़య5IF$MFBO"SDIJUFDUVSF

  28. $MFBO"SDIJUFDUVSF w ͜Μͳਤͱ͔ ग़య·ͩ.7$ .71 .77.Ͱফ໣ͯ͠ΔͷʁJ04$MFBO"SDIJUFDUVSFʹ͍ͭͯ

  29. $MFBO"SDIJUFDUVSF w Ͱද͞ΕΔ֓೦ w ͋͘·ͰʮΞʔΩςΫνϟʯͰ͋Γ
 ʮϑϨʔϜϫʔΫʯͰ͸ͳ͍ w ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάʹԙ͚Δ
 ʮීวతͳߟ͑ํʯʹͳΔͷͰɺݴޠΛ໰Θͣ࢖͑Δ

  30. $MFBO"SDIJUFDUVSF w ϝϦοτ w άάΕ w εΫϦϓςΟϯάͷํ޲ੑͱͯ͠ҰͭͷಓےͱͳΔ w 1MBZ.PEF&EJU.PEF໰Θͣɺςετ͕ॻ͖΍͍͢ w

    େن໛ϓϩμΫτ΍த௕ظతʹϝϯςφϯε͢Δϓϩ μΫτʹ࠷ద
  31. $MFBO"SDIJUFDUVSF w σϝϦοτ w άάΕ w ίʔυͷϑΝΠϧ਺͕ΊͬͪΌ૿͑Δ w ֶशίετ͕ͪΐͬͱߴ͍ w

    ϓϩτλΠϓ΍খن໛ϓϩμΫτʹ͸޲͔ͳ͍
  32. 6OJUZͰ΍ͬͯΈͨ

  33. 6OJUZͰ΍ͬͯΈͨ w 1SFTFOUBUJPO-BZFS w 7JFX w ͦͷ··.POP#FIBWJPVS w ࣗ਎ͷඳըͱࢠཁૉͷੜ੒Λ࢘Δ w

    ΠϕϯτϋϯυϦϯά΋ίΠπͷ࢓ࣄ w 7JFX$POUSPMMFSతͳΫϥεΛ༻ҙ͢ΔͱϤαι΢
  34. 6OJUZͰ΍ͬͯΈͨ w 1SFTFOUBUJPO-BZFS w 1SFTFOUFS w 7JFXͱ6TF$BTFΛܨ͙ w 6OJ3Yଟ༻͢Δ w

    ίίʹϩδοΫ͸ॻ͔ͳ͍
  35. 6OJUZͰ΍ͬͯΈͨ w %PNBJO-BZFS w 6TF$BTF w ϏδωεϩδοΫ w 7JFXʹ΋%BUBʹ΋ґଘ͠ͳ͍Α͏ʹॻ͘ w

    ʮυϝΠϯʯʹରͯ͠Ϋϥε࡞Δ
  36. 6OJUZͰ΍ͬͯΈͨ w %PNBJO-BZFS w .PEFM w ʮදࣔ༻ͷ஋ʯΛ؅ཧ͢Δ w දࣔ࣌ͷ࠲ඪͱ͔ͷఆ਺Λ࣋ͬͯ΋Ϥαι΢

  37. 6OJUZͰ΍ͬͯΈͨ w %PNBJO-BZFS w 5SBOTMBUPS w &OUJUZʢޙड़ʣͱ.PEFMΛ૬ޓʹม׵͢Δ w ಉظɾඇಉظΛߟྀ͢ΔͱϤαι΢

  38. 6OJUZͰ΍ͬͯΈͨ w %PNBJO-BZFS w 3FQPTJUPSZ w %BUB4UPSFʢޙड़ʣͱ6TF$BTFͱͷ૭ޱ w 6TF$BTF͸ίΠπͱର࿩ͯ͠σʔλΛ΍ΓͱΓ͢Δ w

    ݫີʹ͸%PNBJO-BZFSͰ͸ͳ͘
 %PNBJOͱ%BUBͷதؒʹҐஔ͢Δ֓೦
  39. 6OJUZͰ΍ͬͯΈͨ w %BUB-BZFS w &OUJUZ w ʮ֎෦ͷ஋ʯΛ؅ཧ͢Δ w 8FC"1*ͱ͔4DSJQUBCMF0CKFDUͱ͔
 1MBZFS1SFGTͱ͔ͷιʔείʔυͷ֎ͷ஋Λදݱ

    w σʔλͷग़ࣗΛ໰ΘͣΫϥε͸σʔλʹ͖ͭͭ
  40. 6OJUZͰ΍ͬͯΈͨ w %BUB-BZFS w %BUB4UPSF w &OUJUZͷೖग़ྗΛऔΓѻ͏ w &OUJUZͷσʔλͷग़ࣗʹΑͬͯಡΈॻ͖ͷ
 ॲཧΛ࣮૷͢Δ

    w ಡΈॻ͖ͷ࣮ॲཧ͸ڞ௨ԽͰ͖Δ͕ɺ
 ΠϯλϑΣʔε͸ݸผʹ࣮૷͢Δίτ͕๬·͍͠
  41. ͳΜͷͬͪ͜ΌͰ͢Ͷɻ

  42. ͬͯ͜ͱͰɺॻ͖·ͨ͠

  43. $"'6 $MFBO"SDIJUFDUVSFGPS6OJUZ

  44. IUUQTHJUIVCDPNVNNQSPKFDUT[email protected]

  45. $"'6 w Α͋͘ΔʮΦϨΦϨϑϨʔϜϫʔΫʯͰ͸ͳ͘ɺ͋͘·Ͱ ʮΞʔΩςΫνϟʯͱͯ͠ͷ࣮૷ w ຆͲϝιου͸ੜ͓͑ͯΒͣɺز͔ͭͷJOUFSGBDFͰߏ੒ w 6OJUZͱͷ݁߹͕ڧ͘ͳΔՕॴʹ͸جఈΫϥεͱ͔Λ࣮૷ w .POP#FIBWJPVSͱ͔4DSJQUBCMF0CKFDUͱ͔

  46. $"'6 w .PEFM΍6TF$BTFͷઃܭΛͤͣʹॻ͖࢝ΊΔͱ
 ௧͍໨ΛݟΔͷͰɺΫϥεਤΛॻ͘͜ͱΛΦεεϝ͠·͢ w ·ͩ·ͩ։ൃதͳͷͰɺ౰໘҆ఆ͠ͳ͍͔΋ʜ w Ωοζελʔͷ։ൃݱ৔Ͱ࣮ࡍʹࢼݧಋೖத w ϝδϟʔόʔδϣϯΛʹԼ͛Α͏͔ࢥҊத

    w ը໘ભҠʹؔ͢Δॲཧ͸ڞ௨Խͯ͠ผϦϙδτϦͰ؅ཧ
  47. ڵຯ͋Δਓ͸ੋඇ
 1VMM3FRVFTU౤͍͛ͯͩ͘͞

  48. ॴײ

  49. ॴײ w Ϋϥεઃܭ΍ίʔσΟϯάͷ࣌ͷʮ໎͍ʯ͕ͳ͘ͳΔ w ׳Εͯ͘Ε͹ɻ w ΍ͬͺΓֶशίετ͕ͦΕͳΓʹߴ͍ w ΄ͲΑ͍റΓ͕͋Δ͓ӄͰϨʔϧʹͳͬͯ͘Ε͍ͯΔ w

    ઃܭϨϏϡʔ΍ίʔυϨϏϡʔ͠΍͍͢ w 1MBZ.PEF&EJU.PEF໰Θͣςετίʔυॻ͖΍͍͢
  50. ॴײ w ෳ਺ਓͰҰͭͷϓϩμΫτΛ։ൃ͢Δࡍʹɺ଍ฒΈΛἧ͑ ΒΕΔͱ͍͏େ͖ͳϝϦοτΛڗडͰ͖͍ͯΔ w ͱ͸͍͑ɺΤϯδχΞʹରͯ͠ٻΊΒΕΔϋʔυϧ্͕͕ Δͷ΋·ͨࣄ࣮ w 6OJUZͦͷ΋ͷͷ"1*ʹറΒΕͳ͍ͷͰɺͭͿ͕͠ޮ͘

  51. ༻๏༻ྔΛकͬͯ
 ਖ਼͘͠͝ར༻͍ͩ͘͞

  52. ࠂ஌

  53. ΋ΜΓ͌ઌੜ w 4DIPPͰ6OJUZͷतۀΛ࣋ͭίτʹͳΓ·ͨ͠ʂ w IUUQTTDIPPKQDMBTT w  5VF d w

    ੜ์ૹ͸ແྉͳͷͰɺੋඇͱ΋͝ཡ͍ͩ͘͞·ͤʂ
  54. ࠂ஌

  55. 1BUDI3FMFBTF/PUFT຋༁ w 1BUDI3FMFBTFͷ3FMFBTF/PUFTΛ຋༁͢Δ
 ݸਓϓϩδΣΫτ΍ͬͯ·͢ɻ w IUUQVOJUZSFMFBTFOPUFTIBUFOBCMPHDPN w γΣΞͱ͔ελʔͱ͔෇͚ͯ͘ΕΔͱɺ΋ΜΓ͌ͷ
 Ϟνϕʔγϣϯ͕͕͋Γ·͆͢

  56. ࠂ஌

  57. 8FBSFIJSJOH גࣜձࣾΩοζελʔͰ͸ ʮࢠͲ΋ͷເதΛҭͯΔʯ ϓϩμΫτͷ։ൃΛࢧ͑Δ σϕϩούʔΛืूதͰ͢ʂ

  58. 5IBOLZPVGPS ZPVSBUUFOUJPO