SKY NOTE

skymouseが思った事考えた事を記したもの

Firefox 22使ってみた。(asm.js:JavaScriptの高速化、WebRTC:ビデオ送受信)2013.6.25

Firefox 22がリリースされた。今回のバージョンアップは大きく、新しいJavaScript言語仕様 asm.jsによる高速化やHTML5でリアルタイムで映像や音声を送受信するWebRTCが搭載された注目のバージョンアップ。

 Gigazine:高速化した「Firefox 22」正式日本語版がダウンロード可能に
      第4世代JavaScriptエンジンOdinMonkeyとasm.jsを採用
 http://gigazine.net/news/20130625-firefox22/

まずは、ダウンロード、Firefoxをインストールしている人は、Mac版だと、画面の左上のメニューのFirefoxのメニューの「Firefoxについて」を開いて、「ソフトウェアの更新」というボタンを押して、ダウンロード後、アプリケーションを再起動でアップデート

通常ダウンロードだと、以下のURLからダウンロード
Windows
 http://download.mozilla.org/?product=firefox-22.0&os=win&lang=ja
Mac OS X
 http://download.mozilla.org/?product=firefox-22.0&os=osx&lang=ja-JP-mac
Linux
 http://download.mozilla.org/?product=firefox-22.0&os=linux&lang=ja

使ってみた感想

  • まず、最近、テキスト入力が異常に重かったのだが、アップデートしたら快適に入力できるようになったので、JavaScriptの高速化の効果があったのかもしれないと感じる。全体的にブラウザ表示がもたつくこと無く、キビキビするようになった。それにしてもUnreal 3D Graphicsエンジンが凄まじいの一言、ブラウザーでここまで出来るのかという出来、次元が違う。

1.Firefox 22の新しい機能

  • では、新機能を確かめてみるためにデモを見よう。
  • asm.js(資料:http://www.publickey1.jp/blog/13/asmjsjavascript.html
    • asm.jsに最適化されたJavaScriptコードであれば、Cなどのネイティブコードに比べて半分程度のスピードで動くと言われている高速JavaScritptエンジン拡張言語仕様、今回のアップデートの最大の目玉(asm.js仕様に合わせてコードを書くと、事前コンパイラが有効となり、高速化する。通常、JavaScriptは、コードを逐次コンパイルしており、それ故に遅い、asm.js仕様に沿ってコードを書くと、新しいJavaScriptエンジンOdinMonkeyが対応コードだと識別し、事前コンパイルすることで、高速化する)他にもいくつかの最適化を施しているようだが、自分にはよく分からないので省く
    • [FIRST LOOK] Epic Citadel - Browser Based Game Engine!
    • この動画は、英語で、技術解説しているので、見るべきところを見せてくれる。
    • 解説なしの高画質な方は、http://www.youtube.com/watch?v=fzKConz8b5k
    • このデモのUnrealの3Dエンジンは、グラフィックスをWebGL、プログラム部分をasm.jsで動かしている。
    • うちのMacのSpec
    • Mac mini 2009
    • CPU:Core2Duo 2GHz Memory 8GB
    • GPU:Geforce9400M(SP数:16)VRAM memoryと共有(最大256MB)
    • Display 1280×1024(フルスクリーンモード)
    • フレームレート:平均30 fs
    • デモを見てもらえれば分かるが、HTML5もここまで来たかという感じがする。教会の大理石に反射する天井の鏡像、太陽の虹彩、風にそよぐ樹木や旗(音もサラウンドっぽい)、散る木の葉、流れる川、暗闇を照らすライト、空を鳥が飛んでいたり、壁の石垣はちゃんと凹凸のあるテクスチャ、など、非常に見るべきところのあるデモで、非常に素晴らしい。ブラウザーで本格的な3D MMORPGが出来てしまう事が実感できる出来といえる。正直、うちの非力なMac miniでこれほど高品質な3D Graphicsが見られるとは思わなかった。しかも、それがブラウザーで出来るというのがスゴイ。

2.Firefox 22 リリースノート
 新機能
  Windows
  ・高解像度モニタでも、大きな文字が使えるようになった。
  Mac
  ・アプリケーションドックから、ダウンロードの進行状況が確認できるようになった。
  PC板共通
  ・asm.js (OdinMonkey) によりJavascriptが大幅に高速化
   (注:asm.js最適化コードのみ)
  ・HTML5 の audio と video のプレイバックレートを変更できる
  ・アドオンマネージャにソーシャルサービスの管理機能が追加されました

 変更
 ・Canvasが非同期更新、WebGLの描画速度が向上
 ・テキストファイル表示に単語を折り返して表示するようになった
 ・|Components| オブジェクトを Web コンテントから参照できなくなった。
  (セキュリティ向上のため)
 ・画像描画のメモリ使用量とスピードが向上
 ・全画面表示以外でも、Pointer Lock API を利用できるようになった。

 開発者向け機能
 ・CSS3が実装された(デフォルト)
 ・新しい Web Notifications API が実装
 ・clipboardData API が追加
 (java scriptからユーザーのクリップボードへアクセスできるようになった)
 ・新しいフォントインスペクタが組み込まれた

 HTML5
 ・要素と要素を利用できるようになりました。

 修正
 ・高解像度スクロールに対応したタッチパッドでスクロールが遅く感じられる問題を修正

まとめ

  • 今回のアップデートが本領を発揮するのは、asm.js対応のJavascriptコードが増えることにかかっている。最適化されたコードは、通常のjava scriptとしても動くので対応コードを書けば、Firefox 22以降では、高速に動き、他のブラウザでも動くという事になる。デモを見ると、使っているマシンの一世代昔のマシン程度WebGLを使ったものは、かなりネイティブに近いスピードが出ていると思われるので、そこから察すると、対応コードが増えていけば、ブラウザで結構快適に色々できてしまう環境が整うのではないかと思う。特に3D ゲーム。Unrealのエンジンがスゴイ。
  • Cのネイティブコードを使えば2倍の速度が出るのだから、JavaScriptは、ダメという話もあると思うが、JavaScriptを使うことによって、プラットフォームを選ばずWeb上で安全なコードを走らせることに意味があるといえる。パフォーマンスがネイティブコードの半分程度で動くのだから、大抵のソフトは、使える性能といえる。特にWebGLのようなOpenGLと連動した機能と繋がることで、より表現力の高いソフトが出来るだろう。事務所理系のソフトに加えてグラフィック系も今回のアップデートで実用水準に入ったのではないかと思う。
  • ただ、それも対応コードによるウェブアプリの登場を待つ必要があるので、多少、その恩恵に浴するには時を待たなければならないだろう。そういう意味では、Googleあたりがドキュメントにグラフィック関係のWebソフトを出してくると面白いと思う。自分はHatenaのブログ編集APIが対応して、もうちょっと早くなってほしいと感じる。最近重いのだ。(この間起きた、セキュリティの問題により、各サイトがなんだか全般的に重くなった気がする)