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
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
130
AIコーディングはじめました
miso
0
160
Sinatra on PicoRuby ローカルでセルフホスト
bash0c7
0
110
Kiro Crew の Bot (続く役目を任せる窓口) | 目指せ Kiro マスター 12
inariku
PRO
2
320
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
160
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
160
会社説明資料_最新版
demaecan
0
32k
Software Engineering in an AI-Driven World
erikjhordan_rey
0
130
[General] 개발자로 해외 기업에서 일하기
skydoves
1
310
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
2
160
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
210
現場を動かすAIエージェント#2_製造業現場でのAI活用から見た、ハマる罠と実践知
kintotechdev
2
200
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
4
560
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
470
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k
Scaling GitHub
holman
464
140k
The Invisible Side of Design
smashingmag
301
52k
Documentation Writing (for coders)
carmenintech
77
5.6k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.3k
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
520
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
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/