Unity meets Clean Architecture

7b13f432547b92d04c79b749adb535e0?s=47 Tetsuya Mori
December 09, 2017

Unity meets Clean Architecture

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

7b13f432547b92d04c79b749adb535e0?s=128

Tetsuya Mori

December 09, 2017
Tweet

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. IUUQTHJUIVCDPNVNNQSPKFDUTDBGV@DPSF

  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