Slide 1

Slide 1 text

2017/04/17 Swift coding Strategy AKIBA.swift Ұप೥ه೦ษڧձ

Slide 2

Slide 2 text

About Me

Slide 3

Slide 3 text

• ాத ޹໌ (Takaaki Tanaka) • Ϋϥεϝιουגࣜձࣾ • ϞόΠϧόοΫΤϯυ • @kongmingtrap • Swift / Objective-C / Scala / JavaScript … • GyazSquare / GitHub

Slide 4

Slide 4 text

˞࢓ࣄͰ͢

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ؓ࿩ٳ୊

Slide 7

Slide 7 text

Strategy

Slide 8

Slide 8 text

Strategy Pattern

Slide 9

Slide 9 text

Strategy Pattern // MARK: - Interface public protocol TodoRepository { func get(_ handler: @escaping (Result<[TodoEntity]>) -> Void) } // MARK: - Implementation final class TodoRepositoryImpl: TodoRepository { private let dataStore: TodoDataStore public init(dataStore: TodoDataStore) { self.dataStore = dataStore } func get(_ handler: @escaping (Result<[TodoEntity]>) -> Void) { dataStore.get(with: ["filter": "all"]).onSuccess { entities in let result = Result<[TodoEntity]>.success(entities) handler(result) }.onFailure { error in let result = Result<[TodoEntity]>.failure(error) handler(result) } } }

Slide 10

Slide 10 text

Strategy Pattern typealias TodoListComplitionHandler = ([TodoModel]?) -> Void // MARK: - Interface protocol TodoListUseCase { func fetchTodos(_ complite: TodoListComplitionHandler?) } // MARK: - Implementation struct TodoListUseCaseImpl: TodoListUseCase { private let todoRepository: TodoRepository public init(todoRepository: TodoRepository) { self.todoRepository = todoRepository } public func fetchTodos(_ compliton: TodoListComplitionHandler?) { todoRepository.get { result in switch result { case .success(let value): let todoModels = try! TodoTranslator().translate(value) compliton?(todoModels) case .failure(let error): print(error) compliton?(nil) } } } }

Slide 11

Slide 11 text

Strategy Pattern 4USBUFHZ1BUUFSO͸ΞϧΰϦζϜͷηοτΛఆ ٛ͢Δํ๏Λఏڙ͠ɺ͜ΕΒΛަ׵Մೳʹ͢Δ ͜ͱΛ໨తͱ͍ͯ͠Δɻ4USBUFHZ1BUUFSOΑΓɺ ΞϧΰϦζϜΛ࢖༻ऀ͔Βಠཱͨ͠··༷ʑʹ มԽͤ͞Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔɻ

Slide 12

Slide 12 text

Strategy Pattern 4USBUFHZ1BUUFSO͸ΞϧΰϦζϜͷηοτΛఆ ٛ͢Δํ๏Λఏڙ͠ɺ͜ΕΒΛަ׵Մೳʹ͢Δ ͜ͱΛ໨తͱ͍ͯ͠Δɻ4USBUFHZ1BUUFSOΑΓɺ ΞϧΰϦζϜΛ࢖༻ऀ͔Βಠཱͨ͠··༷ʑʹ มԽͤ͞Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔɻ

Slide 13

Slide 13 text

Strategy of AKIBA.swift

Slide 14

Slide 14 text

Strategy ઓུʢͤΜΓΌ͘ɺӳ4USBUFHZʣ͸ɺҰൠతʹ͸ಛఆͷ໨ඪ Λୡ੒͢ΔͨΊʹɺ௕ظతࢹ໺ͱෳ߹ࢥߟͰྗ΍ࢿݯΛ૯߹త ʹӡ༻͢Δٕज़ɾՊֶͰ͋Δɻ

Slide 15

Slide 15 text

