Slide 1

Slide 1 text

Protocols in Swift Speee Engineer Meeting 2016-08-31 @hiragram

Slide 2

Slide 2 text

SlackͷMac༻ΞϓϦ ॏ͘ͳ͍Ͱ͔͢ʁ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

• ͜ΜͳΞϓϦΛ࡞ͬ ͍ͯΔதͰߟ͑ͨ͜ ͱΛ͠Ό΂Γ·͢

Slide 7

Slide 7 text

࿩͢͜ͱ • ܧঝͭΒ͍ • Swiftͷϓϩτίϧʹ͍ͭͯ • ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք • ϓϩτίϧ֦ு

Slide 8

Slide 8 text

ܧঝͭΒ͍ • Apple੡ͷϑϨʔϜϫʔΫ ͸ܧঝࡇΓ • શͯͷΫϥε͸NSObject ͷαϒΫϥε • ʮ͋ͷϝιουͬͯͲ͜ʹ ࣮૷͞Ε͚ͯͨͬʁʯ

Slide 9

Slide 9 text

ܧঝͭΒ͍ • UIViewControllerͷloadViewϝιου • ʮInterfaceBuilder࢖͏ͳΒΦʔόʔϥΠυ͠ ͪΌμϝʯ

Slide 10

Slide 10 text

ܧঝͭΒ͍ • KVO(Ωʔ஋؂ࢹ)Ͱ࢖͏observeValueForKeyPathϝιου • ʮ਌ΫϥεͷΛݺͿͱ͖͸ͪΌΜͱ࣮૷͞ΕͯΔ͔͔֬Ίͯ Ͷʯ

Slide 11

Slide 11 text

ͳʹͦΕ͸

Slide 12

Slide 12 text

ϓϩτίϧࢦ޲ϓϩάϥϛϯά • ෳ਺Ϋϥεʹ·͕ͨͬͯ͋Δੑ࣭/ػೳΛ͍࣋ͨͤͨ ͱ͖͸ɺܧঝʹΑͬͯͰ͸ͳ͘ɺϓϩτίϧʹΑͬͯ ࣮ݱ͠·͠ΐ͏ɻ(BaseViewControllerͱ͔ͭΒ͍) • ܧঝ͸Ұͭͷ਌͔࣋ͯ͠ͳ͍͕ɺϓϩτίϧͳΒෳ਺ ࣋ͯͯ͏Ε͍͠ɻ • ෳ਺࣋ͯΔ͕ɺෳ਺ͷϓϩτίϧͰ໊લ͕িಥ͢Δ ͱશͯʹద߹Ͱ͖͍ͯͳ͍ͱ͍͏͜ͱͰίϯύΠϧ ௨Βͳ͍ɻ͜Ε͸ෆՄආɻ

Slide 13

Slide 13 text

Swiftͷϓϩτίϧ • Property / Method Requirements • ࣮૷Λڧ੍͢Δ • Associatedtype • ϓϩτίϧ಺Ͱར༻͢Δɺؔ࿈͢Δܕ • Protocol Extension • ޙड़

Slide 14

Slide 14 text

ม਺ͷܕΛϓϩτίϧͰଋറ͢Δ

Slide 15

Slide 15 text

ม਺ͷܕΛϓϩτίϧͰଋറ͢Δ • a͸ʮAwesomeProtocolʹ४ڌͯ͠ΔܕͷΦϒ δΣΫτ͸ԿͰ΋ಥͬࠐΊΔʯ • b͸ʮAwesomeProtocolʹ४ڌ͍ͯ͠Δͻͱͭͷ ܕͷΦϒδΣΫτ͚ͩಥͬࠐΊΔʯ • ܕਪ࿦ͷ͓͔͛ͰδΣωϦΫεͱͯ΋࢖͍΍͍͢

Slide 16

Slide 16 text

ࣗ࡞SlackΞϓϦͰ΍ͬͯΔ͜ͱ • ςʔϒϧʹදࣔ͢ΔϝοηʔδͷܕΛ௚઀ࢦఆ͠ ͍͕ͯͨɺϑΟʔυʹදࣔ͢ΔΠϕϯτ༻ͷϓϩ τίϧΛ࡞ͬͨ → ϝοηʔδҎ֎ͷΠϕϯτ΋ ؆୯ʹදࣔͰ͖ΔΑ͏ʹͳͬͨ

Slide 17

Slide 17 text

௚઀ܕʹ݁߹ͨ͠ੈք 7JFX$POUSPMMFS .FTTBHF&OUJUZ

