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

オブジェクト指向設計実践ガイドこれだけは実践しとこうガイド

taiki-t
July 14, 2018

 オブジェクト指向設計実践ガイドこれだけは実践しとこうガイド

発表資料 @ Rails Developers Meetup 2018 Day 3 Extreme

https://techplay.jp/event/679666

ご意見、ご感想、議論は https://twitter.com/taiki__t までお願いします!

taiki-t

July 14, 2018
Tweet

More Decks by taiki-t

Other Decks in Programming

Transcript

  1. ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυ

    ͜Ε͚ͩ͸࣮ફ͠ͱ͜͏ΨΠυ
    by @taiki_ _t 

    ԙ: Rails Developers Meetup 2018-7-14

    View Slide

  2. ͰɺͩΕʁ

    View Slide


  3. ଞ໊

    View Slide

  4. ༁ऀͰ͢
    [email protected]@U
    Α͔ͬͨΒ

    ώϣϩʔ͓ͳ͠Ό͢ʂ
    ੢೔฻ཬSC 

    (SBQI2-5PLZP

    ओ࠵

    View Slide

  5. ࠷ۙͷ׆ಈ
    ΞϓϦ࡞ͬͯ·͢
    3FBDU/BUJWF

    3BJMT

    (SBQI2-

    View Slide

  6. ϩʔΧϧ൪૊ɾ$.ͷΑ͏ͳ
    ৘ใڞ༗खஈΛશһͷखʹɻ
    ୭΋͕ۙ͘ͷਓʹ৘ใΛ఻͑ΒΕΔɺ୭΋͕ۙ͘ͷ৘ใΛಘΒΕΔɻ
    ͜Ε·Ͱࢿຊ͕ͳ͚Ε͹Ͱ͖ͳ͔ͬͨ৘ใ֦ࢄखஈΛશһͷखʹղ์ɻ
    $PODFQU
    ΞϓϦ঺հ

    View Slide

  7. ौ୩۠ஸ໨LNݍ಺
    ✅౤ߘʹ͸Ґஔ৘ใ͕ࣗಈͰͭ͘
    ✅Ӿཡ͢Δਓ͸ډ৔ॴºൣғͰ౤ߘΛߜΕΔ
    ౤ߘ͢Δ͚ͩͰۙ͘ͷਓʹڭ͑ΒΕΔ

    ։͚ͩ͘Ͱͦͷ৔ͷ৘ใ͕ΈΕΔ
    1SPEVDU
    ✅ࣸਅΛࡱͬͯ౤ߘ
    ΞϓϦ঺հ

    View Slide

  8. ·͋৭ʑ
    ೉͍͠

    View Slide

  9. ײ૝ͩ͋͘͠ʢJ04ʣ

    View Slide

  10. ࣮ફͱ͸

    View Slide

  11. ࠷খݶͷίετͰ
    ࠷େݶมߋʹڧ͍ίʔυΛॻ͘
    ݶΒΕͨ࣌ؒͱ

    Ϧιʔεͷத
    લఏ
    ໨ඪ

    View Slide

  12. lࠓ೔ʹͰ΋ձ͕ࣾ౗࢈ͯ͠͠·͏ͱ͍͏ঢ়گͰ͋Ε
    ͹ɺཌ೔ʹɺͦͷίʔυʹͲΕ͚ͩͷίετ͕͔͔
    Δ͔Λؾʹ͍ͯ͠Δ৔߹Ͱ͸͋Γ·ͤΜɻ༩͑ΒΕ
    ͨ࣌ؒͰ࠷ળΛਚ͔͘͢͠ͳ͍ͷͰ͢ɻz
    ൈਮ

    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʙ3VCZͰΘ͔ΔਐԽ͚ͭͮ͠ΔॊೈͳΞϓϦέʔγϣϯͷҭͯํ

    4BOEJ.FU[ɺ∁ࢁହج

    View Slide

  13. lઃܭʹ൒݄͔͔ΓɺརӹΛੜΈग़͢Α͏ʹͳΔ·Ͱ
    ʹ೥͔͔ΔΑ͏Ͱ͋Ε͹ɺ͓ͦΒͦ͘ͷઃܭʹ͸ݟ
    ߹͏΄ͲͷՁ஋͸͋Γ·ͤΜɻz
    ൈਮ

    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʙ3VCZͰΘ͔ΔਐԽ͚ͭͮ͠ΔॊೈͳΞϓϦέʔγϣϯͷҭͯํ

    4BOEJ.FU[ɺ∁ࢁହج

    View Slide

  14. ݱ࣮

    View Slide

  15. ✔ݶΒΕͨ࣌ؒ
    ✔ݶΒΕͨϦιʔε
    ✔มԽ͢Δཁٻ
    ✔༧ଌͰ͖ͳ͍ະདྷ

    View Slide

  16. ͷதͰ

    View Slide

  17. lݱ࣌఺ɺͦͯ͠ະདྷʹ͓͍ͯ΋ɺҰ؏ͯ͠අ༻ରޮՌ
    ͷ༏Εͨߏ੒Λߟ͑Δඞཁ͕͋Γ·͢ɻz
    ൈਮ

    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʙ3VCZͰΘ͔ΔਐԽ͚ͭͮ͠ΔॊೈͳΞϓϦέʔγϣϯͷҭͯํ

    4BOEJ.FU[ɺ∁ࢁହج

    View Slide

  18. ੜ͖ൈ͘ʜ

    View Slide

  19. ઃܭ

    View Slide

  20. l࣮༻తͳઃܭͱ͸ɺະདྷΛਪଌ͢Δ΋ͷͰ͸ͳ͘ɺ
    ະདྷΛड͚ೖΕΔͨΊͷબ୒ࢶΛอޢ͢Δ΋ͷͳͷ
    Ͱ͢ɻz
    ൈਮ

    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʙ3VCZͰΘ͔ΔਐԽ͚ͭͮ͠ΔॊೈͳΞϓϦέʔγϣϯͷҭͯํ

    4BOEJ.FU[ɺ∁ࢁହج

    View Slide

  21. ࠷খݶͷ
    ίετͰ
    ࠷େݶม
    ߋʹڧ͍

    View Slide

  22. ͦ͜Ͱ

    View Slide

  23. 536&ݪଇ
    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυ

    ͜Ε͚ͩ͸࣮ફ͠ͱ͜͏ΨΠυᶃ

    View Slide

  24. ݟ௨͕͠ྑ͍ʢ5SBOTQBSFOUʣɿ
    มߋ͢Δίʔυʹ͓͍ͯ΋ɺͦͷίʔυʹґଘ͢Δ
    ผͷ৔ॴͷίʔυʹ͓͍ͯ΋ɺมߋ͕΋ͨΒ͢Өڹ
    ͕໌നͰ͋Δ
    ར༻ੑ͕ߴ͍ʢ6TBCMFʣɿ
    ͲΜͳมߋͰ͋ͬͯ΋ɺ͔͔Δίετ͸มߋ͕΋ͨ
    Β͢རӹʹ;͞Θ͍͠
    ߹ཧతʢ3FBTPOBCMFʣɿ
    ৽͍͠؀ڥɺ༧ظ͍ͯ͠ͳ͔ͬͨ؀ڥͰ΋࠶ར༻Ͱ
    ͖Δ
    ໛ൣతʢ&YFNQMBSZʣɿ
    ίʔυʹมߋΛՃ͑Δਓ͕ɺ্هͷ඼࣭Λࣗવͱอ
    ͭΑ͏ͳίʔυʹͳ͍ͬͯΔ
    ൈਮ

    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʙ3VCZͰΘ͔ΔਐԽ͚ͭͮ͠ΔॊೈͳΞϓϦέʔγϣϯͷҭͯํ

    4BOEJ.FU[ɺ∁ࢁହج

    View Slide

  25. ݟ௨͕͠ྑ͘ɺ߹ཧతͰɺར༻ੑ͕ߴ͘ɺ໛ൣత
    ʢͦΕͧΕͷӳ୯ޠͷ಄จࣈΛͱͬͯ536&ʣͳίʔ
    υ͸͍·ݱࡏͷχʔζΛຬ͚ͨͩ͢Ͱ͸ͳ͘ɺকདྷ
    తͳχʔζΛຬͨ͢Α͏ʹมߋΛՃ͑Δ͜ͱ΋Ͱ͖
    ·͢ɻ
    ൈਮ

    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʙ3VCZͰΘ͔ΔਐԽ͚ͭͮ͠ΔॊೈͳΞϓϦέʔγϣϯͷҭͯํ

    4BOEJ.FU[ɺ∁ࢁହج

    View Slide

  26. ൈਮ

    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʙ3VCZͰΘ͔ΔਐԽ͚ͭͮ͠ΔॊೈͳΞϓϦέʔγϣϯͷҭͯํ

    4BOEJ.FU[ɺ∁ࢁହج
    536&ͳίʔυΛॻͨ͘Ίͷ࠷ॳͷҰา
    ͸ɺͦΕͧΕͷΫϥε͕ɺ໌֬ʹఆٛ͞
    Εͨ୯Ұͷ੹೚Λ࣋ͭΑ͏పఈ͢Δ͜ͱ
    Ͱ͢ɻ

    View Slide

  27. ୯Ұ੹೚
    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυ

    ͜Ε͚ͩ͸࣮ફ͠ͱ͜͏ΨΠυᶄ
    536&ͳίʔυͷͨΊʹ

    View Slide

  28. Ϋϥε΋

    View Slide

  29. ϝιου΋

    View Slide

  30. ୯Ұ੹೚Λ
    ৺͕͚Α͏

    View Slide

  31. Ͱ΋Ͱ͖ͳ͍ͱ͖͋Δ
    ΑͶ

    View Slide

  32. ίϝϯτ
    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυ

    ͜Ε͚ͩ͸࣮ફ͠ͱ͜͏ΨΠυᶅ

    View Slide

  33. 536&ݪଇ͔Β

    ཭ΕΔ࣌͸

    ίϝϯτͰิ͏

    View Slide

  34. ݟ௨͕͠ྑ͘ͳ͍ʢ҉໧ͷ஌͕ࣝ͋Δʣͱ͖
    ͦΕΛॻ͘
    ֎෦ίϯϙʔωϯτͷಈ͖ͱ͔
    https://github.com/facebook/react-native/blob/
    e9e20e6c8335f27af8469cd23cb7ba079b0422f9/local-cli/generator/templates.js#L49

    View Slide

  35. ߹ཧత͡Όͳ͍ͱ͖
    ྫӡ༻ͨ͠Βരൃ͢Δ͡Ό
    ΜɺΈ͍ͨͳίʔυͳͲ
    ྫԠٸॲஔ

    View Slide

  36. ར༻ੑ͕௿͍ͱ͖
    ࠶ར༻ੑ͕௿ͯ͘ྑ͍ཧ༝Λॻ͘ɻ
    ྫݕূ͕ऴΘͬͨΒ͙͢ফ͢ίʔυ

    View Slide

  37. ໛ൣత͡Όͳ͍ͱ͖ɿ
    ਅࣅ͠ͳ͍ͰͶɺͱཧ૝͸Ͳ͏͔Λ
    ॻ͘ɻ
    ༁͜͜ʹ͜ͷίʔυ͕͋Δͷ͸͋ΔछͷϋοΫɻ50%0ΠϯλʔϑΣʔεʹ
    ௚઀௥Ճ͢Δ
    IUUQTHJUIVCDPNGBDFCPPLSFBDUOBUJWFCMPCFGCGFBCGDEEDCD
    3FBDU"OESPJETSDNBJOKBWBDPNGBDFCPPLSFBDUCSJEHFCSJEHFQSP

    View Slide

  38. ৗʹ536&
    Λҙࣝ͢Δ

    View Slide

  39. ૯ྗઓͰ

    มߋʹڧ͍ίʔυ
    Λ࡞͍ͬͯ͜͏

    View Slide

  40. 536&ݪଇ
    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυ

    ͜Ε͚ͩ͸࣮ફ͠ͱ͜͏ΨΠυ·ͱΊ
    ୯Ұ੹೚
    ৗʹҙࣝ
    ৺͕͚
    Ͱ͖ͳ͍ͱ͖͸

    View Slide

  41. ൪֎ฤ
    ΄͔ͷ෢ث

    View Slide

  42. ίϐϖ
    ίϐϖ͸࣌ʹڧྗͳ෢ثͩ

    View Slide

  43. ίϐϖͰ͖ͳ͍΄Ͳ

    ௕͍ίʔυ
    ෳࡶͳίʔυ͸ॻ͔ͳ͍
    ίϝϯτ͸ઈର͠Α͏
    ͍͍ͤͥճ໨͙Β͍·Ͱɻճ໨
    Ҏ߱͸ந৅Խ΍੾Γ෼͚Λ͠Α͏

    View Slide

  44. ༧ݴ͠ͳ͍

    View Slide

  45. lϓϩάϥϚʔ͸௒ೳྗऀͰ͸ͳ͍ͷͰɺಛఆͷະདྷ
    Λ༧ଌͨ͠ઃܭ͸ɺ͍͍ࣦͨͯഊʹऴΘΓ·͢ɻz
    ൈਮ

    ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυʙ3VCZͰΘ͔ΔਐԽ͚ͭͮ͠ΔॊೈͳΞϓϦέʔγϣϯͷҭͯํ

    4BOEJ.FU[ɺ∁ࢁହج

    View Slide

  46. ྫɿந৅Խͯ͠

    ϙϦϞʔϑΟοΫؔ࿈

    ࡞ͬͨΓͯ͠΋
    ࢖Θͳ͔ͬͨɾ
    ࢖͑ͳ͍͜ͱ͕Θ͔ͬͨΒ

    View Slide

  47. EVQMJDBUJPOJTGBSDIFBQFS
    UIBOUIFXSPOHBCTUSBDUJPO
    IUUQTXXXTBOEJNFU[DPNCMPHUIFXSPOHBCTUSBDUJPO

    View Slide

  48. QSFGFSEVQMJDBUJPOPWFSUIF
    XSPOHBCTUSBDUJPO
    IUUQTXXXTBOEJNFU[DPNCMPHUIFXSPOHBCTUSBDUJPO

    View Slide

  49. νʔϜͷ

    ߹ҙ

    View Slide

  50. ίʔυͷ߹ཧੑ͸
    ϓϩμΫτͷϑΣʔζ
    νʔϜʹΑͬͯ΋มΘΔͷͰ
    Α͘࿩ͦ͏

    View Slide

  51. ٞ࿦ͷ౔୆

    ʢڞ௨ݴޠʣ
    ͕ཉ͍͠

    View Slide

  52. ྑ͍ຊ͕͋Δ

    View Slide

  53. View Slide

  54. ?V?

    View Slide

  55. ͋Ε΋͍ͨ͜͠Ε΋͍ͨ͠

    ΋ͬͱ͍ͨ͠΋ͬͱ΋ͬͱ͍ͨ͠

    Š5)&#-6&)&"354ເ

    View Slide

  56. ݶΒΕͨ࣌ؒͷͳ͔Ͱ

    आΓ΋ͷͷ࣌ؒͷͳ͔Ͱ

    ຊ෺ͷເΛݟΔΜͩ

    Š5)&#-6&)&"354ເ

    View Slide

  57. ΍͍͖ͬͯ

    View Slide

  58. ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυ

    ͜Ε͚ͩ͸࣮ફ͠ͱ͜͏ΨΠυ
    by @taiki_ _t 

    ԙ: Rails Developers Meetup 2018-7-14
    5)"/,
    :06

    View Slide