Slide 1

Slide 1 text

API diffs͔Β iOS10Λໝ૝͢Δ 2016/06/28_iOS Creators' Meetup vol.1 Yutaro (@yutailang0119)

Slide 2

Slide 2 text

͓લ୭Αʁ • ໂా ༟ଠ࿠ (@yutailang0119) • iOS App Developer • ΞϥΠυΞʔΩςΫπ, Inc.ɺ৽ଔ2೥໨ • iOSྺ10ϲ݄ڧ(Objective-C : Swift = 9 : 1)

Slide 3

Slide 3 text

ࣾ಺ͰiOSΤϯδχΞ͸গ਺ • جຊWeb (PHP, Java) ͷձࣾ • அยతʹ͔࣍͠ظόʔδϣϯͷΩϟονΞο ϓ͕͞Εͯͳ͍͜ͱ͕ଟ͍

Slide 4

Slide 4 text

ࣾ಺ͰiOSΤϯδχΞ͸গ਺ • جຊWeb (PHP, Java) ͷձࣾ • அยతʹ͔࣍͠ظόʔδϣϯͷΩϟονΞο ϓ͕͞Εͯͳ͍͜ͱ͕ଟ͍ => ແཧ೉୊Λఏࣔ͞ΕΔ͜ͱ͕ଟ͍…

Slide 5

Slide 5 text

ʮʓʓΈ͍ͨͳʙʙɺ˚˚Έ͍ͨͳʙʙʯ ؾ͍ͮͨΒࣗ෼Ͱ΋Α͘Θ͔Βͳ͍ίʔυ͕૿͑Δ iOSͷόʔδϣϯΞοϓʹ௥ै͢Δͷ͕ਏ͍ ݱঢ়࢓༷͕ෆ໌ྎ

Slide 6

Slide 6 text

΍Γ͍ͨ͜ͱɺͰ͖Δ͜ͱΛ ͖ͪΜͱڞ༗Ͱ͖͍ͯΕ͹ ඪ४APIͰղܾͰ͖͍ͯͨ (͸ͣ)

Slide 7

Slide 7 text

ʲ໨ඪʳ API DiffsϕʔεͰ iOS10ͰมΘΔ͜ͱɺ Ͱ͖ͦ͏ͳ͜ͱΛ ਖ਼͘͠ཧղ͢Δ (΍Γ͍ͨ͜ͱ΋఻͑Δ)

Slide 8

Slide 8 text

ؾʹͳͬͨ͜ͱ • Interests, InterestsUI • UserNotifications, UserNotificationsUI • UIKit

Slide 9

Slide 9 text

1. Interests, InterestsUI https://developer.apple.com/reference/intents https://developer.apple.com/reference/intentsui

Slide 10

Slide 10 text

1. Interests, InterestsUI • SiriͱMapsʹؔΘΔFramework (SiriKit) • Ͱ͖Δ͜ͱ͸ి࿩ֻ͚ͨΓɺϝοηʔδૹͬͨΓ (Intents Domain 6ͭ) • ಛఆͷޠኮΛొ࿥ͯ͠ɺSiriʹೝࣝͤ͞Δ͜ͱ΋Մ ೳ • (࡞Δ࣌ʹ࿩͔͚͠Δͷஏ͔͍ͣ͠)

Slide 11

Slide 11 text

Intents Domain • Audio or video calling • Messaging • Payments • Searching photos • Workouts • Ride Booking @mo_to_44͞ΜͷεϥΠυ͕ৄ͍͠ͷͰͪ͜ΒΛ https://speakerdeck.com/mnat44/sirikit

Slide 12

Slide 12 text

Appleతʹ΋ iOS10͸SiriKitԡͬ͠Ά͍ (͕ɺϢʔβʔ͕࢖͍ͬͯΔֆ͕૝૾Ͱ͖ͳ͍…)

Slide 13

Slide 13 text

2. UserNotifications, UserNotificationsUI https://developer.apple.com/reference/usernotifications https://developer.apple.com/reference/usernotificationsui