Slide 18

Slide 18 text

௚઀ܕʹ݁߹ͨ͠ੈք 7JFX$POUSPMMFS ❗

Slide 19

Slide 19 text

਌Ϋϥεʹ݁߹ͨ͠ੈք 7JFX$POUSPMMFS ͳΜͨΒ .FTTBHF&OUJUZ

Slide 20

Slide 20 text

਌Ϋϥεʹ݁߹ͨ͠ੈք 7JFX$POUSPMMFS ❗ ͳΜͨΒ .FTTBHF&OUJUZ

Slide 21

Slide 21 text

ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք 7JFX$POUSPMMFS .FTTBHF&OUJUZ "XFTPNF1SPUPDPM

Slide 22

Slide 22 text

ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք 7JFX$POUSPMMFS "XFTPNF1SPUPDPM

Slide 23

Slide 23 text

ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք 7JFX$POUSPMMFS "XFTPNF1SPUPDPM ผͷ&OUJUZ

Slide 24

Slide 24 text

ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք ͷ޾ͤͳͱ͜Ζ • ݺͼग़͠ଆ(͖ͬ͞ͷྫͰ͸ViewController)͕஌ͬ ͍ͯΔϝιου͕ݶఆ͞ΕΔ • ʮ͜ͷϝιου௚ͦ͏ͱࢥ͚ͬͨͲɺ૝ఆ֎ͷॴ͔ Βݺ͹Εͯͯม͑ΒΕͳ͍ʯΛ(͋Δఔ౓)ճආͰ͖ Δ • ϓϩτίϧʹద߹͍ͯ͑͠͞Ε͹͍͍ͷͰɺଞͷܕ ͱೖΕସ͑ͨΓ৽͘͠௥Ճͨ͠Γ͢Δͷָ͕͍͢͝

Slide 25

Slide 25 text

ϓϩτίϧ͚ͩͰ݁߹ͨ͠ੈք ͷͭΒ͍ͱ͜Ζ • ܕΛࢦఆͯ͠ಈ͘ͱ͖ΑΓϓϩτίϧ͔ΒΠϯελ ϯεʹΞΫηε͢Δͱ͖ॲཧ͕஗͍ • Xcodeͷʮఆٛ΁δϟϯϓʯ͕ͪΐͬͱෆศʹͳΔ • ϓϩτίϧ͕ཚཱͯ͘͠Δͱ໊લͱ͔ͪΌΜͱ෇͚ ͓͔ͯͳ͍ͱޙͰۤͦ͠͏ʁ • delegateͷதͰ͞Βʹdelegateͱ͔΍ͬͯΔͱΧ Φε

Slide 26

Slide 26 text

ϓϩτίϧ֦ு • Swift2͔Β௥Ճ͞Εͨϓϩτίϧ֦ு(Protocol Extension) • ࣮૷Λڧ੍͢ΔProtocolʹରͯ͠ɺσϑΥϧτ ͷ࣮૷ΛఆٛͰ͖Δɻ

Slide 27

Slide 27 text

femitΞϓϦʹ Ұॠ͋ͬͨίʔυ

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

ϓϩτίϧ֦ுΛ࢖͏ͱ • σϑΥϧτ࣮૷͚ͩͰ͍͍࣌͸ɺܕͷఆٛʹϓ ϩτίϧ໊Λॻ͖଍͚ͩ͢Ͱͦͷϓϩτίϧʹ ద߹Ͱ͖Δɻָɻ • ͋Δಛఆͷܕʹରͯ͠ϓϩτίϧ੍໿Λ͚ͭΔ ͱ͖͚ͩར༻ՄೳͳσϑΥϧτ࣮૷ΛఆٛͰ͖ Δ

Slide 30

Slide 30 text

·ͱΊ • ݺͼग़͠ݩ͔Βݟ͑Δൣғ͕ݶఆͰ͖Δͷྑ͍ • δΣωϦΫε+ܕਪ࿦ͰΧνοͱ͍͔ͯͯͭ͠ίʔ υ͸ॻ͖΍͍͢ • ܧঝͭΒ͍ • ࢀরܕͭΒ͍ͱ͍͏จ຺ͱ߹ΘͤͯΫϥεͰ͸ͳ ͘஋ܕͰܧঝͰ͖ͳ͍ߏ଄ମΛ࢖͓͏ͥΈ͍ͨͳ ෩ை͕͋Δ

Slide 31

Slide 31 text

͓ΘΓ