主要ブラウザで実行可能なバイナリ形式「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として公開されています。

参考

このエントリーをはてなブックマークに追加
Bookmark this on Delicious

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



≪前の記事
IBM、「Spark as a Service」を発表。Apache Sparkへのコミットで3500人の研究者やエンジニアを投入

Loading...

Blogger in Chief

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


新サイト「Publickey Topics」始めました!


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





  1. Facebook、静的コード解析ツール「Infer」を公開。Objective-C/Java/Cコードのバグを指摘してくれる
  2. 「進捗どうですか?」と聞かれなくて済む、カンバンとGitで始める進捗管理を自動化する方法[PR]
  3. ホワイトボックススイッチとは何か? オープン化がすすむネットワーク機器のハードとソフトの動向(前編)。ホワイトボックススイッチユーザ会 第一回勉強会
  4. 「ASCIIDWANGO(アスキードワンゴ)」ブランドの第一弾書籍、クヌース氏の名著「The Art of Computer Programming」が6月26日発売へ
  5. Microsoft Edge、レスポンシブイメージ対応の「srcset」に対応。夏以降は主要ブラウザすべてでsrcsetサポート
  6. ホワイトボックススイッチとは何か? オープン化がすすむネットワーク機器のハードとソフトの動向(後編)。ホワイトボックススイッチユーザ会 第一回勉強会
  7. インスタンス不要、クラウド上でコードを実行できる「AWS Lambda」がJavaに対応
  8. 2015年のIaaS+PaaS国内市場規模は昨対比40%増の1200億円超へ、今後はPaaSが市場を牽引。矢野経済研究所
  9. 最初の「Ember.js 2.0」ベータ版が登場、ReactのようなVirtual DOMを採用した高速レンダリングエンジンGlimmerを搭載。1.x系は1.13で終了へ
  10. Google App EngineのPHPサポートが正式版に。スケーラブルなPHPの実行環境を実現、セキュリティパッチも自動適用
  11. AngularJSのエキスパート達が語る、AngularJSの使いどころとつらいところ(前編)。Deverlopers Summit 2015
  12. IBM、「Spark as a Service」を発表。Apache Sparkへのコミットで3500人の研究者やエンジニアを投入
  13. リアルタイムなデータ分析をする分散OLAP「Pinot」をLinkedInがオープンソースで公開
  14. [速報]マイクロソフト、コードを書くのに最適化したツール「Visual Studio Code」発表。Windows、MacOS、Linuxに対応、無料提供。Build 2015
  15. 今からでも間に合うDockerの基礎。コンテナとは何か、Dockerfileとは何か。Docker Meetup Tokyo #2

Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus