ブラウザで実行可能な言語「WebAssembly」、Webの標準へ:JavaScriptなどと並び、W3C勧告に
W3Cは、プログラミング言語「WebAssembly」の標準化を完了し、そのコア仕様をW3C勧告として公開した。高パフォーマンスWebアプリケーションを実現する助けになる。
Web技術の標準化を行うWorld Wide Web Consortium(W3C)は2019年12月5日(米国時間)、プログラミング言語「WebAssembly」の標準化を完了し、コア仕様をW3C勧告として公開した。Webブラウザで実行できるコードを作成できる、「HTML」「CSS」「JavaScript」に続く4つ目の強力な言語だと、W3Cは述べている。
WebAssemblyは、ポータブルな低レベル言語であり、Webブラウザを含めモダンプロセッサに向けたもの。モダンプロセッサと組み合わせた場合、コードサイズが小さくなり、効率的に実行できるよう設計されている。
「WebAssemblyは、オープンWebプラットフォーム技術で実現できるアプリケーションの幅を広げる。機械学習やAIが一般化する中、ユーザーの安全性を損なうことなく、高パフォーマンスアプリケーションをWebでも使えるようにすることが重要になっている」と、W3CのWebAssemblyプロジェクトリードを務めるフィリップ・ル・エガレット氏は語る。
高パフォーマンスアプリケーションを実現する言語
WebAssemblyは基本的に、Webで高パフォーマンスアプリケーションを実現する仮想命令セットアーキテクチャだ。もちろん、他の多様な環境でも動作する。
WebAssemblyを実装する場合、Webブラウザやスタンドアロンシステムなど、さまざまな対象がある。実際にWebAssemblyはビデオやオーディオコーデック、グラフィックスや3D、マルチメディアやゲーム、暗号計算、ポータブル言語の実装など、多様なアプリケーションに利用できる。
どのようなパフォーマンスが向上するのか
WebAssemblyは、ロードされたWebページをネイティブのコンパイル済みコードとして実行する仮想マシンと実行環境だといえる。このため、Webパフォーマンスを向上でき、電力消費量を削減できる。つまり、WebAssemblyはネイティブに近いパフォーマンスと最適化されたロード時間を実現できる。最も重要なのは、既存コードベースをターゲットにできることだ。
WebAssemblyは、数十年の蓄積があるコンパイル言語の最適化手法を利用している。WebAssemblyのバイトコードは、コンパクトであることはもちろんだ。だがWeb用途を重視して、ストリーミングを考慮した最適化を施す。なぜなら、Webページではコードの一部がダウンロードされた時点で実行が始まり、並行してコードの他の部分がダウンロードされるからだ。
WebAssemblyは付随するJavaScriptライブラリを使ってネットワークとAPIへアクセスする。セキュリティモデルはJavaScriptと同じだ。
将来の拡張はどうなる
既にWebAssemblyワーキンググループとコミュニティーグループは、WebAssemblyの将来版に盛り込むさまざまな機能の開発に取り組んでいる。次のような機能が検討に上がっている。
- スレッディング スレッドは、共有メモリマルチスレッディングとアトミックメモリアクセスのメリットを提供する
- 固定幅SIMD ループを並列実行するベクトル演算
- 参照型 WebAssemblyコードがホストオブジェクトを直接参照できるようにする
- テール呼び出し 追加のスタック空間を使わずに関数呼び出しを可能にする
- ECMAScriptモジュール統合 WebAssembly実行コードをES(ECMAScript)6モジュールとしてロードし、JavaScriptと相互作用できる
この他にも、WebAssemblyの使いやすさと可用性の向上を目的とした長期プロジェクトが多数ある。例えば、ガベージコレクションやデバッグインタフェースなどだ。ファイルアクセスやネットワークアクセスなどの低レベルのシステム機能に向けた一連のモジュールセットであるWebAssembly System Interface(WASI)もある。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
AWS、ソースコードの問題点修正や、稼働中のアプリケーションの性能改善に役立つサービス「Amazon CodeGuru」を発表
Amazon Web Services(AWS)は、コード品質やアプリケーションパフォーマンスで問題が起こる前に改善できるように支援するフルマネージドサービス「Amazon CodeGuru」を発表した。Microsoft、「.NET Core 3.0」の後継となる「.NET 5」を2020年にリリース
Microsoftは「.NET Core」「.NET Framework」「Xamarin/Mono」を1つに集約すると発表した。「.NET Core 3.0」の後継となる「.NET 5」は、Windows、Linux、macOS、iOS、Android、tvOS、watchOS、WebAssemblyなどに対応した開発が可能な単一のプラットフォームになる。WebAssembly
WebAssemblyは、C/C++などで書かれたコードをWebページでも利用できるようにすることを念頭に置いたバイナリフォーマット。