Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

ઃܭํ਑͕໌֬ʹͳΓνʔϜͰͷٞ࿦͕ݮͬͨ ݸਓͷϨϕϧࠩʹΑΔ৺഑͕͔ͳΓݮͬͯϨϏϡʔίετ
 ɹ͕Լ͕ͬͨ 6*ͱ%BUBͷґଘΛണ͕ͤͯ%BUB૚ͷมߋʹڧ͘ͳͬͯ
 ɹαʔόʔͱͷ"1*ઃܭٞ࿦͕ݮͬͨ

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

%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 ͜Μͳײ͡ʹ։ൃ͠Α͏ͱࢥͬͨ

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

ࠓճղܾ͍ͨ͜͠ͱ

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

͋ͱ͸֤$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

Slide 31

Slide 31 text

εοΩϦ

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

%*ͣ͠Β͍ʂʂʂ

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

ઈࢍղܾํ๏ืूத

Slide 36

Slide 36 text

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