YDiary

メモ的な

新しいEdgeでChromecastを使う

新しくなったEdge

2020年1月16日にChromiumベースの新しいEdgeがリリースされましたね.
自分はWindows Updateで適用されるのを待とうと思ってたのですが,どうも日本に対してはその稀有なIT事情*1に考慮して,Windows Updateでの配信は4月以後となるようです.
なので,早めに試してみたい場合は公式サイトからサクッとインストールしてしまいましょう.

Download New Microsoft Edge Browser | Microsoft

なんか環境によってLPは英語なのにライセンス条項がフランス語だったりするみたいですが,インストーラはちゃんと日本語のようです.

拡張機能

さて,ご存じの通りChromiumベースになったので,Chromeの機能が多数使えるようになっています.その中でも拡張機能は基本中の基本ですね.

パッと見Microsoft Storeにある拡張機能しかインストールできないような雰囲気ですが,拡張機能ページの左下にこっそりと配置されているスイッチをオンにすることで,なんとChrome Web StoreからGoogle Chrome向けの拡張機能を直接インストールできるようになります.

f:id:YDKK:20200118183645p:plain
f:id:YDKK:20200118183936p:plain

いやー,他社のインフラにそのままタダ乗りするスタイル.すごく良いですね.

ただし,ほとんどの拡張機能はそのまま動くようですが,Googleアカウントを用いた認証を行うような拡張機能*2などは上手く動作しないようです.おそらくその辺はChromiumではなくChrome側にある独自実装などと連携して動作しているのでしょうね.

Chromecast

さて,拡張機能の他にも,Chromiumベースになったことで使える機能に,Chromecastがあります.
ご存じの通り,Chromecastとはブラウザで再生してる動画や音声などをChromecastデバイスに対してキャストする機能です.例えば,SoundCloudの音楽を,Chromecast Audioを接続したスピーカで再生する,という風に便利に使えます.*3

ところが,どうも公式リリースされたEdgeでは,このChromecast機能が動作しないようです.

f:id:YDKK:20200118190028p:plain
SoundCloudのプレーヤ部分(上:Chrome,下:Edge)

自分はInsider版の頃から新しいEdgeを使っていたのですが,だいぶ前からChromecastには対応しており,技術的にEdgeがChromecastに対応可能であるのは間違いありません.

f:id:YDKK:20200118185547p:plain
Chromecast対応を伝えるInsider向け更新情報

単なるバグなのか,はたまたGoogle側と折り合いがつかなくなって削除されたのかなどは定かではありませんが,ともかく今のEdgeではChromecast機能が使えなくなっています.

EdgeでChromecastを使えるようにする

それでは不便なので,今回はEdgeで使えなくなっているChromecast機能を使えるようにする方法を探してみます.

とりあえずそれっぽいところを探してみると, edge://flags 内に #cast-media-route-provider という項目があり,コレを Enabled にすることで メニュー→その他のツール→メディアをデバイスにキャスト が使えるようになります.

f:id:YDKK:20200118190727p:plain

ただし,コレによって有効になるのはメディアのミラーリング*4のようで,WebサイトのCastボタンは相変わらず表示されないのでメディアのソースをキャストすること*5は出来ません.

ただ,ミラーリングだけでも使えるようになったことから,この辺のコンポーネントがChromecast機能に絡んでいることは間違いなさそうです.そこで,説明文中にある the Media Router component extension とやらについて調べてみます.

すると,どうもそのChrome Media Routerという組み込み拡張機能がChromecast機能の中核を担っているようです.
恐らく,Edgeではこの組み込み拡張機能が削除されたり,無効化されてしまっているのでしょう.

となれば話は早いもので,Chromecastが使える他のブラウザからこの Chrome Media Router 拡張機能を取ってくればいいのです.

Chromecastが使えるブラウザと言えばChromeですね.早速インストールしましょう.

Chrome内では,Chrome Media Router 拡張機能pkedcjkdefgpdelpbcmbmeomcjbeemfm というIDでインストールされているようです.Chromeのプロファイルディレクトリの中(たぶん %LocalAppData%\Google\Chrome\User Data\Default\Extensions あたり)を見てみると,同名のディレクトリが見つかると思います.

