Nintendo Switch(ニンテンドースイッチ)は今年の3月に任天堂より発売した、新しいゲーム機です。Switchは素晴らしいゲームたちと共に華々しいスタートを切り、なかなかの成功を収めているようです。
近年のゲーム機には、高機能化に伴いウェブブラウザが搭載されることが増えてきました。ですがSwitchには2017年5月現在、ブラウザは搭載されていません。搭載する予定も発表されていません。
しかし全く希望がないわけではありません。実はブラウザ機能自体はSwitchに内蔵されているのです。ブラウザアプリは提供されていませんが、Switchはひっそりとブラウザの機能を持っているということになります。
そこで本記事では、そのブラウザ機能から読み取れる、「もし、Switchがブラウザを搭載したら、どの程度のことができるのか」を、ある程度簡単にまとめて見たいと思います。
Switchのブラウザ機能はWebKit
Switchに搭載されているブラウザはNetfrontで、これはWebKitを使用して実装されています。これはACCESSのウェブサイトから明らかになっています。WebKitは幅広い分野で使用されているエンジンで、Appleなどが中心となって開発し、Safariなどに使用されています。かつてはGoogle Chromeにも採用されていたこともありました。
WebKitは実に標準的なエンジンで、我々が「ブラウザ」と聞いて思い浮かぶものの大半はWebKitか、WebKitの派生品を使用しています。
WebKitはeShopなどで使用されている
しかしそのブラウザ機能はいったいどこで使用されているのでしょうか。実は、スクリーンショットの投稿画面や、eShopなどで使用されているようです。一見ブラウザが動いているようには見えませんが、どうやらあれらの画面はウェブ技術で組まれているようです。
SwitchからHTML/CSSテストを実行する
そして、ちょっと怪しいこと(ここではその方法は説明しません)をすると、このブラウザ機能で任意のページを見ることができます。ネット上にはHTML/CSSの対応具合をテストできるページがあるので、それを利用してSwitchブラウザのスコアを計測しました。以下が結果となります。
https://html5test.com/s/dc221535e5d2bbbb.html
そしてこの結果から、Switchにブラウザが搭載された場合、どういった機能を持つのか、どのようなことができるのかを、読み解いていきたいと思います。
この記事はあくまで参考程度にすること
注意点として、もし本当にブラウザアプリがSwitchに提供された場合、より新しいバージョンのWebKitが搭載される可能性が高いということがあります。つまり、ここで出ている結果以上の機能が実現できる可能性が高いということです。
本記事では、あくまで現時点のブラウザ機能で、どの程度のことができるか、ということに焦点を当てて話を進めていることに気をつけてください。
HTML/JavaScript編
基本的な機能
この記事を読む人はあまり細かい仕様などについては興味はないでしょうから、ここは早足でいきます。
HTML5を構成する基本的な要素にはほぼ対応しています。さすがWebKitです。細かい話は省略しますが、一般的なウェブサイトを表示するのに何も困らないということです。ただその一方で最新に近い要素については、あまり対応されていません。しかしそれらの要素は、当分の間は一般的なサイトで使われることはないでしょう。
画像・ビデオ
画像については、PNG、JPEG、WebPなどに対応しています。
また、picture要素やsrcset属性に対応しており、レスポンシブ(ええと、「画面の大きさなどにあわせて表示する画像を変える」で伝わるかな…?)な表示を実現することができます。最近のブラウザなら対応している機能ですね。
ビデオに関しては、H.264、WebM(VP8/VP9)に対応しています。H.265には対応していません。H.264はmp4のことだと思ってもらって構いません。とりあえず標準的な動画は再生できるということです。H.265はその次世代版ですが、まだ再生できる環境が少ないので、普及にはしばらく時間がかかるでしょう。
オーディオ
オーディオ要素自体には対応していますが、対応しているオーディオ形式が無いようです。どういうことでしょう……。また、より高度なオーディオ操作を可能にするWebAudioAPIにも対応していません。
音声合成・音声認識にも対応していません。
グラフィックス
グラフィックス機能としては、canvas要素に対応しています。これは簡単な2D描画を行えるもので、ゲームなどを作る際に利用できます。
また、WebGL1にも対応しており、本格的な3Dグラフィックも扱えます。ただし最新のWebGL2には対応しておらず、大きな機能制限があります。しかしSwitchの性能を本格的に活かすにはWebGL2ですら古すぎる上、WebGL1ではさらに大きな制限がかかるので、「ゼルダ」や「スプラトゥーン」のようなゲームをブラウザ上で動かすことは不可能です。
requestAnimationFrameにも対応しているので、60fpsでの滑らかな処理・描画を行うことができます。
また、Switch自体がVR(バーチャルリアリティ)に対応していないので当然ですが、WebVRには対応していません。
簡単にまとめると、ブラウザ上で動く本格的な2Dゲームは作れるが、3Dグラフィックスを扱おうとすると強い制限がつく、ということになります。
ジョイコン
GamepadAPIに対応し、ジョイコンによる入力を扱うことができます。GamepadAPIについては、このブログでも過去に記事にしました。
ただし通常の入力とジャイロセンサーのみで、IRセンサーは利用できないと考えられます。また、HD振動も使えないでしょう。NFC(Amiibo)にも対応していません。
加えて、現実的な問題として、ジョイコンのボタンにはブラウザの操作が割り当てられると考えられます。XboxOneやWiiUでのブラウザの挙動を踏まえると、これら基本操作はキャンセルすることができないでしょう。つまり、「Bボタン=前のページに戻る」が割り当てられていたら、Bボタンを押すと必ず前のページに戻ってしまい、ブラウザゲームなどで使用することはできないということです。
リアルタイムコミュニケーション
リアルタイムコミュニケーションを可能にするWebRTCに対応しています。簡単に言うとビデオチャットなどが実現できる機能です。Switchにはカメラもマイクもないので使用する機会はほとんど無いでしょうが。
オフラインデータ
Local Storageに対応しており、ブラウザに小さなデータを保存することができます。ブラウザゲームのセーブデータなどを保存するのに使えるでしょう。しかしIndexedDBには対応しておらず、本格的なオフラインデータベースを扱うことはできません。
また、Application Cacheにも対応しており、ウェブページをキャッシュして、ネットに繋がらないオフラインの場面でも閲覧することが可能になります。ただしApplication Cacheは非推奨とする流れがあり、今後一般的なサイトで使用されるかは不明です。
Application Cacheより高度なオフライン機能を実現できるService Workerには対応していません。
ファイルのアップロード
ファイルのアップロードにも対応しているようです。きっとスクリーンショットのことでしょう。
開発者向けのお話
WebWorkersに対応しており、マルチスレッド処理を実現することができます。WebWorkersについては、このブログでも過去に記事にしました。
XHR2には対応していますが、FetchAPIには対応していません。FetchAPIについてはこのブログでも記事にしました。
JavaScriptの機能については、classやアロー関数、Promiseに対応しています。async/awaitには対応していません。Promiseとasync/awaitについてはこのブログの過去の記事をご覧ください。
WebComponentsについては、template要素のみ対応しています。
CSS編(開発者向け)
CSSはブラウザの表示周りを担当する仕様です。表示のみの変化なので、ユーザーに直接的には利益を与えません。よって全て開発者向けの話になります。
CSSの対応状況については、HTMLのスコアとは別のサイトを用いて計測しました。
構造周り
Flexbox、マルチカラム、グリッドには対応しているようです。ただ、グリッドは完璧ではないようで、grid-column-gapなどに対応していません。
アニメーション
Transition、Animationともに対応しています。CSSを用いたアニメーションが実現できます。
セレクタ
セレクタLevel3には全て対応しています。Level4ではnotとmatchesに対応しています。
値/単位
vw/vh、vmin/vmaxに対応しています。また、calc()にも対応しています。
その他
縦書きには対応していません。
Shapesには対応していますが、Exclusionsには対応していません。
フィルターに対応していますが、backdrop-filterには対応していません。
object-fitに対応しています。object-positionには対応していません。
position:stickyに対応しています。
まとめ:ある程度モダンな機能を持っている
Switchのブラウザは、さすがにChromeやFirefoxにはかないませんが、最低限のモダンな機能は搭載していると言えるでしょう。「ウェブ技術オタク」にとっては物足りないかもしれませんが、一般的なウェブサイトを閲覧するのにはほぼ問題ないほど多数の技術に対応しています。そして、それどころか、すこし技術を先取りしたようなサイトでもある程度は表示できる作りになっています。
また、オーディオ周りが少し怪しいですが、GamepadAPI + WebGLでブラウザゲーム制作の下地が整っているのは嬉しいことです。やはりゲーム機なので、ゲーム機としての機能は活かしたいですよね。
今後、単体ブラウザアプリがSwitchにやってくるかどうかはわかりませんが、もし正式に搭載されることになったら皆で弄って遊びましょう。