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
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
730
Multiplatform Engineering Roadmap for the Future
dekatotoro
1
160
Introduction to RIBs
dekatotoro
5
1.4k
継続的な開発スタイル 「AbemaTV iOSアプリを週一で リリースしている話」
dekatotoro
6
4.3k
iOS Adaptive UI - 解像度の異なるデバイスや画面の向きに対応する 最適なレイアウトへ -
dekatotoro
0
540
動画アプリをなめらかに動かす技術 - iOS -
dekatotoro
0
500
5分で学ぶ差分更新とRxDataSources
dekatotoro
0
370
AbemaTV モバイルアプリの開発体制と 開発プロセスの話
dekatotoro
0
290
Other Decks in Technology
See All in Technology
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
420
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
190
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
230
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
160
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
280
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.3k
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
540
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
320
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
150
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
240
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
590
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Tell your own story through comics
letsgokoyo
1
960
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Optimizing for Happiness
mojombo
378
71k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Building the Perfect Custom Keyboard
takai
2
800
Discover your Explorer Soul
emna__ayadi
2
1.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Are puppies a ranking factor?
jonoalderson
1
3.6k
How to train your dragon (web standard)
notwaldorf
97
6.7k
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/