本来、今回は、VPNの三回目をお届けする予定だったが、5月28日に日本国内でもChromecastが発売されたため、急遽、関連情報をお届けすることにしました。

さて、Chromecastの概要については、米国での発売時に本連載でも紹介しています。基本的な使い方などは、国内で発売された製品と同じです。

【連載】塩田紳二のアンドロイドなう 第41回 Chromecast、テレビに刺さる (2013/08/23)
http://androwire.jp/articles/2013/08/23/41/

日本で発売が開始されたChromecastですが、SNSなどを見ていると、どうもいろいろと誤解している人もいるようですので、ちょっと解説することにします。

Chromecastの中身は、ARMのSoCを使った小さなコンピュータで、Chrome OSが動作しています。出力はHDMIのみ、あとは無線LANだけです。このため、Chromecastは単体ではなにもできません。

セットアップすると、Chromecastは自宅の無線LANアクセスポイントに接続し、同じネットワークに接続するアンドロイド機やiOS機、Windows、MacOSのマシン(以下ホストと呼びます)と接続が可能になります。アンドロイドには、最初からChromecastに対応したアプリが入っているので、Chromecast側の設定さえ完了すれば、YouTubeやGoogle PlayストアなどにChromecastで再生を行う「Cast」用アイコンが表示されます。

Chromecastを使うには、制御を行うホストに「Sender」と呼ばれるアプリケーションが必要になります。アンドロイドは標準で組み込まれているYouTubeやPlayストアといったアプリケーションにこの「Sender」機能が組み込まれています。Windowsの場合は、ChromeブラウザにChromecast拡張を入れますが、この拡張機能(アドオン)がSenderになります。

Senderは、Chromecast内で動作しているReceiverと呼ばれるアプリケーションと対になって動作します。Receiverは、Chromecast内で動作するアプリケーションで、Sender側の制御でインストールが行われますが、ユーザーは、これを気にする必要はありません。また、単純なメディア再生機能などを持つReceiverは、標準でChromecast内に組み込まれています。

リモートディスプレイではなく自分で受信して再生する

Chromecastの最大の特徴は、動画や音楽などのメディア再生を自分で受信して、デコードして再生するところです。ホストは、再生を指示するだけで、ストリーミングデータなどの受信は行いません。ここがいわゆる「リモートディスプレイ」と違うところです(図01)。MiraCastなどのリモートディスプレイは、スマートフォンやタブレットなどのホスト側でテレビ用にレンダリングを行い、フレームデータを無線LANで送信します。このため、テレビ側につながったアダプタは、単純にフレームデータを受信して表示しているだけです。

図01: Chromecastは、リモートディスプレイと違い、自身でストリーミングメディアを受信して再生する

仕組みが単調な分、リモートディスプレイのハードウェアは簡易なものになりますが、いくつか問題があります。HDビデオなどのように比較的高いフレームレートで大きく変化する画像を扱うのにCPU負荷が高くなってしまうことです。リモートディスプレイでは、制御を行うホストが自分でストリーミングデータを受信し、これを圧縮などして無線LANで送信します。このため、無線LANの帯域を大きく占有し、テレビで再生される動画のフレームレートなどはネットワークの混み具合に大きく影響されます。また、ホスト側のGUI画面をリモートディスプレイで転送するため、リモートディスプレイアダプタ側でバッファリングを行うことは画面再生タイミングの遅延を伴うため、ほとんどできないことです。

これに対してChromecastでは、ストリーミングを自分で受信してデコードするため、ネットワークの帯域を大きく占有することもないし、再生時にバッファリングを行っても、操作性に影響がないのです。

その反面、Chromecast側のソフトウェアが複雑になり、高速なCPUやビデオデコーダー回路が必要になるなどの問題がありますが、実際のコストは、幾つ作って売るのかで決まるため、リモートディスプレイアダプタと比べて実売価格が高くなるとは限りません。実際、市販のMiracast対応アダプタよりも、Chromecastのほうが安価に提供されています。もちろんGoogleの戦略ってものあるんでしょうが、Chromecastを安価に販売することで、Playストアなどの売り上げが伸びるといったカラクリも使えるというのが単純なリモートディスプレイアダプタとは違う部分です。

Chromecastの仕組み

Chromecastでは、Chrome OSが動作しており、前述のReceiverアプリを含め、アプリケーションはHTML5(とJavaScript)で記述します。

