主要ブラウザで実行可能なバイナリ形式「WebAssembly」の開発がスタート。Chrome、WebKit、Firefox、Microsoft Edge、LLVM、Unityらがサポートを相次いで表明

2015年6月19日

WebAssemblyのプロジェクトは、オープンソースとしてGitHubで開発中のコードが公開され、W3Cに「WebAssembly Community Group」が設立されました。

WebAssembly · GitHub

GitHubで公開されている「WebAssembly High-Level Goals」によると、WebAssemblyが目指しているのは、どのWebブラウザでも実行可能なポータブルで、かつロード時間が小さくて済むコンパイル済みのバイナリフォーマットで、汎用的なハードウェアの能力を活用したネイティブスピードで実行でき、しかもモバイルやIoTを含む幅広いプラットフォームをサポートするもの。

要するに、プログラミング言語をコンパイルし、どのWebブラウザでも高速に実行できるバイナリフォーマットを開発する、というのがWebAssemblyが目指すものです。最初のWebAssemblyの実装ではC/C++言語をコンパイルすることを想定しています。

このプロジェクトにはマイクロソフトがブログで参加を表明しFirefoxもブログで参加を表明、Chromeの開発担当者もツイッターでプロジェクトへの参加をつぶやき、WebKitはBugzillaに開発タスクが登録されました。また、LLVMもWebAssemlyへの対応を前向きに検討しています

ゲームエンジンのUnityの開発者も次のようにWebAssemblyへの対応をブログで示しています

We plan to switch Unity WebGL to output WebAssembly bytecode once the feature becomes available in browser releases.

Unity WebGLも、ブラウザで利用可能になったらアウトプットをWebAssemblyバイトコードに切り替える計画だ。

なぜWebAssemblyは作られるのか?

なぜこのような、Webをターゲットにした新しい実行系の開発が始まったのでしょうか? WebAssemblyのFAQなどを含む複数のドキュメントから、次のような理由が読み取れます。

1つは、モバイルやIoTといったネットワーク回線やマシンパワーが比較的小さいデバイスにおいても効率よく実行できるように、圧縮しやすくパースも高速かつ軽量で済むフォーマットが望まれていたこと。

もう1つは、すでに存在する低レベル言語としてのasm.jsは拡張が難しく、ネイティブスピードを実現するという要求には、新しいものを作った方がよいだろうと考えられたことです。

WebAssemblyの登場は、JavaScriptの終わりの始まりなのでしょうか? そうではない、とWebAssemblyプロジェクトは説明しています。FAQには、「Is WebAssembly trying to replace JavaScript?」の項目があります。その答えの一部を下記に引用しましょう。

No! WebAssembly is designed to be a complement to, not replacement of, JavaScript (JS). While WebAssembly will, over time, allow many languages to be compiled to the Web, JS has an incredible amount of momentum and will remain the single, privileged (as described above) dynamic language of the Web.

いいえ、WebAssemblyはJavaScriptを置き換えるのではなく、補完するように設計されています。長期的にはWebAssemblyは多くの言語をコンパイルしてWebで実行できるようになるでしょう。それでもJavaScriptは信じられない勢いで普及し、単一で、Webにおけるダイナミック言語の確固たる地位にありつづけるでしょう。

そしてWebAssemblyではJavaScriptとWebAssemblyを組み合わせたさまざまなユースケースを想定しています。

まずはasm.jsと同等程度の機能から

WebAssemblyでは、まずはプロジェクトの有効性を検証するためのMVP(Minimal Viable Product)として、C/C++言語をコンパイルでき、現在Webブラウザでアセンブラ的な機能を備えているasm.jsとほぼ同様の機能を備えたプロトタイプが公開されています。

また、生成されたWebAssemblyをJavaScriptに変換することでWebAssemblyを現在のどのWebブラウザでも実行可能にする「Polyfill to JavaScript」もMVPとして公開されています。

参考

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : JavaScript , WebAssembly , Webブラウザ , Web標準



≫次の記事
富士通がオープンソースに貢献したらこうなった。第26回 PaaS勉強会
≪前の記事
IBM、「Spark as a Service」を発表。Apache Sparkへのコミットで3500人の研究者やエンジニアを投入

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


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



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus