スマホとWebSocketで連携するテレビ用SPA(Single-Page Application)の作り方:Chromecastアプリ開発入門(2)(5/5 ページ)
メディアストリーミングデバイス「Chromecast」用アプリの開発方法を一から解説する連載。今回は、Senderのコマンドを受信してHTML5のvideo要素を使ってメディアを再生したり画面を写したりするReceiverアプリの概要と作り方などを解説します。
Receiverアプリを配置するサーバーの環境設定
ここまではReceiverアプリの実装方法について解説してきました。Receiverの基本的な実装方法については理解できたかと思います。最後に、Receiverアプリが配置されるサーバー環境の設定で重要となるCross-Origin Resource Sharing(CORS)についても解説します。
Chromecast上で実行されるReceiverアプリは、コンテンツデータなどにアクセスするため、自身が送信されたドメインとは異なるドメインのリソースに対してクロスサイトHTTPリクエストを行う必要があります。
通常、スクリプトによって実行されるクロスサイトHTTPリクエストは、セキュリティ上の理由から制限が掛けられています。これを「同一生成元ポリシー(same-origin policy)」といいます。Ajax/XMLHttpRequestより発行されたHTTPリクエストはこの同一生成元ポリシーの制約を受け、Webアプリは自身が送信されたドメインにのみHTTPリクエストを発行でき、他のドメインには発行できません。
CORSは、Webサーバーが異なるドメインからのアクセスを制御することで、異なるドメイン間での通信を安全にするための仕様です。CORSで制御できるルールには以下のようなものがあります。
- クロスドメインアクセスを許可するサーバーのドメイン
- 使用を許可するHTTPメソッド
- 使用を許可するHTTPヘッダー
典型的なReceiverアプリからは、以下の図5のようなHTTPリクエストが発行されると予想されます。
図5で発生するHTTPリクエストを列挙すると、以下のようになります。
- WebServerへ、Receiverアプリ取得リクエスト
- Media Serverへ、メディアの取得リクエスト
- DRM License Serverへ、メディア再生時のライセンス認証のキー取得リクエスト
- Web App Serverへ、何らかのロジックのためにREST APIのリクエスト
CORSの設定するための例を以下の表にまとめました。図5の各サーバーを設定する際に参考にしてください。
Access-Control-Allow-Origin | com.example.web |
---|---|
Access-Control-Allow-Methods | GET |
Access-Control-Allow-Headers | Content-Type |
メディアへのアクセスはGETで、ヘッダーにContent-Typeが設定されるHTTPリクエストを許可します。プリフライトリクエストが発生するので、OPTIONSを許可しています。
Access-Control-Allow-Origin | com.example.web |
---|---|
Access-Control-Allow-Methods | GET、POST、OPTIONS |
ライセンスサーバーへのアクセスには、プリフライトリクエストが発生するので、OPTIONSを許可しています。
Access-Control-Allow-Origin | com.example.web |
---|---|
Access-Control-Allow-Methods | GET、POST、PUT、DELETE |
Webアプリサーバーでは、RESTで使用されるメソッドを許可しています。
※プリフライトリクエストが発生する場合は、DRM License Serverと同じ設定が必要となります。
各サーバーで、カスタムヘッダーを含む場合は、以下のような設定を追加します。
Access-Control-Allow-Headers | X-Custom-Header |
---|
リクエストにCookieを含める場合、クレデンシャルを含むリクエストへ応答できるようにします。
Access-Control-Allow-Credentials | true |
---|
プリフライトリクエストが発生する場合は、DRM License Serverと同じ設定が必要となります。
Access-Control-Allow-Origin | com.example.web |
---|---|
Access-Control-Allow-Methods | GET、POST |
CORSについては、「Using CORS - HTML5 Rocks」の詳細な解説が参考になると思います。
次回はAndroid/iOS版のSenderアプリの実装
以上が、メディア操作や状態管理、Adaptive Bitrate StreamingやDRMを使用したより高度なReceiverアプリの開発についての解説となります。
次回はAndroid/iOS版のSenderアプリの実装方法について解説します。
著者プロフィール
大西克己
株式会社オープンストリームにおいて、アーキテクトとしてAndroidの技術調査・支援、開発案件に従事。社外ではいくつかのAndroid系コミュニティに所属し、勉強会やハッカソンへ積極的に参加、アプリケーションコンテストで入賞したことがある。
最近は、Androidを中心としたウェアラブルデバイスなどのエコシステムに興味がある。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windows OS/Androidの画面をChromecast経由でテレビに表示する
会議室のテレビにWindows OSの画面を映してプレゼンテーションしたい。でもケーブルをつなぐのはスマートではない。こんなとき、テレビにChromecastを接続し、Windows OSにGoogle Chromeをインストールすれば、画面をWi-Fi経由でテレビに表示できるようになる。 - 米グーグルがChromecastのSDKを公開
モバイル端末とTVの垣根を超えるChromecast用のSDKをGoogleが公開。Chromeの拡張機能とiOS向けのGoogle Cast SDKは即日提供を開始、Android版も数日中にリリース予定だという。 - グーグルのプレスイベントで見るグーグル新時代の幕開け
新型Nexus 7タブレットやAndroid 4.3、さらには新デバイスChromecastの発表から、グーグルの新世代戦略を読み解きます。 - YouTube動画を家中のディスプレイで再生できたら
YouTubeビデオを、ブラウザからリビングのテレビやタブレットに飛ばせたら。HTML5のPlayコマンドをテレビに送信して再生する方法を紹介します - Android L、Android Wear、Android TV、Android Autoの開発者向け現状まとめ
米グーグルが「Google I/O 2014」で発表した次期Android「Android L」「Android TV」「Android Auto」の開発者プレビュー、そして「Android Wear」の正式版。これらに対応したアプリを開発するには、どこを見ればいいのか。概要とともに簡単にまとめてみた。 - 第17回 iPhoneの画面をApple TVでテレビに表示する
iPhoneの画面をテレビに映してプレゼンしたい。こんなとき、会議室にApple TVを用意しておくと便利。たった3ステップでiPhoneの画面をテレビに映せるようになる。 - Windows OSの画面をApple TV経由でテレビに表示する
会議室のテレビにWindows OSの画面を映してプレゼンテーションしたい。でもケーブルをつなげるのは少々スマートではない。こんなとき、テレビにApple TVを接続し、Windows OSに「AirParrot」をインストールすれば、画面をWi-Fi経由でテレビに表示できるようになる。 - WebSocketでスマートテレビをリアル接続するぷらら
ひかりTV独自のスマートテレビリモコンの接続方法はWebSocketを用いた常時接続だ。その仕組みと開発意図を聞いた。 - さまざまなデバイスがWebと結び付いていく
テレビやカーナビ、家電とWebが連携していく「Web of Things」。NHKなど、最前線の取り組みが語られたカンファレンスをレポートする - テレビのスマート化とYouTubeのテレビ化
YouTubeなどネットの攻勢に対し、何もしないと「テレビは死ぬ」。それは明らかだ。テレビ局がよいサービスを開発できるかどうかが要となる。 - スマートテレビはチャンスだぞ
テレビもスマート、なんだと。アメリカからGoogle TVやApple TVがやってくる。米テレビ局の映像配信Huluも上陸している。もちろん、日本だって手を打っている - 今度こそテレビとWebの統合なるか:「Google TV」は従来のWebテレビと何が違うのか?
- 頭脳放談第120回:Google TVがVIA Technologiesも救う?
- WebとUIをつなぐトリックスター(2):テレビでYahoo!デバイスが変わればUIデザインも変わる
制作の要となるエンジニアとデザイナのチームワークのツボを探る連載。今回はヤフーのテレビ向けサービスのデザイン担当に話を聞いた