Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CarPlayの対応方法と日本での現状
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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.2k
ABEMAモバイルアプリ開発のDevOps戦略
dekatotoro
1
740
Multiplatform Engineering Roadmap for the Future
dekatotoro
1
170
Introduction to RIBs
dekatotoro
5
1.4k
継続的な開発スタイル 「AbemaTV iOSアプリを週一で リリースしている話」
dekatotoro
6
4.3k
iOS Adaptive UI - 解像度の異なるデバイスや画面の向きに対応する 最適なレイアウトへ -
dekatotoro
0
550
動画アプリをなめらかに動かす技術 - iOS -
dekatotoro
0
510
5分で学ぶ差分更新とRxDataSources
dekatotoro
0
380
AbemaTV モバイルアプリの開発体制と 開発プロセスの話
dekatotoro
0
290
Other Decks in Technology
See All in Technology
個人OSSが、机の上から世界に広がるまでの話
shinyasaita
1
360
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
210
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
770
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
150
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
160
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
1
960
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
330
ブラウザ研修 2026
recruitengineers
PRO
4
770
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
AI駆動開発は個人技からチーム戦へ:組織でAIを使いこなすための実践設計
moongift
PRO
0
470
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
200
A Tale of Four Properties
chriscoyier
163
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.3k
Designing for Performance
lara
611
70k
Believing is Seeing
oripsolob
1
180
Designing for humans not robots
tammielis
254
26k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
630
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
170
Music & Morning Musume
bryan
47
7.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
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/