Slide 14

Slide 14 text

2. UserNotifications, UserNotificationsUI • ௨஌ڐՄ͞Εͨ͜ͱΛCallBackϋϯυϧͰ͖ ΔΑ͏ʹͳΔʂʂʂ => ѻ͍΍͘͢ͳͬͨʂʂʂʂ UNUserNotificationCenter.current().requestAuthorization([.alert, .so und, .badge]) { (granted, error) in if granted == true { //ڐՄ͞Ε͍ͯΔ } else { //ڐՄ͞Ε͍ͯͳ͍ } } //ࠓͷઃఆঢ়ଶͷऔಘ΋Ͱ͖Δ UNUserNotificationCenter.current().getNotificationSettings { (settings) in }

Slide 15

Slide 15 text

2. UserNotifications, UserNotificationsUI • ϑΥΞάϥ΢ϯυͰ΋௨஌ΛදࣔͰ͖ΔΑ͏ ʹͳΔʂʂʂ => ಠࣗͷΞϥʔτग़͞ͳͯ͘ࡁΉ func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler handlerBlock: (UNNotificationPresentationOptions) -> Void) { //Roll banner and sound alert handlerBlock([.alert, .sound]) } ※ ศརͳ൒໘ɺPush͔ΒͷભҠʹΑͬͯɺͦΕ·Ͱͷϑϩʔ่͕յ͢ΔՄೳੑ͕͋ΔͷͰɺे෼ ͳߟྀ͕ඞཁ

Slide 16

Slide 16 text

2. UserNotifications, UserNotificationsUI • ௨஌ΛΧελϚΠζͰ͖Δʂʂʂ => ࣸਅɺΧϨϯμʔɺTextField౳

Slide 17

Slide 17 text

ᙱ͍ॴʹ΍ͬͱख͕ಧ͍ͨײ UXʹ௚݁͢ΔͷͰ ݸਓతʹ͸༏ઌ౓ߴ͍

Slide 18

Slide 18 text

3. UIKit https://developer.apple.com/library/prerelease/content/ releasenotes/General/iOS10APIDiffs/Swift/UIKit.html

Slide 19

Slide 19 text

UIColor https://developer.apple.com/videos/play/wwdc2016/712/ https://developer.apple.com/reference/uikit/uicolor/ 1648568-init

Slide 20

Slide 20 text

UIColor.init(displayP3Red:green:blue:alpha:) • Display P3 ʹରԠͨ͠ΠχγϟϥΠβ • දࣔͰ͖ͳ͍৔߹͸sRGBʹม׵͞ΕΔ • ݱঢ়iOSͰରԠ͍ͯ͠Δͷ͸iPad ProͷΈ => iPhone7͸Display P3͔΋ʁʁʁ

Slide 21

Slide 21 text

UITabBarItem https://developer.apple.com/reference/uikit/uitabbaritem

Slide 22

Slide 22 text

UITabBarItem.badgeColor UITabBarItem.setBadgeTextAttributes(_:for:) • TabBarItemʹ͚ͭΔόοδͷ৭Λ͍͡Δ͜ͱ ͕Ͱ͖ΔΑ͏ʹͳΔ => ੺஍ʹനจࣈҎ֎͕࢖͑ΔΑ͏ʹͳΔ • ஍ຯʹخ͍֦͠ு

Slide 23

Slide 23 text

UIViewPropertyAnimator https://developer.apple.com/videos/play/wwdc2016/216/ https://developer.apple.com/reference/uikit/ uiviewpropertyanimator

Slide 24

Slide 24 text

UIViewPropertyAnimator • iOS10͔ΒͷΞχϝʔγϣϯ • ΞχϝʔγϣϯͷPause͕Ͱ͖Δ • Ξχϝʔγϣϯͷ్தʹผͷΞχϝʔγϣϯΛ ։࢝Ͱ͖Δ • Ϣʔβʔͷૢ࡞ʹ߹ΘͤͯɺΞχϝʔγϣϯΛ ૢ࡞͢Δ͜ͱ΋Մೳ

Slide 25

Slide 25 text

جຊͷ࢖͍ํ let timing = UICubicTimingParameters(animationCurve: .easeInOut) let animator = UIViewPropertyAnimator(duration: 2.0, timingParameters: timing) animator.addAnimations { //Ξχϝʔγϣϯͷऴ఺Λఆٛ } animator.addCompletion {_ in //Ξχϝʔγϣϯऴྃ࣌ͷॲཧ } animator.startAnimation()

Slide 26

Slide 26 text

جຊͷ࢖͍ํ let timing = UICubicTimingParameters(animationCurve: .easeInOut) let animator = UIViewPropertyAnimator(duration: 2.0, timingParameters: timing) animator.addAnimations { //Ξχϝʔγϣϯͷऴ఺Λఆٛ } animator.addCompletion {_ in //Ξχϝʔγϣϯऴྃ࣌ͷॲཧ } animator.startAnimation()

Slide 27

Slide 27 text

Ξχϝʔγϣϯϑϩʔ animator.startAnimation() //ελʔτ ->ɹstatus: active animator.pauseAnimation() //ϙʔζ -> status: active animator.stopAnimation(_ withoutFinishing: Bool) //ετοϓ /* withoutFinishing: ture -> status: inactive false -> status: stopped */ animator.finishAnimation(at: UIViewAnimatingPosition) //ऴྃ /* status: inactive at: .end: Ξχϝʔγϣϯͷऴྃ఺ .start: Ξχϝʔγϣϯͷ։࢝఺ .current: ࠓͷ஍఺ */

Slide 28

Slide 28 text

UISpringTimingParametersͰ͜Μͳ͜ͱ΋Ͱ͖ΔΒ͍͠ https://developer.apple.com/videos/play/wwdc2016/216/

Slide 29

Slide 29 text

Ͱ͖ͦ͏ͳΞχϝʔγϣϯΛ νʔϜͰߟ͍͑ͨ (؆୯ʹͳͬͨͱ͸͍͑ɺΞχϝʔγϣϯ͸َ໳)

Slide 30

Slide 30 text

• (iOS9·ͰΛͲ͏͢Δ͔ͷ໰୊ௐࠪͭͭ͠ɺ) UserNotifications͸ૣΊʹରԠ͍ͨ͠ • (ݸਓతʹ) SiriKit࢖ͬͯΈ͍ͨ • Ξχϝʔγϣϯ͸΋͏গ͠ௐ͕ࠪඞཁ ॴײ + ఏҊ

Slide 31

Slide 31 text

͜͜·Ͱ

Slide 32

Slide 32 text

ʲએ఻ʳ

Slide 33

Slide 33 text

PyCon JP 2016ʹདྷ·ͤΜ͔? • https://pycon.jp/2016/ • WebɺαΠΤϯε౳༷ʑͳόοΫάϥ΢ϯυ ͷਓ͕͍ΔͷͰɺiOSͷਓ΋ָ͠ΊΔ͸ͣ • 2೔ؒͷ͓னͱॳ೔ͷύʔςΟ୅ࠐͰ1ສԁ!!!

Slide 34

Slide 34 text

• νϡʔτϦΞϧ: 9/20 • ΧϯϑΝϨϯε: 9/21-22 • εϓϦϯτ: 9/23-24 νέοτ: http://pyconjp.connpass.com/event/30692/ PyCon JP 2016։࠵֓ཁ

Slide 35

Slide 35 text

• https://github.com/pyconjp/pyconjp-ios • 7݄຤ϦϦʔε༧ఆ (·ͩશવ׬੒ͯ͠ͳ͍) • PR͓଴͍ͪͯ͠·͢ʂʂʂ PyCon JP 2016 iOSΞϓϦ࡞ͬͯ·͢

Slide 36

Slide 36 text

ʲ؇ืʳ (cocoapods-keysҎ֎Ͱ) XcodeϓϩδΣΫτΛ Git౳Ͱެ։͢Δ࣌ͷ APIKeyͷӅ͠ํ