Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CarPlayの対応方法と日本での現状
Search
Yuji Hato
August 20, 2016
Technology
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CarPlayの対応方法と日本での現状
Yuji Hato
August 20, 2016
More Decks by Yuji Hato
See All by Yuji Hato
ABEMAにおける 生成AI活用の現在地 / The Current Status of Generative AI at ABEMA
dekatotoro
1
1.3k
ABEMAモバイルアプリ開発のDevOps戦略
dekatotoro
1
800
Multiplatform Engineering Roadmap for the Future
dekatotoro
1
190
Introduction to RIBs
dekatotoro
5
1.5k
継続的な開発スタイル 「AbemaTV iOSアプリを週一で リリースしている話」
dekatotoro
6
4.3k
iOS Adaptive UI - 解像度の異なるデバイスや画面の向きに対応する 最適なレイアウトへ -
dekatotoro
0
560
動画アプリをなめらかに動かす技術 - iOS -
dekatotoro
0
520
5分で学ぶ差分更新とRxDataSources
dekatotoro
0
390
AbemaTV モバイルアプリの開発体制と 開発プロセスの話
dekatotoro
0
290
Other Decks in Technology
See All in Technology
Context Ontology Accelerator 入門 (業務データの意味を、AI エージェントに渡す)
inariku
PRO
3
560
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
130
Kiro Crew 入門 (手を離しても進む仕事) | 目指せ Kiro マスター 11
inariku
PRO
4
590
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
230
公共システムAdventCalendar2026
toru_kubota
0
280
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
950
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
0
670
超⼩型・多⾔語検索モデル Bekko Embedding
hotchpotch
1
130
新卒エンジニア、 介護士になる
ryu1013
1
690
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
180
The Author Pays
hiccupps
0
120
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
1
7.4k
Featured
See All Featured
We Are The Robots
honzajavorek
0
440
How GitHub (no longer) Works
holman
316
150k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
60k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.8k
Code Reviewing Like a Champion
maltzj
529
40k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.2k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
670
BBQ
matthewcrist
90
10k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Transcript
CarPlayͷରԠํ๏ͱ ຊͰͷݱঢ় iOSDC Japan 2016 Yuji Hato
About me Yuji Hato CyberAgent, Inc. / AbemaTV, Inc. dekatotoro
@dekatotoro Contributed service
What is CarPlay ରԠঢ়گ ରԠํ๏ UI ࣮ iOS10 ৽ػೳ ·ͱΊ
What is CarPlay • 20143݄3ʹCarPlay͕ਖ਼ࣜൃද • iPhoneΛΧʔφϏͷंࡌػثʹ࿈ಈͤ͞Δ γεςϜ • MapsɺMusicɺPhoneɺMessagesɺPodcastsͳͲͷ
iOSΞϓϦSiriΛंࡌσΟεϓϨΠͰૢ࡞Ͱ͖Δ • αʔυύʔςΟͷAudioΞϓϦରԠՄೳ • ຊମΞϓϦͷҰ෦ͱͯ͠ಈ࡞͢Δ
IUUQXXXBQQMFDPNKQJPTDBSQMBZ
What is CarPlay ରԠঢ়گ ରԠํ๏ UI ࣮ iOS10 ৽ػೳ ·ͱΊ
ରԠ Device
ରԠ Device • iPhone5Ҏ্ • iPadɺiPodʹରԠ͍ͯ͠ͳ͍ IUUQXXXBQQMFDPNKQJPTDBSQMBZ
ରԠ iOS
ରԠ iOS • iOS7.1Ҏ্ • iOS8.4ɺiOS9.0ͰAPIʹগ͠มߋ͋Γ • iOS10ͰUIɺAPIʹมߋ͕ೖΔ
ରԠ ΞϓϦ
ରԠ ΞϓϦ • Tuneln Radio • MLB.com At Bat •
NHK WORLD TV ? • Audible • VOX • Audio Books • Spotify • AWA ຊ ւ֎ etc…
ରԠ φϏ
ରԠ φϏ ७ਖ਼φϏ ରԠφϏ ରԠंछ τϤλ εζΩ ଟػೳϝϞϦʔφϏήʔγϣϯ
ΠάχεɺιϦΦɺεϖʔγΞɺϋεϥʔ ࢈ ϓϨϛΞϜφϏ બφϏ࣍ୈ ϗϯμ ελϯμʔυφϏҎ্ બφϏ࣍ୈɺ"DDPSEɺ-FHFOEº Ϛπμ ࡾඛ Ԥभ͚ύδΣϩɻຊ·ͩະରԠ εόϧ ࣍ظΠϯϓϨοα ϕϯπ " # $-" $-4 (-" (-&ɺࠓޙॱ࣍ #.8 "VEJ " 2ɻࠓޙॱ࣍ 78 $PNQPTJUJPONFEJB /FX1PMP 5JHVBOͳͲɻࠓޙॱ࣍ (. Ҏ߱ൃചͷશϞσϧରԠ 'PSE ൃചͷશϞσϧରԠ 7PMWP 9$4 7 αʔυύʔςΟ ରԠφϏ ύΠΦχΞ 41)%" ΞϧύΠϯ J-9 ຊͰະൃച ϝʔΧʔϗʔϜϖʔδͳͲ͔Βͷಠࣗௐ 2016/08/14ݱࡏ
What is CarPlay ରԠঢ়گ ରԠํ๏ UI ࣮ iOS10 ৽ػೳ ·ͱΊ
ରԠํ๏ 1. ։ൃ͍ͨ͠ࢫΛਃ͢Δ Լه͔ΒࣗͷΞϓϦͰCarPlayʹରԠ͍ͨ͠ࢫΛਃ͢Δ https://developer.apple.com/contact/carplay/
ରԠํ๏ 2. Agreementͷૹ 1ͷਃ͕OKͷ߹ɺAgreement͕ૹΒΕͯ͘ΔͷͰ༰Λ֬ೝ͠ ͯهೖɾॺ໊ͯ͠ฦૹ
ରԠํ๏ 3. TeamIDͷ֬ೝ Agreement͕ͳ͚ΕɺTeamIDΛฉ͔ΕΔͷͰAppleʹ͑Δ ※͜ͷλΠϛϯάͰProgramingΨΠυૹΒΕ͖ͯ·͢
ରԠํ๏ 4. Provisioning Profileͷ࠶࡞ AppleʹΑΓCarPlay։ൃͷઃఆ͕༗ޮʹ͞ΕΔͱɺ Porvisioning Profile࡞࣌ʹCarPlayͷEntitlementsઃఆ͕ग़ͯ ͘ΔΑ͏ʹͳΓ·͢ɻ
ରԠํ๏ 5. Simulator CarPlay༻ͷSimulatorΛͬͯ։ൃΛ͢Δ͜ͱ͕Ͱ͖·͢
What is CarPlay ରԠঢ়گ ରԠํ๏ UI ࣮ iOS10 ৽ػೳ ·ͱΊ
UI • Ϧετදࣔ • ֊ߏ • ࠶ੜදࣔ • Τϥʔදࣔ
UI Ϧετදࣔ/֊ߏ ୈ1֊ ୈ2֊ ୈ3֊
UI ࠶ੜදࣔ
UI Τϥʔදࣔ
What is CarPlay ରԠঢ়گ ରԠํ๏ UI ࣮ iOS10 ৽ػೳ ·ͱΊ
࣮ • MPPlayableContentManager • MPPlayableContentDataSource • MPPlayableContentDelegate Ϧετදࣔɾ֊ߏ
࣮ MPPlayableContentManager class CarPlayDemo: NSObject, MPPlayableContentDataSource, MPPlayableContentDelegate { static let
shared = CarPlayDemo() func setup() { MPPlayableContentManager.sharedContentManager().delegate = self MPPlayableContentManager.sharedContentManager().dataSource = self } … } func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { … CarPlayDemo.shared.setup() … }
࣮ MPPlayableContentDataSource func numberOfChildItemsAtIndexPath(indexPath: NSIndexPath) -> Int { // indexPathʹԠͨ͡Ϧετͷ݅Λฦ͢
return 4 } func contentItemAtIndexPath(indexPath: NSIndexPath) -> MPContentItem? { // JOEFY1BUIʹԠͨ͡.1$POUFOU*UFNΛฦ͢ let contentItem = MPContentItem(identifier: "container1") contentItem.title = “container1" contentItem.artwork = CarPlayArtwork.Home.artwork contentItem.container = true contentItem.playable = false return contentItem }
࣮ MPPlayableContentDelegate func playableContentManager(contentManager: MPPlayableContentManager, initiatePlaybackOfContentItemAtIndexPath indexPath: NSIndexPath, completionHandler: (NSError?)
-> Void) { // indexPathʹԠͨ͡ίϯςϯπΛ࠶ੜ … completionHandler(nil) }
࣮ ิ NSIndexPath let indexPath = NSIndexPath(indexes: [1,4,3,2], length: 4)
print(indexPath.length) // 4 print(indexPath.indexAtPosition(0)) // 1 print(indexPath.indexAtPosition(1)) // 4 print(indexPath.indexAtPosition(2)) // 3 print(indexPath.indexAtPosition(3)) // 2 // Get with pointer var indexesPtr = UnsafeMutablePointer<Int>.alloc(indexPath.length) indexPath.getIndexes(indexesPtr) let indexes = [Int](UnsafeBufferPointer(start: indexesPtr, count: indexPath.length)) indexes.forEach { value in print(value) // 1 4 3 2 }
࣮ • MPNowPlayingInfoCenter • MPRemoteCommandCenter ࠶ੜදࣔ/੍ޚ
࣮ MPNowPlayingInfoCenter var trackInfo: [String: AnyObject] = [:] trackInfo[MPMediaItemPropertyTitle] =
"trackName" trackInfo[MPMediaItemPropertyArtist] = "artistName" trackInfo[MPMediaItemPropertyAlbumTitle] = "albumName" trackInfo[MPMediaItemPropertyPlaybackDuration] = 60 trackInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = 10 trackInfo[MPNowPlayingInfoPropertyPlaybackRate] = isPlaying ? 1 : 0 trackInfo[MPMediaItemPropertyArtwork] = MPMediaItemArtwork(image: UIImage(asset: .ArtworkDemo)) MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = trackInfo
࣮ MPRemoteCommandCenter let remoteCommandCenter = MPRemoteCommandCenter.sharedCommandCenter() remoteCommandCenter.nextTrackCommand.addTarget(self, action: #selector(RemoteCommand.next)) remoteCommandCenter.previousTrackCommand.addTarget(self,
action: #selector(RemoteCommand.previous)) remoteCommandCenter.playCommand.addTarget(self, action: #selector(RemoteCommand.play)) remoteCommandCenter.pauseCommand.addTarget(self, action: #selector(RemoteCommand.pause)) remoteCommandCenter.togglePlayPauseCommand.addTarget(self, action: #selector(RemoteCommand.playOrPause)) …
࣮ Τϥʔදࣔ // MPPlayableContentDataSource func beginLoadingChildItemsAtIndexPath(indexPath: NSIndexPath, completionHandler: (NSError?) ->
Void) { // Error completionHandler(CarPlayErrorType.NoData.error()) } // MPPlayableContentDelegate func playableContentManager(contentManager: MPPlayableContentManager, initiatePlaybackOfContentItemAtIndexPath indexPath: NSIndexPath, completionHandler: (NSError?) -> Void) { // Error completionHandler(CarPlayErrorType.PlaybackError.error()) }
࣮ • ϦετͷੜҰʹ݅MPContentItem͕ੜ͞ΕΔ • MPContentItemͷidentifier͕ಉͩ͡ͱitem͕࠶ར༻͞ΕΔ • dataSourceɺdelegateϝΠϯεϨουͰ͜ͳ͍ • iOS8.4͔ΒMPPlayableContentManagerContext͕ར༻Ͱ͖Δ ҙ
What is CarPlay ରԠঢ়گ ରԠํ๏ UI ࣮ iOS10 ৽ػೳ ·ͱΊ
iOS10 ৽ػೳ • λϒφϏήʔγϣϯͷαϙʔτ • γϟοϑϧͱϦϐʔτදࣔͳͲ • ࠶ੜதϝσΟΞͷϚʔΫදࣔ Audio apps
• Siriαϙʔτ Automaker apps Messaging apps • Siriαϙʔτ
What is CarPlay ରԠঢ়گ ରԠํ๏ UI ࣮ iOS10 ৽ػೳ ·ͱΊ
·ͱΊ • UIγϯϓϧ • ։ൃίετ͍ • ຊͰͷීٴ͜Ε͔Β φϏͷଳػೳͱͯ͠ͷCarPlay φϏͱͯ͠ͷCarPlay $BS1MBZͷφϏਫ਼վળػ
ೳ֦ॆͱରԠΞϓϦͷ૿Ճ
Thank you ࢀߟࢿྉ http://www.apple.com/jp/ios/carplay/ https://developer.apple.com/carplay/ https://developer.apple.com/videos/play/wwdc2016/722/ https://developer.apple.com/videos/play/wwdc2016/723/ http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h26/html/nc141320.html http://news.mynavi.jp/articles/2016/01/17/carplay_androidauto_ces/