Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SiriKit

 SiriKit

Motoki Narita

June 23, 2016
Tweet

More Decks by Motoki Narita

Other Decks in Programming

Transcript

  1. 4JSJ,JU
    QPUBUPUJQT
    .PUPLJ/BSJUB
    [email protected]@

    View Slide

  2. ࣗݾ঺հ
    w ੒ాݩًʢͳΓͨ΋ͱ͖ʣ
    w [email protected]@
    w J04ΤϯδχΞ
    w ݸਓͰ΋ΧϝϥΞϓϦΛ࡞ͬͨΓ
    w 88%$ߦ͚ͳ͔ͬͨͷͰDBUDI88%$ͱ͍͏ே͔࣌Β
    88%$ͷ৘ใަ׵Λ͢ΔษڧձΛ88%$ͷؒຖே࣌ʹ
    ى͖ͯ։࠵ͯ͠·ͨ͠

    View Slide

  3. 4JSJ,JU

    View Slide

  4. 4JSJ,JU֓ཁ
    w 4JSJ,JUͱ͍͏ϑϨʔϜϫʔΫ͸ͳ͍
    w *OUFOUTGSBNFXPSLͱ*OUFOUT6*GSBNFXPSLΛ࢖ͬ
    ࣮ͯ૷͢Δ
    w 4JSJ,JU͕αϙʔτ͢Δ*OUFOUT%PNBJOͷΈɺ

    ࣮૷͢Δ͜ͱ͕Ͱ͖Δʢछྨʣ

    View Slide

  5. 4JSJ͕΍ͬͯ͘ΕΔ͜ͱ

    View Slide

  6. 4JSJ͕΍ͬͯ͘ΕΔ͜ͱ
    w Ϣʔβʔͷݴ༿Λղऍͯ͠*OUFOUʢҙਤʣΦϒ
    δΣΫτʹม׵Λߦͬͯ͘ΕΔ
    w &YUFOTJPOͰ͸͜ͷ*OUFOUΦϒδΣΫτΛར༻ͯ͠ద
    ੾ͳॲཧΛߦ͏Α͏ʹ࣮૷Λߦ͏
    w ྫ͑͹ϝοηʔδΛૹ৴͢Δ৔߹͸ड৴ऀͱจݴ
    ͕ඞཁʹͳΔͷͰɺड৴ऀͱจݴΛ*OUFOU͔Βऔ
    Γग़ͯ͠ΞϓϦ಺ͷॲཧΛ࣮ߦ

    View Slide

  7. *OUFOUT%PNBJO

    View Slide

  8. 4JSJ,JU%PNBJOT
    w "VEJPPSWJEFPDBMMJOH
    w 4UBSUBOBVEJPDBMM
    w 4UBSUBWJEFPDBMM
    w 4FBSDIUIFVTFS`TDBMMIJTUPSZ
    w .FTTBHJOH
    w 4FOEBNFTTBHF
    w 4FBSDIGPSNFTTBHFT
    w 1IPUP4FBSDI
    w 4FBSDIGPSQIPUPT
    w 1MBZBQIPUPTMJEFTIPX
    w 1BZNFOUT
    w 4FOEBQBZNFOUUPBOPUIFSVTFS
    w 3FRVFTUBQBZNFOUGSPNBOPUIFS
    VTFS
    w 8PSLPVUT
    w 4UBSUBXPSLPVU
    w 1BVTFBXPSLPVU
    w 3FTVNFBXPSLPVU
    w &OEBXPSLPVU
    w $BODFMBXPSLPVU
    w 3JEFCPPLJOH
    w (FUBMJTUPGBWBJMBCMFSJEFT
    w #PPLBSJEF
    w (FUUIFTUBUVTPGBCPPLFESJEF

    View Slide

  9. ࣮૷ํ๏

    View Slide

  10. 4JSJ,JUαϙʔτͷͨΊʹ΍Δ͜ͱ
    *OUFOUT&YUFOTJPOλʔήοτΛΞϓϦʹ௥Ճ
    QMJTUʹඞཁͳ৘ใΛهࡌ͢Δ
    &YUFOTJPOΛ࣮૷͢Δ

    View Slide

  11. *OUFOUT&YUFOTJPOλʔήοτ
    ΛΞϓϦʹ௥Ճ

    View Slide

  12. w ΞϓϦʹλʔήοτͱͯ͠௥Ճ
    w J04Ͱ௥Ճ͞Εͨ&YUFOTJPOͱಉ͡

    View Slide

  13. QMJTUʹඞཁͳ৘ใΛهࡌ͢Δ

    View Slide

  14. *OUFOUT4VQQPSUFEʹରԠ͢Δ*OUFOUTΛهࡌ͢Δ

    هࡌ͢Δͷ͸*/4UBSU8PSLPVU*OUFOUͳͲͷΫϥε໊
    *OUFOUT4VQQPSUFE *OUFOUT3FTUSJDUFE8IJMF-PDLFE
    /4&YUFOTJPO"UUSJCVUFT
    /4&YUFOTJPO
    *OGPQMJTU

    View Slide

  15. ϓϥΠόγʔʹ഑ྀ͢Δඞཁ͕͋Δ৔߹
    *OUFOUT3FTUSJDUFE8IJMF-PDLFEʹهࡌ͢Δ
    *OUFOUT4VQQPSUFE *OUFOUT3FTUSJDUFE8IJMF-PDLFE
    /4&YUFOTJPO"UUSJCVUFT
    /4&YUFOTJPO
    *OGPQMJTU

    View Slide

  16. w ΞϓϦ಺ʹݻ༗ͷݴ༿ʢ6CFS9ͱ͔ʣ͕͋Δ৔߹
    ͸"QQ*OUFOU7PDBCVMBSZQMJTUʹొ࿥Λ͢Δͱ4JSJ͕
    ͦͷϫʔυΛղऍͰ͖ΔΑ͏ʹͳΔ

    View Slide

  17. &YUFOTJPOΛ࣮૷͢Δ

    View Slide

  18. 3FTPMWFˠ$POpSNˠ)BOEMF

    View Slide

  19. ॲཧͷྲྀΕ
    IUUQTEFWFMPQFSBQQMFDPNMJCSBSZQSFSFMFBTFDPOUFOUEPDVNFOUBUJPO*OUFOUT$PODFQUVBM4JSJ*OUFHSBUJPO(VJEF
    $SFBUJOHUIF*OUFOUT&[email protected]$)48

    View Slide

  20. ॲཧͷྲྀΕ
    IUUQTEFWFMPQFSBQQMFDPNMJCSBSZQSFSFMFBTFDPOUFOUEPDVNFOUBUJPO*OUFOUT$PODFQUVBM4JSJ*OUFHSBUJPO(VJEF
    $SFBUJOHUIF*OUFOUT&[email protected]$)48
    *OUFOUͷύϥϝʔλͷόϦσʔγϣϯΛߦ͏

    View Slide

  21. ॲཧͷྲྀΕ
    IUUQTEFWFMPQFSBQQMFDPNMJCSBSZQSFSFMFBTFDPOUFOUEPDVNFOUBUJPO*OUFOUT$PODFQUVBM4JSJ*OUFHSBUJPO(VJEF
    $SFBUJOHUIF*OUFOUT&[email protected]$)48
    *OUFOUʹର͢ΔϨεϙϯεΛੜ੒
    λεΫ࣮ߦͷͨΊͷ࠷ऴతͳ֬ೝΛߦ͏

    View Slide

  22. ॲཧͷྲྀΕ
    IUUQTEFWFMPQFSBQQMFDPNMJCSBSZQSFSFMFBTFDPOUFOUEPDVNFOUBUJPO*OUFOUT$PODFQUVBM4JSJ*OUFHSBUJPO(VJEF
    $SFBUJOHUIF*OUFOUT&[email protected]$)48
    *OUFOUʹର͢ΔϨεϙϯεͷੜ੒
    λεΫͷ࣮ߦ

    View Slide

  23. 4JSJ,JUॲཧͷྲྀΕ
    w 3FTPMWFͰύϥϝʔλͷղܾΛ
    ߦ͏
    w $POpSNͰλεΫ࣮ߦલͷ࠷ऴ
    తͳ֬ೝΛߦ͏
    w )BOEMFͰλεΫΛ࣮ߦ͢Δ
    3FTPMWF
    $POpSN
    )BOEMF

    View Slide

  24. UJQT

    View Slide

  25. UJQT
    w γϛϡϨʔλͰςετͰ͖ͳ͍ʢ࣮ػͷΈʣ
    w 4JSJ͸௚ͪʹΞϓϦͷ&YUFOTJPOΛೝࣝͯ͘͠Εͳ͍
    w 4JSJ͸ΞϓϦͷ&YUFOTJPOΛ͙͢ʹೝࣝͯ͘͠Εͳ
    ͍ʢ਺෼͔͔Δ͔΋ʣ
    w *OGPQMJTUΛमਖ਼ͨ͠Γ͢Δࡍ΋ಉ༷
    w ઃఆΞϓϦ͔Β4JSJରԠΞϓϦ͕4JSJΛ࢖༻͢Δ͜ͱ
    ΛڐՄ͢Δඞཁ͕͋Δ

    View Slide

  26. UJQT
    w 4JSJ͔ΒͷೖྗΛॲཧ͢ΔͨΊͷ&NCFEEFE
    GSBNFXPSLTΛ࡞੒͢Δ
    w ௨৴ॲཧɺσʔλϞσϧԽɺϩδοΫͷ࣮૷͸
    &NCFEEFEGSBNFXPSLT಺Ͱߦ͏
    w &YUFOTJPOλʔήοτͷ໾ׂ͸ΤϯτϦϙΠϯτ
    ͚ͩʹ͢Δ

    View Slide

  27. UJQT
    w 6OJU5FTUΛॻ͜͏
    w *OUFOUͷϞοΫΛ࡞ͬͯ6OJU5FTUΛॻ͘͜ͱ͕Մ
    ೳʹͳΔ
    w ϢʔβʔͷೖྗΛ*OUFOUԽ͢Δͷ͸4JSJʹҕͶΒ
    Ε͍ͯΔͷͰɺ*OUFOUΛϞοΫʹͯ͠ϩδοΫͷ
    ςετΛߦ͏
    w ԿΑΓ΋஻ͬͯσόοά͢Δ΍ΓͮΒ͞ʢஏ͔ͣ
    ͠͞ʣΛײ͡Δػձ͕ݮΔʢ͸ͣʣ

    View Slide

  28. $PEF

    View Slide

  29. import Intents
    import IntentsExampleKit
    class IntentHandler: INExtension {
    override func handler(for intent: INIntent) -> AnyObject {
    return IntentExampleHandler()
    }
    }

    View Slide

  30. import Foundation
    import Intents
    public final class IntentExampleHandler: NSObject, INStartWorkoutIntentHandling,
    INEndWorkoutIntentHandling {
    public func resolveWorkoutName(forStartWorkout intent: INStartWorkoutIntent, with
    completion: (INStringResolutionResult) -> Void) {
    let resolutionResult = INStringResolutionResult.success(with: "Running")
    completion(resolutionResult)
    }
    public func confirm(startWorkout startWorkoutIntent: INStartWorkoutIntent,
    completion: (INStartWorkoutIntentResponse) -> Void) {
    let userActivity = NSUserActivity(activityType:
    NSStringFromClass(INStartWorkoutIntent))
    let response = INStartWorkoutIntentResponse(code: .success, userActivity:
    userActivity)
    completion(response)
    }
    public func handle(startWorkout startWorkoutIntent: INStartWorkoutIntent, completion:
    (INStartWorkoutIntentResponse) -> Void) {
    let userActivity = NSUserActivity(activityType:
    NSStringFromClass(INStartWorkoutIntent))
    let response = INStartWorkoutIntentResponse(code: .success, userActivity:
    userActivity)
    completion(response)
    }
    }

    View Slide

  31. ·ͱΊ

    View Slide

  32. ·ͱΊ
    w छྨͷ*OUFOUT%PNBJOΛαϙʔτ
    w 4JSJ͕*OUFOUΦϒδΣΫτʹม׵ͯ͘͠ΕΔ
    w *OGPQMJTUʹαϙʔτ͢Δ*OUFOUΛهࡌ
    w 3FTPMWFͰύϥϝʔλͷόϦσʔγϣϯ $POpSNͰ֬ೝɺ
    )BOEMFͰλεΫͷ࣮ߦ
    w *OUFOUΛϋϯυϦϯά͢ΔϩδοΫपΓ͸&NCFEEFE
    'SBNFXPSLʹ࣮૷
    w ͠Ό΂Βͳ͍ͱߦ͚ͳ͍ͷͰσόοά͕΍ΓͮΒ͍

    ʢஏ͔͍ͣ͠ʣ
    w 65Λॻ͜͏

    View Slide

  33. References
    • https://developer.apple.com/library/prerelease/content/documentation/Intents/Conceptual/
    SiriIntegrationGuide/index.html
    • https://developer.apple.com/library/prerelease/content/samplecode/UnicornChat/
    Introduction/Intro.html#//apple_ref/doc/uid/TP40017332
    • https://developer.apple.com/library/prerelease/content/documentation/Intents/Conceptual/
    SiriIntegrationGuide/SiriDomains.html#//apple_ref/doc/uid/TP40016875-CH9-SW2
    • https://developer.apple.com/reference/intents
    • https://developer.apple.com/reference/intentsui
    • https://developer.apple.com/library/prerelease/content/documentation/Intents/Conceptual/
    SiriIntegrationGuide/SpecifyingCustomVocabulary.html#//apple_ref/doc/uid/TP40016875-
    CH6-SW1
    • https://developer.apple.com/videos/play/wwdc2016/217/
    • https://developer.apple.com/videos/play/wwdc2016/225/

    View Slide

  34. ͓ΘΓ

    View Slide