カスタム検索
表示順:
Relevance
Relevance
Date
ウェブ
 
 
 

WebAssembly対応、主要ブラウザChrome/Firefox/Edge/Safariで整う。Webアプリの開発言語としてJavaScript以外の選択肢は広がるか?

2017年11月17日

主要なWebブラウザでのWebAssembly対応が整った。これによりJavaScriptを超える高速なWebアプリケーションの実行に加え、JavaScript以外の言語によるWebアプリ開発の選択肢が開かれることになる。


WebAssemblyは、Webブラウザ上でネイティブコードに近い実行速度で高速に実行できるバイナリフォーマットを実現しようと、マイクロソフト、Google、Mozilla、Appleなどの主要なWebブラウザベンダがW3CのWebAssembly Community Groupなどを通じて共同で開発に取り組んでいる技術です。

WebAssembly.org WebAssembly.org

主要なWebブラウザによるWebAssembly対応が整う

1年前の2016年11月には、各社が足並みをそろえてWebAssemblyの試験的実装を発表し、2017年2月にはWebAssembly APIとバイナリフォーマットについて主要ブラウザベンダが合意したことでテクニカルプレビューの段階が終了。本番投入が可能になったことが宣言されました

その後、Chromeは2017年7月にリリースされた「Chrome 60」からWebAssemblyがデフォルトでオンになり、Firefoxも8月にリリースされた「Firefox 55」からWebAssemblyに正式対応をしていました。

続いてSafariが9月にリリースした「Safari 11」でWebAssemblyに対応。Microsoft Edgeも10月にリリースされた「Edge 16」でWebAssembly対応となります。

これで主要ブラウザによるWebAssembly対応がすべて整いました。

11月13日付けでMozillaブログに投稿された記事「WebAssembly support now shipping in all major browsers」では、この主要ブラウザによるWebAssembly対応が整ったことを受けて、次のように書いています。

WebAssembly has caught the interest of a wide swath of technical folks, because it brings predictable performance to the web platform – something that’s been exceedingly difficult to achieve with JavaScript alone. Gaming companies were early adopters of WebAssembly and asm.js. Epic and Unity were first to put their industrial-strength game engines on the web without rewriting the C++ code bases in JavaScript.

WebAssemblyは幅広い技術者の関心を集めてきました。というのも、それはWebプラットフォームに予測可能なパフォーマンスをもたらしたのです。これはJavaScriptだけで実現するのは非常に困難なことでした。ゲーム開発企業はこのWebAssemblyとasm.jsを早くから採用していました。EpicとUnityは、業界の中でも強力とされるゲームエンジンを、C++のコードベースをJavaScriptに書き換えることなく最初にWeb対応にしたのです。

このMozillaのブログで紹介されたように、WebAssemblyの重要な点は2つあると考えられます。

1つはJavaScriptでは実現できないほどの高速性がWebAssemblyで実現される点です。これによりゲームのような、これまで速度の面で実現が難しいとされてきたアプリケーションがWebブラウザで実行できるようになります。

そしてもう1つは、Webアプリケーションの開発言語がJavaScriptやTypeScriptのようなJavaScriptをターゲットにした言語以外の選択肢へと広がる点です。

JavaScriptだけでなく、C/C++やRust言語など選択肢が広がる

いままで、Webブラウザでサポートされる言語は多少の例外はありつつも基本的にJavaScriptだけでした。ですからJavaScriptで記述されたアプリケーションしかWebブラウザで実行することはできませんでした。

しかしWebAssemblyがWebブラウザでサポートされたことにより、最終的にWebAssemblyのバイナリフォーマットを生成することができれば、どんな言語で書いたプログラムであってもWebアプリケーションを記述し、生成したWebAssemblyをWebブラウザで実行できるようになりました。

前述のMozillaのブログに書かれた例で、C/C++のコードを書き換えることなくゲームエンジンをWeb対応にできたのは、C/C++のコードからWebAssemblyを生成したためです。これはEmscriptenと呼ばれる特殊なコンパイラで実現しています。

Mozillaが中心になって開発を進めているRust言語も、WebAssemblyを生成できるようになるとされています

また、Source Mapsと呼ばれる機能をWebAssemblyと言語の両方で対応することにより、ソースコードを参照しながらのデバッグも可能になります。

WebAssemblyの対応はWebブラウザだけでなく、サーバサイドのNode.jsでも行われています。今後、さらにさまざまな言語がWebAssemblyを出力できるようになれば、WebブラウザとNode.jsの両方で、対応言語の選択肢の広がりが期待できるでしょう。

follow us in feedly

カテゴリ Web技術 / JavaScript
タグ  WebAssembly , Web標準


前の記事
[速報]「Visual Studio Live Share」発表。複数のプログラマがリアルタイムにコードの編集、ブレークポイント、デバッガ操作などを共有。Connect(); 2017


カテゴリ



Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

人気記事ランキング

  1. 日本郵便が公開する郵便番号データをそのまま利用するのがなぜ難しいか。そして、住所から郵便番号を求めるのがなぜ難しいか[PR]
  2. [速報]「Visual Studio Live Share」発表。複数のプログラマがリアルタイムにコードの編集、ブレークポイント、デバッガ操作などを共有。Connect(); 2017
  3. Apache Kafkaがついにバージョン1.0に到達、オープンソース化から約7年。大量のデータを高速に収集できるメッセージ処理システム
  4. テスラのAI部門長が語る「Software 2.0」。ディープラーニングは従来のプログラミング領域を侵食し、プログラマの仕事は機械の教師やデータのキュレーションになる
  5. 「Prometheus 2.0」正式版リリース。クラウドやコンテナなど動的な分散環境に対応した統合監視ツール
  6. 従来より2倍高速化をうたう「Firefox Quantum」正式版が公開。今後もさらに性能向上は続く
  7. マイクロソフト、Azureの大規模クラウドネットワークを忠実にエミュレートする「CrystalNet」の存在を明らかに。メンテ作業などをエミュレータで事前検証、ダウン回避を実現
  8. Google、クラウド内部のネットワーク機構をアップデート「Andromeda 2.1」に。レイテンシが40%改善し高速化
  9. インテルx86マシンの奥深くでは人知れず「MINIX 3」が動作しており、脆弱性を作り出している。Googleらはそれを排除しようとしている
  10. メインフレーム級のx86サーバ「HPE Superdome Flex Server」登場。最大32ソケット/896コア、メモリ48テラバイト搭載


新着記事 10本


PR - Books


fig

fig

fig