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

参考

あわせて読みたい

JavaScript WebAssembly Web技術 Web標準 Webブラウザ




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

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

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

最新記事10本