Chromecastで利用するアプリ(およびインターネット上のメディアサービス)には大きく3つの種類があります(図02)。1つはChromecastが標準で持っているメディア再生機能を利用する「Default Receiver」タイプのアプリです。これは、YouTubeなどがこれに相当します。この場合Receiverアプリを開発する必要はありませんが、Senderアプリは必要です。

図02: Chromecastアプリケーションは、ホストで動作するSenderとChromecast内で動くReceiverから構成され、大きく3つのタイプがある

もう1つは、再生画面や制御画面などをカスタマイズしたStyled Receiverアプリです。これは、再生画面などをカスタマイズするCSS(Cascading Style Sheet。HTMLページの表現を定義する仕様)などを使って、画面の表示などを変更したり、サービスロゴなどを表示させます。そのために必要となるCSSファイルなどは、インターネット側からダウンロード可能にしておき、利用時にChromecastにダウンロードして利用します。ただし、この機能では、メディア再生機能は、Default Receiverの機能を利用します。

最後は、特殊なエンコードなどを用いるCustom Receiverアプリです。商業メディアサービスなどDRM処理などが必要な場合、Custom Receiverアプリを開発して、利用時にはこれをインターネット側(メディアサービス側)からダウンロードしてChromecast内で実行します。

Sender、Receiverとメディアサービスは対になっており、特にCustom Revicerを使う場合には、サービス、アプリともに開発する必要があり、Custom ReceiverやStyled ReceiverのCSSなどのをダウンロードするURLをSenderアプリに組み込んでおく必要があります。また、Receiverアプリケーションを開発するには、GoogleにCastアプリケーションの開発登録(Google Playのアプリ開発とは別)に登録を行い、GoogleからアプリケーションのIDを取得する必要があります。

また、Custom Receiverアプリの配布には、SSLが必要とされているため、個人で作るのは難しそうです(もちろん証明書を入手、維持するためのお金があれば別ですが……)。どちらかというと課金するような商業メディアサービス向けです。

Chromecastのメリット

ポイントは、DRMに対応したストリーミングサービスでも、アプリさえ用意すれば、再生をChromecast側にまかせてしまえるため、再生して間にホスト側のバッテリなどを心配する必要もないことです。

ただ、DRMによっては、ローカルにダウンロードしているコンテンツがあるとChromecastで再生ができないことがあります。たとえば、Playストアで購入したコンテンツをオフライン視聴できるようにローカルにダウンロードしていると、Chromecastで再生ができず、ファイルを消す必要がありました。もっとも、これは、コンテンツのライセンスなどに依存するものなので、他のサービスではどうなのかはわかりません。米国では、Huluなどの商業動画サービスも対応しています。前述のように、再生はChromecast側でやってくれるので、視聴中は操作する必要がなければスマートフォンはスリープしていてもかまいません。

DRMが必要ないメディアサービス用に、メディア再生機能はChromecast側に組み込まれているため、今後さまざまなアプリケーションが登場する可能性もあります。日本で発売されたことで、国内のアプリが対応する可能性があります。メディアだけでなく、ゲームなどのさまざまなアプリケーションが対応可能です。

テレビによって自動起動も可能

テレビ側の機能と設定によっては、Chromecastで再生を開始させると自動でテレビの電源を入れ、Chromecastに入力切り替えができるようです。筆者は、Panasonicのテレビで確認しました。パナソニックのテレビでは、HDMI経由でBDレコーダーなどを操作するVIERAリンクをオンにしておくと、ホストから接続を開始したときに自動オン、自動ソース切り替えが動くようです。VIERAリンクをオフにしていると、自動電源オンなどがはたらきません。

Chromecastは、接続されていないとき、スクリーンセーバーのように、風景画像を切り替えて表示しているようです。なので、空きHDMIコネクタがあるなら、差し込みっぱなしにしておいても問題ありません。また、同時再生はできませんが、1つのChromecastを複数のホストから利用可能なように設定できます。ホスト側のユーザーアカウントには、関係なく利用可能です。ローカルネットワーク内にセットアップが完了しているChromecastがあれば、キャスト先としてリストに表示されます。なので、家族などで1つのChromecastを共有して利用可能です。逆に、不特定多数など他人がアクセス可能なネットワークにChromecastを接続してしまうと、誰でもChromecastを見つけて再生可能なので注意します。

本稿は、2014年5月30日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。