Strategy IUUQXXXJUNFEJBDPKQCJ[JEBSUJDMFT OFXTIUNM

Slide 16

Slide 16 text

Strategy w όουϊ΢ϋ΢ͳͲɺΫϥεϝιου͚ͩͰ ڞ༗Ͱ͖ͳ͍৘ใΛ৔Λ௨ͯ͡ڞ༗Ͱ͖ΔΑ ͏ʹ͢Δ w ༗໊ਓͷํͱͭͳ͕ͬͯɺࠔͬͨͱ͖ʹฉ͚ ΔΑ͏ʹ͢Δ w Ϋϥεϝιου͔ΒελʔϓϨΠϠʔΛഐग़ ͢Δ

Slide 17

Slide 17 text

Tactics w ִ݄ͰษڧձΛ։࠵͢Δ w ։࠵ϒϩάΛॻ͘ w ήετεϐʔΧʔΛট͘ w ৔ॴΛఏڙ͢Δ w ຖճςʔϚʹԊͬͯืूΛ͔͚Δ

Slide 18

Slide 18 text

USZ4XJGUৼΓฦΓษڧձ Ր 4XJGUͱ0CKFDUJWF$ͱͷจ๏ൺֱ Ր 88%$৘ใڞ༗ձ ۚ 4XJGU-5େձʂ Ր εϖγϟϧίϥϘʂʂ ݄ ϑϦʔτʔʔΫʂʂ Ր GBTUMBOFϋϯζΦϯ Ր ϑϦʔτʔʔΫʂʂ Ր લ೔ʹࠂ஌͢ΔษڧձɺͦΕ͕",*#"TXJGU Ր ϑϦʔτʔʔΫʂʂ Ր ,ZPCBTIJTXJGUY",*#"TXJGU߹ಉษڧձ ਫ ",*#"TXJGUº4XJGUѪ޷ձWPM ݄ ",*#"TXJGUҰप೥ه೦ษڧձʂ ݄ ։࠵ཤྺ

Slide 19

Slide 19 text

USZ4XJGUৼΓฦΓษڧձ Ր 4XJGUͱ0CKFDUJWF$ͱͷจ๏ൺֱ Ր 88%$৘ใڞ༗ձ ۚ 4XJGU-5େձʂ Ր εϖγϟϧίϥϘʂʂ ݄ ϑϦʔτʔʔΫʂʂ Ր GBTUMBOFϋϯζΦϯ Ր ϑϦʔτʔʔΫʂʂ Ր લ೔ʹࠂ஌͢ΔษڧձɺͦΕ͕",*#"TXJGU Ր ϑϦʔτʔʔΫʂʂ Ր ,ZPCBTIJTXJGUY",*#"TXJGU߹ಉษڧձ ਫ ",*#"TXJGUº4XJGUѪ޷ձWPM ݄ ",*#"TXJGUҰप೥ه೦ษڧձʂ ݄ ։࠵ཤྺ

Slide 20

Slide 20 text

USZ4XJGUৼΓฦΓษڧձ Ր 4XJGUͱ0CKFDUJWF$ͱͷจ๏ൺֱ Ր 88%$৘ใڞ༗ձ ۚ 4XJGU-5େձʂ Ր εϖγϟϧίϥϘʂʂ ݄ ϑϦʔτʔʔΫʂʂ Ր GBTUMBOFϋϯζΦϯ Ր ϑϦʔτʔʔΫʂʂ Ր લ೔ʹࠂ஌͢ΔษڧձɺͦΕ͕",*#"TXJGU Ր ϑϦʔτʔʔΫʂʂ Ր ,ZPCBTIJTXJGUY",*#"TXJGU߹ಉษڧձ ਫ ",*#"TXJGUº4XJGUѪ޷ձWPM ݄ ",*#"TXJGUҰप೥ه೦ษڧձʂ ݄ ςʔϚ͕ܾ·Βͳ͔ͬͨճ

Slide 21

Slide 21 text

USZ4XJGUৼΓฦΓษڧձ Ր 4XJGUͱ0CKFDUJWF$ͱͷจ๏ൺֱ Ր 88%$৘ใڞ༗ձ ۚ 4XJGU-5େձʂ Ր εϖγϟϧίϥϘʂʂ ݄ ϑϦʔτʔʔΫʂʂ Ր GBTUMBOFϋϯζΦϯ Ր ϑϦʔτʔʔΫʂʂ Ր લ೔ʹࠂ஌͢ΔษڧձɺͦΕ͕",*#"TXJGU Ր ϑϦʔτʔʔΫʂʂ Ր ,ZPCBTIJTXJGUY",*#"TXJGU߹ಉษڧձ ਫ ",*#"TXJGUº4XJGUѪ޷ձWPM ݄ ",*#"TXJGUҰप೥ه೦ษڧձʂ ݄ ϗʔϜͰ։࠵͠ͳ͔ͬͨճɹ#AKIBA #ͱ͸

Slide 22

Slide 22 text

USZ4XJGUৼΓฦΓษڧձ Ր 4XJGUͱ0CKFDUJWF$ͱͷจ๏ൺֱ Ր 88%$৘ใڞ༗ձ ۚ 4XJGU-5େձʂ Ր εϖγϟϧίϥϘʂʂ ݄ ϑϦʔτʔʔΫʂʂ Ր GBTUMBOFϋϯζΦϯ Ր ϑϦʔτʔʔΫʂʂ Ր લ೔ʹࠂ஌͢ΔษڧձɺͦΕ͕",*#"TXJGU Ր ϑϦʔτʔʔΫʂʂ Ր ,ZPCBTIJTXJGUY",*#"TXJGU߹ಉษڧձ ਫ ",*#"TXJGUº4XJGUѪ޷ձWPM ݄ ",*#"TXJGUҰप೥ه೦ษڧձʂ ݄ ͦ΋ͦ΋ษڧձ͡Όແ͍

Slide 23

Slide 23 text

Tactics w ִ݄ͰษڧձΛ։࠵͢Δ w ։࠵ϒϩάΛॻ͘ w ήετεϐʔΧʔΛট͘ w ৔ॴΛఏڙ͢Δ w ຖճςʔϚʹԊͬͯืूΛ͔͚Δ

Slide 24

Slide 24 text

ͦΕඞউͷज़ɺ ߹มͷܗ͸ػʹ͋Γɻ

Slide 25

Slide 25 text

w ઓུΑΓઓज़ w ༏लͳޙํࢧԉʹΑͬͯࢧ͑ΒΕ͖ͯ ·ͨ͠ w ϒϩά͸ඞͣ࣍ͷ೔·Ͱʹॻ͘ Recap

Slide 26

Slide 26 text

೥໨΋ΑΖ͓͘͠Ͷ͕͍͠·͢

Slide 27

Slide 27 text

0OFNPSFUIJOHʜ

Slide 28

Slide 28 text

IUUQEFWDMBTTNFUIPEKQOFXTNPCJMFUFBNJOPTBLBWPM

Slide 29

Slide 29 text

w ݄ w #6,630TXJGUY",*#"TXJGU w DPNJOHTPPOʜ

Slide 30

Slide 30 text

͓ΘΓ