f:id:YDKK:20200118192608p:plain

このディレクトリを適当な場所にコピーしましょう.

そして,Edgeの 拡張機能 ページの左下から 開発者モード を有効化し,右上の 展開して読み込み ボタンからコピーした先のディレクトリ内にある 7919.1028.0.0_0 みたいな名前のフォルダ*6を指定して拡張機能を読み込みます.

f:id:YDKK:20200118193027p:plain

するとこんな感じで Chrome Media Router が読みこまれるので,この状態でChromecastに対応しているサイトにアクセスすればちゃんといつものCastボタンが表示され,きちんと機能するはずです.*7

ブラウザ起動時に表示される警告を抑制する

さて,コレで一件落着かと思いきや,ブラウザを再起動すると毎回こんなダイアログが表示されることに気が付くと思います.

f:id:YDKK:20200118193446p:plain

コレは文字通り,非正規の方法でインストールされた拡張機能*8は危険な可能性があるため,必要が無ければ無効化するように促すものです.

Chromeは少し前からChrome Web Store以外からの拡張機能のインストールを完全にブロックする方針であり,Chromiumを使ったEdgeもそのままこの実装に倣っています.先ほど Chrome Media Router をインストールした方法は,開発者が開発した拡張機能をテストするための方法であり,一般ユーザが野良拡張機能インストールの抜け道として使わないように毎回しつこく警告を出しているものです.

さて,このままでは毎回ブラウザを起動するたびにうっとおしいので,Chromecast機能が正式にサポートされるようになるまでのつなぎとして,少しでもこのダイアログの表示を抑制する方法を考えます.

調べてみると,Edgeの実行バイナリを書き換えて当該のダイアログを表示するコードを無効化する方法があるようですが,実行バイナリを書き換えた場合,DRMモジュールであるWidevineの呼び出し元バイナリの正当性検証が通らなくなってしまい,Amazon Prime VideoなどをはじめとするWidevine DRMを利用しているサイトのコンテンツが閲覧できなくなってしまいます.

なので,ここでは Chrome Media Router 拡張機能マニフェストを書き換えて,拡張機能をバックグラウンド実行するように改変します.

先ほどコピーしたディレクトリ内にある manifest.json ファイルを開き,permissions 配列の中に "background" を追加し,拡張機能をインストールし直しましょう.

f:id:YDKK:20200118195144p:plain

コレによって,ブラウザを閉じても Chrome Media Router 拡張機能がバックグラウンドで動作し続けるようになります.

f:id:YDKK:20200118195249p:plain

結果的に,警告の表示頻度がブラウザを起動する度たびから,PCを再起動するたびまで減るので,何とか実用に耐えうるんじゃないかと思います.

なお、Chromeの場合グループポリシで拡張機能のIDをホワイトリストに登録することでこのダイアログを抑制できるようですが、EdgeではグループポリシテンプレートがChromeのものと異なっており、同じ方法は使えませんでした。

フィードバックを送ろう

こんな面倒な作業をしなくても済むように,みんなで早く公式でChromecastをサポートするようにお願いするフィードバックを送りましょう.

f:id:YDKK:20200118195826p:plain

*1:日本のお客様に対しては、確定申告への影響を考慮し、Windows Updateを通じた新しいMicrosoft Edgeの配信は令和2年4月1日以降、順次開始される予定です。 https://blogs.windows.com/japan/2020/01/16/new-year-new-browser-the-new-microsoft-edge-is-out-of-preview-and-now-available-for-download/

*2:例えば,Google Keep Chrome 拡張機能など

*3:関係ないけどChromecast Audio再販してほしいな….

*4:ブラウザ内で再生した音声・動画を転送すること.帯域を多く使うし不安定.

*5:動画や音声のソースURLを送信して,Chromecast内で再生してもらうこと.

*6:多分一つしかないはず.

*7:edge://flags から設定を変更してた場合は元に戻しておきましょう.

*8:いわゆる野良拡張機能