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

課題感から始める クラス設計と合意形成

課題感から始める クラス設計と合意形成

きりみん

March 11, 2018
Tweet

More Decks by きりみん

Other Decks in Programming

Transcript

  1. ՝୊ײ͔Β࢝ΊΔ
    Ϋϥεઃܭͱ߹ҙܗ੒
    Bonfire Android #3

    View Slide

  2. ࣗݾ঺հ
    • @kirimin
    • AnyPayגࣜձࣾ ॴଐ
    • AndroidΤϯδχΞ
    • όʔνϟϧϢʔνϡʔόʔ
    • React-NativeΤϯδχΞ

    View Slide

  3. ฐࣾͷϓϩμΫτ

    View Slide

  4. ࠓ೔ͷςʔϚ
    ʮαʔϏεͱઃܭʯ

    View Slide

  5. ઃܭɺߟ͑ͯ·͔͢ʁ

    View Slide

  6. ʲΞϯέʔτʳઃܭʹ͍ͭͯ
    • ͕ͬͪΓΫϥεߏ੒ΛܾΊͯӡ༻͍ͯ͠Δ

    View Slide

  7. ʲΞϯέʔτʳઃܭʹ͍ͭͯ
    • ͕ͬͪΓΫϥεߏ੒ΛܾΊͯӡ༻͍ͯ͠Δ
    • ωοτϫʔΫ·ΘΓͱ͔ج൫ͷ෦෼ͷΫϥε
    ߏ੒͚ܾͩΊͯ͋ͱ͸࣮૷ऀ࣍ୈ

    View Slide

  8. ʲΞϯέʔτʳઃܭʹ͍ͭͯ
    • ͕ͬͪΓΫϥεߏ੒ΛܾΊͯӡ༻͍ͯ͠Δ
    • ωοτϫʔΫ·ΘΓͱ͔ج൫ͷ෦෼ͷΫϥε
    ߏ੒͚ܾͩΊͯ͋ͱ͸࣮૷ऀ࣍ୈ
    • શવΘ͔Βͳ͍ɻԶͨͪ͸งғؾͰΦϒδΣ
    Ϋτࢦ޲Λ΍͍ͬͯΔ

    View Slide

  9. ͍Ζ͍Ζͳઃܭύλʔϯ
    .71
    .7$ .77.
    ""$
    'MVY
    3FEVY

    View Slide

  10. ͳΜͰઃܭΛߟ͑Δඞཁ͕
    ͋ΔΜͩΖ͏

    View Slide

  11. ͦ͜ʹ՝୊͕͋Δ͔Β

    View Slide

  12. ͑Β͍ͻͱʮMVP͕ΠέͯΔ
    Β͍͔͠Βɺ࣍ͷΞϓϦ͸
    MVPͰ΍ͬͯͶʯ

    View Slide

  13. ·ΕʹΑ͋͘Δޫܠ
    • ͑Β͍ͻͱʮMVP͕ΠέͯΔΒ͍͔͠Βɺ࣍ͷ
    ΞϓϦ͸MVPͰ࡞ͬͯࣗಈςετΛಋೖͶʯ

    View Slide

  14. ·ΕʹΑ͋͘Δޫܠ
    • ͑Β͍ͻͱʮMVP͕ΠέͯΔΒ͍͔͠Βɺ࣍ͷ
    ΞϓϦ͸MVPͰ࡞ͬͯࣗಈςετΛಋೖͶʯ
    • ϝϯόʔʮͳΜͰ͜Μͳ໘౗ͳॻ͖ํ͠ͳ͍ͱ
    ͍͚ͳ͍Μͩ...ʯʮԿ͕ਖ਼͍͠ͷ͔෼͔Βͳ
    ͍...ʯ

    View Slide

  15. ·ΕʹΑ͋͘Δޫܠ
    • ͑Β͍ͻͱʮMVP͕ΠέͯΔΒ͍͔͠Βɺ࣍ͷ
    ΞϓϦ͸MVPͰ࡞ͬͯࣗಈςετΛಋೖͶʯ
    • ϝϯόʔʮͳΜͰ͜Μͳ໘౗ͳॻ͖ํ͠ͳ͍ͱ͍
    ͚ͳ͍Μͩ...ʯʮԿ͕ਖ਼͍͠ͷ͔෼͔Βͳ͍...ʯ
    • ՝୊ײ͕ೝࣝग़དྷ͍ͯͳ͍ͷʹઃܭͱݴΘΕͯ΋
    ϝϦοτΛ࣮ײ͢Δͷ͸Ή͔͍ͣ͠

    View Slide

  16. શવΘ͔Βͳ͍ɻ
    Զͨͪ͸งғؾͰྲྀߦΓͷ
    ઃܭΛ΍͍ͬͯΔ

    View Slide

  17. ରࡦ

    View Slide

  18. 1.νʔϜͱͯ͠ग़དྷΔ͜ͱ

    View Slide

  19. ࠓͷϓϩδΣΫτͷ՝୊Λ
    ચ͍ग़͢
    • Ͳ͜ʹͲΜͳॲཧ͕ॻ͔Ε͍ͯΔͷ͔෼͔Βͳ
    ͍
    • ৽͍͠ॲཧΛͲ͜ʹॻ͚͹͍͍ͷ͔෼͔Βͳ͍
    • ঢ়ଶ͕ແବʹෳࡶͰෆ޾ͳόά͕ࠞೖ͕ͪ͠
    • ίʔυ͕ಡΈʹ͘͘վमίετ͕ߴ͍

    View Slide

  20. ࠓ͋Δ՝୊ΛղܾͰ͖ͦ͏ͳύ
    λʔϯΛಋೖ͠Α͏
    • ٯʹ՝୊͕ಛʹແ͚Ε͹ແཧʹΧοίΠΠઃܭύλʔ
    ϯΛ࢖Θͳͯ͘΋͍͍
    • ࢥ૝తʹਖ਼͍͠ΨονϦͨ͠ઃܭ͕ৗʹ༏Ε͍ͯΔ
    ͱ͸ݶΒͳ͍ɹ(શͯͷΫϥεΛinterfaceԽ͢Δͳ
    Ͳ)
    • ͨͩ͠ɺকདྷతͳ՝୊͕༧ݟग़དྷ͍͍ͯͯΔͳΒ࠷
    ॳ͔ΒΨονϦ૊Ήͷ͸ѱ͘ͳ͍

    View Slide

  21. ݸਓతʹ࠷௿ݶܾΊ͓͍ͯͨํ
    ͕Αͦ͞͏ͳ͜ͱ
    • ࢖͏ϥΠϒϥϦͱ࢖͍ํ
    • DataBinding/RxJava/Retrofit/EventBus/etc...
    • σʔλΞΫηεॲཧͷݺͼग़͠ํ
    • View͔ΒݺͿ/Ϟσϧ͔ΒݺͿ/RepositoryతͳͷΛ࡞Δ/࡞Β
    ͳ͍
    • ϏδωεϩδοΫΛॻ͘৔ॴ
    • ϞσϧΫϥεͬΆ͍΋ͷ͕͍ΖΜͳύοέʔδʹࢄΒ͹Γ͕ͪ

    View Slide

  22. 2.։ൃऀݸਓͱͯ͠
    Ͱ͖Δ͜ͱ

    View Slide

  23. ࣮૷࣌ͷ͋Γ͕ͪͳ՝୊Λ஌Δ
    • Φεεϝͳͷ͸ݸਓͰ0͔ΒΞϓϦΛ࡞ͬͯΈΔ͜ͱ
    • ͦͦ͜͜ͷػೳΛ࣋ͬͨΞϓϦΛҰਓͰ࡞ΓɺԿ౓΋ػೳ
    վળͷΞοϓσʔτΛ͍ͯ͘͠
    • ͍Ζ͍Ζͳ՝୊͕ݟ͑ͯ͘Δ
    • ྑ͔Εͱࢥͬͨઃܭ͕ͭΒΈΛੜΉͳͲͷ஌ݟ͕ಘΒΕΔ
    • ઃܭʹࣦഊͨ͠ܦݧ͸Ұੜͷࡒ࢈

    View Slide

  24. ཧ૝
    • νʔϜʮ͜͏͍͏՝୊͕͋Δ͔Β͜ͷઃܭΛ
    ಋೖ͠Α͏ʯ
    • ϝϯόʔʮΘ͔Δʯ

    View Slide

  25. ͡Ό࣮͋ࡍʹͲ͏΍ͬͯಋೖ
    ͢Δͷʁ

    View Slide

  26. paymoͰͷྫ

    View Slide

  27. ఏҊ͢Δ
    • ॳظͷ࣮૷͸͍Ζ͍Ζͳ՝୊͕͋Δઃܭͩͬͨɹ
    (DroidKaigiͰͷൃදɺHow to improve your architecture
    and testsΛࢀর)
    • ·ͣ͸ேձ΍SlackͳͲͰ՝୊ײͱ΍Γ͍ͨ͜ͱΛप஌͢Δ
    • GitHubʹIssueΛཱͯΔ
    • จষϕʔεͰํ޲ੑʹ͍ͭͯٞ࿦͠νʔϜ಺Ͱ߹ҙ͢Δ

    View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. ۩ମҊΛݟͤΔ
    • αϯϓϧͱͯ͠ҰՕॴʹద༻͍ͨ͠ઃܭΛద༻͠
    ͨϒϥϯνΛ࡞ΓɺPRΛग़͢
    • ίʔυʹରͯ͠ϝϯόʔ͔Β޿͘ποίϛΛืΔ
    • ίʔυϕʔεͰߋʹٞ࿦͢Δ
    • ApproveΛ΋Β͍߹ҙͷҙࢥΛ໌֬ʹ֬ೝ͢Δ

    View Slide

  32. View Slide

  33. ϦϑΝΫλΛ࣮ࢪ͢Δ
    • ৽࣮͘͠૷͢ΔՕॴ͸৽͍͠ઃܭʹ߹ΘͤΔ
    • ݹ͍Օॴ͸εέδϡʔϧͳͲͱ૬ஊ͠ͳ͕Β
    ॱ࣍ॻ͖׵͍͑ͯ͘

    View Slide

  34. େࣄͳ͜ͱ
    • ҰਓͰಥͬ૸Βͳ͍
    • ৽͍͠ઃܭ͕ϝϯόʔײͰे෼ʹप஌͞Ε͍ͯͳ
    ͔ͬͨΓɺҙࣝ߹Θ͕ͤग़དྷ͍ͯͳ͍ͱɺ࣮૷ऀ
    ʹΑͬͯνάϋάʹͳͬͨΓɺετϨεͷݪҼʹ
    ͳΔ
    • ઃܭͷର৅͸ϓϩάϥϜ͕ͩɺେࣄͳͷ͸ਖ਼͍͠
    ՝୊ͷೝࣝͱίϛϡχέʔγϣϯ

    View Slide

  35. ઈର͋͠Θͤͳ
    ։ൃݱ৔ʹ͠Α͏ͳ

    View Slide

  36. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide