MozillaはWebAssemblyをブラウザー外でも使えるようIntel、Red Hat、Fastlyと協力

Mozilla、Intel、Red Hat、Fastlyは米国時間11月12日、Bytecode Alliance(バイトコード・アライアンス)の発足を発表した。「WebAssemblyやWebAssembly System Interface(WASI)といった標準に基づいた、新しいソフトウェア基盤の構築」に焦点を当てた新しいオープンソースグループだ。

画像クレジット:Johnathan NightingaleCC BY-SA 2.0ライセンスに基づくFlickr

Mozillaは長い間、WebAssemblyを推進してきた。あらかじめコンパイルされたプログラムを、ブラウザーで実行できるようにするオープンなスタンダードだ。これによりアプリのデベロッパーは、CやC++、Rustなどの言語で記述したプログラムを、JavaScriptに依存することなくネイティブアプリ並みの速度でブラウザー上で実行できるようになる。JavaScriptの場合、特にモバイルデバイスでは構文を解析して実行するのに長い時間を必要とする。

現状では、すべての主要なブラウザーエンジンが、WebAssemblyをサポートしている。FigmaAutodeskなど、すでに実験を済ませ、実際に製品に採用している企業もある。とはいえ、この技術が大々的に採用される日が近いという感じはしない。ほとんどのデベロッパーにとって採用へのハードルは高いのだ。そして今回の発表は、おそらく今年になってからWebAssemlyについて初めて聞いた話のような気がする。

この新しいグループの目標は、もはやブラウザーを超えたところにある。「ウェブブラウザー内の世界での何十年のもの経験を生かし、アプリのデベロッパーとサービスプロバイダーが信頼されていないコードでも、あらゆるインフラストラクチャ、あらゆるオペレーティングシステム、あらゆるデバイス上で、確信を持って実行できる高性能かつ堅牢なプラットフォーム」を確立したいと考えている。ここで重要なのは、ブラウザーの外の世界でも、WebAssemblyの能力を発揮できる環境が十分に考えられるということ。信頼されていないコードのコンポーネントでも、サンドボックス環境内にある信頼されたコードとやり取りすることが可能になるからだ。実際、Mozillaの広報担当者によれば、WebAssemblyは、従来のアプリデベロッパーやウェブ技術者より、むしろこのユースケースに関心のある企業から強い関心を集めているという。そこに、この新しいアライアンスの意味がある。

MozillaがWebAssemblyのフォーマットを発表したときは、MicrosoftやGoogleも、そのグループのメンバーだった。しかし、新たなBytecode Allianceのメンバーにはなっていない。

すでにさまざまなメンバーのコードが、このアライアンスに貢献している。例えば、WebAssemblyとWASIのランタイムとしてはWasmtimeFastlyのLucet、IntelのWebAssembly Micro Runtime、コードジェネレーターとしてはCraneliftなどがある。

「WebAssemblyはウェブを変えつつありますが、さらにWebAssemblyは、ブラウザーの枠を超えて拡大し続け、ソフトウェアのエコシステムにおいて、さらに大きな役割を果たすことができると考えています」と、MozillaのDistinguished Engineer(上級エンジニア)でWebAssemblyの共同開発者であるLuke Wagner(ルーク・ワグナー)氏は説明する。「これは、新しいテクノロジーの夜明けを示す、またとない瞬間です。壊れていたものを修正し、ポータブルかつスケーラブルなネイティブ開発のための必然的に堅牢な新たな基盤を構築する機会なのです。しかし、これが正しい方法で進展するよう、業界の壁を超えて慎重な行動を取る必要があります」。

( function() {
var func = function() {
var iframe_form = document.getElementById(‘wpcom-iframe-form-d364cb96205cd974a23c66049c18fd54-5dcbbdaf3ca39’);
var iframe = document.getElementById(‘wpcom-iframe-d364cb96205cd974a23c66049c18fd54-5dcbbdaf3ca39’);
if ( iframe_form && iframe ) {
iframe_form.submit();
iframe.onload = function() {
iframe.contentWindow.postMessage( {
‘msg_type’: ‘poll_size’,
‘frame_id’: ‘wpcom-iframe-d364cb96205cd974a23c66049c18fd54-5dcbbdaf3ca39’
}, window.location.protocol + ‘//wpcomwidgets.com’ );
}
}

// Autosize iframe
var funcSizeResponse = function( e ) {
var origin = document.createElement( ‘a’ );
origin.href = e.origin;

// Verify message origin
if ( ‘wpcomwidgets.com’ !== origin.host )
return;

// Verify message is in a format we expect
if ( ‘object’ !== typeof e.data || undefined === e.data.msg_type )
return;

switch ( e.data.msg_type ) {
case ‘poll_size:response’:
var iframe = document.getElementById( e.data._request.frame_id );

if ( iframe && ” === iframe.width )
iframe.width = ‘100%’;
if ( iframe && ” === iframe.height )
iframe.height = parseInt( e.data.height );

return;
default:
return;
}
}

if ( ‘function’ === typeof window.addEventListener ) {
window.addEventListener( ‘message’, funcSizeResponse, false );
} else if ( ‘function’ === typeof window.attachEvent ) {
window.attachEvent( ‘onmessage’, funcSizeResponse );
}
}
if (document.readyState === ‘complete’) { func.apply(); /* compat for infinite scroll */ }
else if ( document.addEventListener ) { document.addEventListener( ‘readystatechange’, function(){
if (document.readyState === ‘complete’) {
func.apply();
}
}, false ); }
else if ( document.attachEvent ) { document.attachEvent( ‘onreadystatechange’, func ); }
} )();

原文へ

(翻訳:Fumihiko Shibata)

Source: TechCrunch Japan
MozillaはWebAssemblyをブラウザー外でも使えるようIntel、Red Hat、Fastlyと協力