はりをきば

そこにピカマンがいる限り 私はテイッハットウッをやめない

ニンテンドースイッチのブラウザの仕様を調べてみた

¯注意
この記事はを最後に更新されていない。
更新日が1年以上前の記事はリンク切れしていたり、情報としては役に立たなくなっている可能性あり。
ˆMixed Contentについて
この記事は投稿日が古い為、記事中の画像は非SSL(http://)で貼られている。(※投稿画像以外は全てSSL)
この件に関して詳しくはこちらを参照。

………1年以上放置した挙句、それでも欠かさずやってた新年の挨拶もとい生存報告すら行わず
今になって唐突に投下した新記事がこれかよ!と思う人もいるかもしれないが、まぁ気にしないでね。



任天堂ハードのブラウザのユーザーエージェント一覧(DS / DSlite / DSi / 3DS / New3DS / Wii / WiiU) - はりをきば

http://blog.gutyan.jp/entry/2015/01/31/NintendoBrowser

上記の記事の補足という形で、スイッチのブラウザをちょいと調べてみた。


スイッチには内部的な機能の為にアプレットという形でブラウザが実装されているが、
それを3DSやWiiUのようにエンドユーザーが直接呼び出す事は基本的にはできない。
…できないが、実は細工されたDNSを使う事で無理矢理起動する方法がある。


通常のブラウザとしての基本機能が備わっていない*1ので実用性は無いが、
今回はそれでユーザーエージェントを始め一通り仕様を確認してみた。ちなみに本体verは5.0.2。

ユーザーエージェント

Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.8.9 NintendoBrowser/5.1.0.16739

エンジンは3DS、WiiUに引き続きNetfrontとみて間違いない。

navigator と screen の値

ついでなのでUA以外も調べてみた。
それ用に適当なHTMLを作成。

Nintendo Switch ブラウザ情報チェッカー

http://test.gutyan.jp/ns

当初以下のコードでプロパティを洗い出すつもりだったのだが

for (let name in prop) {
	document.write(`${name}: ${prop[name]}<br>`);
}

何故かスイッチのブラウザでは動かなかった(Firefox/ChromeはOK)
仕方ないので、主要なプロパティを手動リストアップして総当り。


上記HTMLで出力された画面を適当にスクショ。
テキスト化だのリザルトログを鯖に保存するPHPだの面倒なので必要なら自分でOCRしてね。
尚、ブラウザ機能使用中は標準のスクショ機能が無効化されていて使えないので、
HDMIキャプチャで1920x1080/32bit/BMPで撮ったものを1280x720/8bit/PNGに変換して掲載。


結果がこれ。
f:id:Gutyan:20180531220659p:plain
f:id:Gutyan:20180531220711p:plain
f:id:Gutyan:20180531220721p:plain
興味深いのはgetGamePadsに関数が入っていること(実際に動くかは知らん)
そして、ブラウザの解像度はTVモード/携帯モード関係無くWiiU同様1280x720であること(本体の解像度に合わせてる?)

モーダルダイアログ

alert、confirmは正規のWebアプレット画面でも使われてるが
promptは見た事がないので、試してみた。
f:id:Gutyan:20180531223928p:plain
何ら問題無く表示できる。
HTMLは以下

モーダルダイアログのテスト

http://test.gutyan.jp/modal

HTML5test

HTML5test.comを踏んだ結果がこれ
f:id:Gutyan:20180531224027p:plain

Nintendo Switch 5.0.2 - HTML5test

http://html5te.st/a7fafc3dcd581869

スマホブラウザと比べると劣るけど、まぁいいんじゃない?
面白いのは、Video系は一通り対応している*2のに対し、Audioは全滅しているところ。
まぁWiiUやスマホもAudioの対応はアレだし、こんなもんかな…


以上。
Octaneとかのベンチマークも試してみたが、重すぎて敢え無く撃沈(応答停止)してしまった…。

*1:アドレスバーすら無いし…

*2:が、実際は通信時にブロックされる