Swift API Design learning from Cocoa API changes
by
Kento Nagata
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 ւ֎ͷϒϩάͳͲ࠷৽ͷใΛΧδϡΞϧʹڞ༗͋͠͏ձͰ͢ɻ