Slide 1

Slide 1 text

©2019 Wantedly, Inc. Swift API Design
 learning from Cocoa API changes try! Swift Pre Talks 2019 Mar 19, 2019 - Kento Nagata

Slide 2

Slide 2 text

©2018 Wantedly, Inc. ,FOUP/BHBUB 8BOUFEMZ *OD4PGUXBSF&OHJOFFS 8IBU*EPOPX ɾ(SPXUIPG8BOUFEMZ7JTJU 
 &OHJOFFSJOH ɾ3BJMTZFBST ɾJ044XJGUZFBS/FX

Slide 3

Slide 3 text

©2019 Wantedly, Inc. Cocoa APIͷมߋ͔ΒAPI DesignΛཧղ͢Δ ࠓ೔࿩͢͜ͱ

Slide 4

Slide 4 text

©2019 Wantedly, Inc. TXJGUPSHʹ͋Δ
 l"1*%FTJHO(VJEFMJOFTz
 ΛಡΜͩ͜ͱ͕͋Δํ͸
 ͨ͘͞Μ͍Δͱࢥ͍·͢

Slide 5

Slide 5 text

©2019 Wantedly, Inc. l"1*%FTJHO(VJEFMJOFTz
 ͸ඇৗʹॏཁ

Slide 6

Slide 6 text

©2019 Wantedly, Inc. ͜ͷΑ͏ͳࢦ਑΍׳श͸
 ࣮ࡍͷྫΛݟͨํ͕ૣ͍

Slide 7

Slide 7 text

©2019 Wantedly, Inc. ΋ͬͱ΋࣮ྫͱͯ͠༏Ε͍ͯΔͷ͕ɺ
 J044%, $PDPBͰ͋Γ "QQMFͷίʔυͰ͢

Slide 8

Slide 8 text

©2019 Wantedly, Inc. ͦͷલʹl"1*%FJHO(VJEFMJOFTzͷ
 ಺༰ͷུ֓ʹ͍͓ͭͯ͞Β͍͠·͢

Slide 9

Slide 9 text

©2019 Wantedly, Inc. 'VOEBNFOUBMT /BNJOH w 1SPNPUF$MFBS6TBHF w 4USJWFGPS'MVFOU6TBHF w 6TF5FSNJOPMPHZ8FMM $POWFOUJPOT w (FOFSBM$POWFOUJPOT w 1BSBNFUFST w "SHVNFOU-BCFMT 4QFDJBM *OTUSVDUJPOT "1*%FTJHO(VJEFMJOFT IUUQTTXJGUPSHEPDVNFOUBUJPOBQJEFTJHOHVJEFMJOFT

Slide 10

Slide 10 text

©2019 Wantedly, Inc. 'VOEBNFOUBMT /BNJOH w 1SPNPUF$MFBS6TBHF w 4USJWFGPS'MVFOU6TBHF w 6TF5FSNJOPMPHZ8FMM $POWFOUJPOT w (FOFSBM$POWFOUJPOT w 1BSBNFUFST w "SHVNFOU-BCFMT 4QFDJBM *OTUSVDUJPOT "1*%FTJHO(VJEFMJOFT IUUQTTXJGUPSHEPDVNFOUBUJPOBQJEFTJHOHVJEFMJOFT Ұ൪ॏཁͳࢦ਑͕ॻ͔Ε͍ͯΔɻ

Slide 11

Slide 11 text

©2019 Wantedly, Inc. 'VOEBNFOUBMT /BNJOH w 1SPNPUF$MFBS6TBHF w 4USJWFGPS'MVFOU6TBHF w 6TF5FSNJOPMPHZ8FMM $POWFOUJPOT w (FOFSBM$POWFOUJPOT w 1BSBNFUFST w "SHVNFOU-BCFMT 4QFDJBM *OTUSVDUJPOT "1*%FTJHO(VJEFMJOFT IUUQTTXJGUPSHEPDVNFOUBUJPOBQJEFTJHOHVJEFMJOFT ໌֬͞Λ࣮ݱ͢ΔͨΊͷϧʔϧɺ
 ΑΓ۩ମతͳύλʔϯɺޠኮͷબͼํ

Slide 12

Slide 12 text

©2019 Wantedly, Inc. 'VOEBNFOUBMT /BNJOH w 1SPNPUF$MFBS6TBHF w 4USJWFGPS'MVFOU6TBHF w 6TF5FSNJOPMPHZ8FMM $POWFOUJPOT w (FOFSBM$POWFOUJPOT w 1BSBNFUFST w "SHVNFOU-BCFMT 4QFDJBM *OTUSVDUJPOT "1*%FTJHO(VJEFMJOFT IUUQTTXJGUPSHEPDVNFOUBUJPOBQJEFTJHOHVJEFMJOFT ΑΓ۩ମతͳέʔεͰͷ׳शɺ
 ύϥϝʔλ΍Ҿ਺ϥϕϧͷॻ͖ํ

Slide 13

Slide 13 text

©2019 Wantedly, Inc. 'VOEBNFOUBMT /BNJOH w 1SPNPUF$MFBS6TBHF w 4USJWFGPS'MVFOU6TBHF w 6TF5FSNJOPMPHZ8FMM $POWFOUJPOT w (FOFSBM$POWFOUJPOT w 1BSBNFUFST w "SHVNFOU-BCFMT 4QFDJBM *OTUSVDUJPOT "1*%FTJHO(VJEFMJOFT IUUQTTXJGUPSHEPDVNFOUBUJPOBQJEFTJHOHVJEFMJOFT ͦͷଞɺಛघͳέʔεʹ͍ͭͯ

Slide 14

Slide 14 text

©2019 Wantedly, Inc. 'VOEBNFOUBMT /BNJOH w 1SPNPUF$MFBS6TBHF w 4USJWFGPS'MVFOU6TBHF w 6TF5FSNJOPMPHZ8FMM $POWFOUJPOT w (FOFSBM$POWFOUJPOT w 1BSBNFUFST w "SHVNFOU-BCFMT 4QFDJBM *OTUSVDUJPOT "1*%FTJHO(VJEFMJOFT IUUQTTXJGUPSHEPDVNFOUBUJPOBQJEFTJHOHVJEFMJOFT ࠓ೔औΓ্͛Δ෦෼

Slide 15

Slide 15 text

©2019 Wantedly, Inc. ϧʔϧͷదԠྫΛݟΔ J04ͰͷมߋΛओʹݟ͍ͯ͘

Slide 16

Slide 16 text

©2019 Wantedly, Inc. ඞཁͷͳ͍ݴ༿Λ࡟Δ /BNJOH1SPNPUF$MFBS6TBHFl0NJUOFFEMFTTXPSETz

Slide 17

Slide 17 text

©2019 Wantedly, Inc. UIActivity.perform #FGPSF - iOS 9 Activity()

Slide 18

Slide 18 text

©2019 Wantedly, Inc. UIActivity.perform() "GUFS iOS 10 -

Slide 19

Slide 19 text

©2019 Wantedly, Inc. UIActivity.perform() "GUFS UIActivity.performActivity() #FGPSF activityΛperform͢Δͷ͸ϨγʔόΛݟΕ͹ࣗ໌ - iOS 9 iOS 10 -

Slide 20

Slide 20 text

©2019 Wantedly, Inc. UIResponder.pressesBegan(_: Set, withEvent: UIPressesEvent?) #FGPSF - iOS 9

Slide 21

Slide 21 text

©2019 Wantedly, Inc. UIResponder.pressesBegan(_: Set, with: UIPressesEvent?) "GUFS iOS 10 -

Slide 22

Slide 22 text

©2019 Wantedly, Inc. UIResponder.pressesBegan(_: Set, with: UIPressesEvent?) "GUFS UIResponder.pressesBegan(_: Set, withEvent: UIPressesEvent?) #FGPSF ܕΛݟΕ͹Θ͔Δݴ༿ iOS 10 - - iOS 9

Slide 23

Slide 23 text

©2019 Wantedly, Inc. ܕ৘ใ͕ऑ͍΋ͷΛิ׬͢Δ /BNJOH1SPNPUF$MFBS6TBHFl$PNQFOTBUFGPSXFBLUZQFJOGPSNBUJPOz

Slide 24

Slide 24 text

©2019 Wantedly, Inc. UITableView.rectForSection(_ section: Int) -> CGRect #FGPSF - iOS 9

Slide 25

Slide 25 text

©2019 Wantedly, Inc. UITableView.rect(forSection: Int) -> CGRect "GUFS iOS 10 -

Slide 26

Slide 26 text

©2019 Wantedly, Inc. UITableView.rect(forSection: Int) -> CGRect "GUFS UITableView.rectForSection(_ section: Int) -> CGRect #FGPSF ܕ͚ͩͰ͸໾ׂ͸෼͔Βͳ͍ iOS 10 - - iOS 9

Slide 27

Slide 27 text

©2019 Wantedly, Inc. ࠷ॳͷҾ਺͕લஔࢺ۟ͷҰ෦Λͳ͢৔߹͸ɺ
 ͦΕʹҾ਺ϥϕϧΛ͚ͭΔ $POWFOUJPOT1BSBNFUFST l8IFOUIFpSTUBSHVNFOUGPSNTQBSUPGBQSFQPTJUJPOBMQISBTF HJWFJUBOBSHVNFOUMBCFMz

Slide 28

Slide 28 text

©2019 Wantedly, Inc. UIView.point #FGPSF - iOS 9 Inside(_: CGPoint, withEvent: UIEvent?) -> Bool

Slide 29

Slide 29 text

©2019 Wantedly, Inc. "GUFS UIView.point(inside: CGPoint, with: UIEvent?) -> Bool iOS 10 -

Slide 30

Slide 30 text

©2019 Wantedly, Inc. "GUFS UIView.point(inside: CGPoint, with: UIEvent?) -> Bool UIView.pointInside(_: CGPoint, withEvent: UIEvent?) -> Bool #FGPSF લஔࢺ۟ΛϥϕϧʹؚΊΔ iOS 10 - - iOS 9

Slide 31

Slide 31 text

©2019 Wantedly, Inc. UIViewController.willMove(toParentViewController: UIViewController?) "GUFS UIViewController.willMoveToParentViewController(_: UIViewController?) #FGPSF ໾ׂ͕͸͖ͬΓ͠ͳ͍৔߹͸໨తޠΛ໌ه

Slide 32

Slide 32 text

©2019 Wantedly, Inc. ҰํͰɺ࠷ॳͷҾ਺͕จ๏తͳϑϨʔζʹ
 ؚ·ΕΔ৔߹͸ɺϥϕϧΛআ͘ $POWFOUJPOT1BSBNFUFST l0UIFSXJTF JGUIFpSTUBSHVNFOUGPSNTQBSUPGBHSBNNBUJDBMQISBTF PNJUJUTMBCFMz

Slide 33

Slide 33 text

©2019 Wantedly, Inc. UIView.sendSubviewToBack(_: UIView) #FGPSF - iOS 9

Slide 34

Slide 34 text

©2019 Wantedly, Inc. UIView.sendSubview(toBack: UIView) "GUFS iOS 10 -

Slide 35

Slide 35 text

©2019 Wantedly, Inc. UIView.sendSubview(toBack: UIView) "GUFS UIView.sendSubviewToBack(_: UIView) #FGPSF toBack͸લஔࢺ͚۟ͩͲɺ
 Ҿ਺͸toBackͷ໨తޠͰ͸ͳ͍ iOS 10 - ? - iOS 9

Slide 36

Slide 36 text

©2019 Wantedly, Inc. UIView.sendSubviewToBack(_: UIView) /PX ࠷ॳͷҾ਺͸sendͷ໨తޠsubviewͱͯ͠
 ϝιου໊ʹؚ·Ε͍ͯΔ iOS 12 ಉ͡΋ͷ

Slide 37

Slide 37 text

©2019 Wantedly, Inc. ·ͱΊ

Slide 38

Slide 38 text

©2019 Wantedly, Inc. "1*ͷσβΠϯʹ͍ͭͯ໎ͬͨ࣌ɺ
 ·ͣ͸(VJEFMJOF $PDPB΍ελϯμʔυϥΠϒϥϦ͸࠷ߴͷ͓खຊ ·ͱΊ

Slide 39

Slide 39 text

©2019 Wantedly, Inc. "1*ͷσβΠϯʹ͍ͭͯ໎ͬͨ࣌ɺ
 ·ͣ͸(VJEFMJOF $PDPB΍ελϯμʔυϥΠϒϥϦ͸࠷ߴͷ͓खຊ ·ͱΊ

Slide 40

Slide 40 text

©2019 Wantedly, Inc. "QQFOEJY

Slide 41

Slide 41 text

©2019 Wantedly, Inc. "1*%FTJHO(VJEFMJOFTIUUQTTXJGUPSH EPDVNFOUBUJPOBQJEFTJHOHVJEFMJOFT J04"1*%J⒎TIUUQTEFWFMPQFSBQQMFDPNMJCSBSZ BSDIJWFSFMFBTFOPUFT(FOFSBMJ04"1*%J⒎T4XJGU6*,JUIUNM "QQFOEJY

Slide 42

Slide 42 text

©2019 Wantedly, Inc. ຖिՐ༵೔J04/JHIUΛ։࠵͍ͯ͠·͢ 13 IUUQTHJUIVCDPNXBOUFEMZJPT@OJHIU JPT@OJHIU ւ֎ͷϒϩάͳͲ࠷৽ͷ৘ใΛΧδϡΞϧʹڞ༗͋͠͏ձͰ͢ɻ