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
180
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
770
Multiplatform Engineering Roadmap for the Future
dekatotoro
1
180
Introduction to RIBs
dekatotoro
5
1.5k
継続的な開発スタイル 「AbemaTV iOSアプリを週一で リリースしている話」
dekatotoro
6
4.3k
iOS Adaptive UI - 解像度の異なるデバイスや画面の向きに対応する 最適なレイアウトへ -
dekatotoro
0
560
動画アプリをなめらかに動かす技術 - iOS -
dekatotoro
0
510
5分で学ぶ差分更新とRxDataSources
dekatotoro
0
380
AbemaTV モバイルアプリの開発体制と 開発プロセスの話
dekatotoro
0
290
Other Decks in Technology
See All in Technology
AI coding 整合正規方法
philipz
0
550
SREへの勘違いに気づいた後の話
tomodakengo
0
160
AIエージェントを安全で速い現場監督にする:Jev・Obsidian・メタハーネス
x5gtrn
PRO
0
120
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
21k
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
150
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
140
あけおめLINE 傾向とその対策
nasa9084
0
330
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.4k
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
850
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
310
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
4
1.3k
ScotSecure West 2026 - Glasgow
raybugg
0
170
Featured
See All Featured
A Soul's Torment
seathinner
8
3.6k
Designing for Performance
lara
611
70k
Odyssey Design
rkendrick25
PRO
2
820
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
560
Designing Experiences People Love
moore
143
24k
Side Projects
sachag
456
43k
Embracing the Ebb and Flow
colly
88
5.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
250
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
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/