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