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

CleanArchitecture × Strategyパターンで挑む爆速開発

CleanArchitecture × Strategyパターンで挑む爆速開発

下記の課題により多くなりがちな議論を減らして、開発速度を上げた話
1. UIとDataの依存によるメンテナンス性の悪さ
2. 明確な設計指針不足に伴うコミュニケーションコストの増大
3. 設計の属人化

Agenda

1. CleanArchitectureを導入してみた話
2. CleanArchitectureでは解決できない部分が出てきた話
3. Strategyパターンを使うとうまく解決できた話
4. このパターンに残る課題の話

KENTARO SATA

March 05, 2019
Tweet

More Decks by KENTARO SATA

Other Decks in Programming

Transcript

  1. CleanArchitecture × Strategyύλʔϯ
    Ͱ௅Ήര଎։ൃ
    Tech Lead / Android Engineer
    @SataKentaro (Ωϟϯϓͷ͑Μ͡ʹ͋)

    View Slide

  2. PROFILE
    AndroidΤϯδχΞ
    — FiNC Technologiesʹॴଐ
    — ίϛϡχςΟʔػೳΛ։ൃ͢ΔνʔϜͷTL
    — DroidKaigi2019ͰʮϚςϦΞϧσβΠϯͷىݯͱϕʔεͱͳΔ఩ֶʯͱ͍
    ͏λΠτϧͰొஃ
    Ωϟϯύʔ
    — ฏۉ͢ΔͱҰ݄ʹ1ճҎ্͸ςϯτੜ׆
    — ݱࡏ͸ݐஙՈͷ༑ਓͱςϯτΛσβΠϯத (https://twitter.com/
    SataKentaro)
    ݐங
    — ֶੜ࣌୅͸ݐஙσβΠϯΛઐ߈
    Kentaro Sata (Ωϟϯϓͷ͑Μ͡ʹ͋)
    AndroidΤϯδχΞ / Ωϟϯύʔ / ݐங

    View Slide

  3. $MFBO"SDIJUFDUVSFΛಋೖͯ͠Έͨ࿩
    $MFBO"SDIJUFDUVSFͰ͸ղܾͰ͖ͳ͍෦෼͕ग़͖ͯͨ࿩
    4USBUFHZύλʔϯΛ࢖͏ͱ͏·͘ղܾͰ͖ͨ࿩
    "HFOEB
    ͜ͷύλʔϯʹ࢒Δ՝୊ͷ࿩

    View Slide

  4. CleanArchitectureΛಋೖͯ͠Έͨ࿩
    tried to use Clean Architecture
    - 01 -

    View Slide

  5. 6*ͱ%BUBͷґଘʹΑΔϝϯςφϯεੑͷѱ͞
    ໌֬ͳઃܭࢦ਑ෆ଍ʹ൐͏ίϛϡχέʔγϣϯίετͷ૿େ
    ઃܭͷଐਓԽ
    $MFBO"SDIJUFDUVSFಋೖલͷ՝୊

    View Slide

  6. 6*ͱ%BUBͷґଘʹΑΔϝϯςφϯεੑͷѱ͞
    ໌֬ͳઃܭࢦ਑ෆ଍ʹ൐͏ίϛϡχέʔγϣϯίετͷ૿େ
    ઃܭͷଐਓԽ
    $MFBO"SDIJUFDUVSFಋೖલͷ՝୊
    ։ൃલͷٞ࿦૿େɻ։ൃεϐʔυരԼ͕Γ

    View Slide

  7. ٞ࿦ΛݮΒͯ͠։ൃεϐʔυΛ্͍͛ͨ

    View Slide

  8. ےτϨͰղܾ͠Α͏͔
    ࢀরݩIUUQTBNFCMPKQCBEBTTDFP

    View Slide

  9. ͍΍ɺ΋ͬͱ͍͍ͷ͕͋Δʂ
    ࢀরݩIUUQTCMPHDMFBODPEFSDPNVODMFCPCUIFDMFBOBSDIJUFDUVSFIUNM

    View Slide

  10. 6TF$BTF 3FQPTJUPSZ %BUB4UPSF
    7JFX 7JFX.PEFM
    6* %PNBJO %BUB
    1SFTFOUFS
    ૚ʹ෼͚ͨ

    View Slide

  11. ઃܭํ਑͕໌֬ʹͳΓνʔϜͰͷٞ࿦͕ݮͬͨ
    ݸਓͷϨϕϧࠩʹΑΔ৺഑͕͔ͳΓݮͬͯϨϏϡʔίετ

    ɹ͕Լ͕ͬͨ
    6*ͱ%BUBͷґଘΛണ͕ͤͯ%BUB૚ͷมߋʹڧ͘ͳͬͯ

    ɹαʔόʔͱͷ"1*ઃܭٞ࿦͕ݮͬͨ

    View Slide

  12. CleanArchitectureͰ͸ղܾͰ͖ͳ͍෦෼͕ग़͖ͯͨ࿩
    What the Clean Architecture didn’t solve
    - 02 -

    View Slide

  13. (SPVQνϟοτͱ%JSFDUνϟοτΛผϦιʔεͱͯ͠ѻ͏
    6*͸(SPVQνϟοτͱ͔%JSFDUνϟοτؔ܎ͳ͘ҰͭͰ
    ͱ͋Δνϟοτͷ࡞Γ௚͠։ൃ

    View Slide

  14. %BUB4UPSF
    3FQPTJUPSZ
    (SPVQ$IBU3FNPUF%BUB4UPSF
    (SPVQ$IBU3FQPTJUPSZ
    6TFS$IBU3FQPTJUPSZ
    6TF$BTF
    $IBU3PPN6TF$BTF
    (SPVQ$IBU-PDBM%BUB4UPSF
    6TFS$IBU3FNPUF%BUB4UPSF
    6TFS$IBU-PDBM%BUB4UPSF
    6* %BUB
    ͜Μͳײ͡ʹ։ൃ͠Α͏ͱࢥͬͨ

    View Slide

  15. ͢Έ·ͤΜɻҰͭ໧͍ͬͯͨ͜ͱ͕͋Γ·͢ɻ

    View Slide

  16. ͢Έ·ͤΜɻҰͭ໧͍ͬͯͨ͜ͱ͕͋Γ·͢ɻ
    (SPVQνϟοτͱ%JSFDUνϟοτΛผϦιʔεͱͯ͠ѻ͏
    6*͸(SPVQνϟοτͱ͔%JSFDUνϟοτؔ܎ͳ͘ҰͭͰ
    αʔόʔଆͰνϟοτ͸΋ͷ͘͢͝৭Μͳ֓೦Ͱࡉ͔͘

    ɹϦιʔε͕෼͔Ε͍ͯ·͢ɻɻɻ

    View Slide

  17. ֓೦ͷύλʔϯ͸͜Μͳײ͡

    View Slide

  18. Ͱ΋νϟοτ3PPNͷϦιʔεΛҰ୴औಘͯ͠͠·͑͹
    ΫϥΠΞϯτͱͯ͠දݱ͢΂͖֓೦͸͜Ε͚ͩ

    View Slide

  19. ͳʹ΍Β$BTFจ·ΈΕͷ6TF$BTFʹ

    View Slide

  20. ͔͠΋3PPNऔಘͷϝιουͱ3PPNऔಘޙʹ࢖͏
    ϝιουͰ$BTFจͷύλʔϯ͕ҧ͏

    View Slide

  21. StrategyύλʔϯΛ࢖͏ͱ͏·͘ղܾͰ͖ͨ࿩
    solved this with Strategy Pattern
    - 03 -

    View Slide

  22. ඞཁͳͷ͸૚͚ͩͱ͸ݶΒͳ͍

    View Slide

  23. ࠓճղܾ͍ͨ͜͠ͱ

    View Slide

  24. ےτϨͰղܾ͠Α͏͔
    ࢀরݩIUUQTBNFCMPKQCBEBTTDFP

    View Slide

  25. ͍΍ɺ΋ͬͱ͍͍ͷ͕͋Δʂ
    ࢀরݩIUUQTXXXUFDITDPSFDPNUFDI%FTJHO1BUUFSO4USBUFHZIUNM

    View Slide

  26. σʔλΛॳظऔಘ͢Δ࣌ʹ࢖͏3FQPTJUPSZͱϝιου
    σʔλऔಘޙʹ࢖͏3FQPTPUSZͱϝιου
    ։͍ͨͱ͖ʹ࣍ͷ̎ͭͷ૊Έ߹ΘͤΛܾఆ͍ͨ͠

    View Slide

  27. σʔλΛॳظऔಘ͢Δ࣌ʹ࢖͏3FQPTJUPSZͱϝιου
    σʔλऔಘޙʹ࢖͏3FQPTPUSZͱϝιου
    ඞཁͳ4USBUFHZ͸̎ͭ
    0QFO$IBU3PPN4USBUFHZ
    0QFOFE$IBU3PPN4USBUFHZ

    View Slide

  28. औಘʹ࢖͏*%ͷछྨͱ3FQPTJUPSZͱϝιουΛࢦఆͯ͠
    0QFO$IBU3PPN4USBUFHZ

    View Slide

  29. औಘޙʹ࢖͏ಛఆͷ0QFOFE$IBU3PPN4USBUFHZΛࢦఆ͢Δ
    0QFO$IBU3PPN4USBUFHZ

    View Slide

  30. ͋ͱ͸֤$BTFͷύλʔϯΛ4USBUFHZʹஔ͖׵͑Δ͚ͩ
    0QFO$IBU3PPN4USBUFHZ
    0QFO6TFS$IBU3PPN4USBUFHZ
    0QFO"ENJO$IBU3PPN4USBUFHZ
    0QFO0GGJDJBM"DDPVOU$IBU3PPN4USBUFHZ
    0QFO(SPVQ$IBU3PPN4USBUFHZ
    $SFBUF6TFS$IBU3PPN4USBUFHZ
    $SFBUF"ENJO$IBU3PPN4USBUFHZ
    ʜ
    0QFOFE$IBU3PPN4USBUFHZ
    0QFOFE6TFS$IBU3PPN4USBUFHZ
    0QFOFE"ENJO$IBU3PPN4USBUFHZ
    0QFOFE0GGJDJBM"DDPVOU$IBU3PPN4USBUFHZ
    0QFOFE(SPVQ$IBU3PPN4USBUFHZ

    View Slide

  31. εοΩϦ

    View Slide

  32. ͜ͷύλʔϯʹ࢒Δ՝୊ͷ࿩
    What even Strategy Pattern doesn’t solve
    - 04 -

    View Slide

  33. %*ͣ͠Β͍ʂʂʂ

    View Slide

  34. ౰વ6TF$BTF4USBUFHZͰ͸ͳ͍ͷͰ
    %BHHFSͱ͔ͷ%*ίϯςφͰͷࢦఆํ๏Λ͏·͘ݟ͚ͭΒΕͯͳ͍

    View Slide

  35. ઈࢍղܾํ๏ืूத

    View Slide

  36. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    Kentaro Sata
    - THANK YOU -

    View Slide