フロントエンドを高速化する第4のWeb言語――「WebAssembly」とは?:いろんな言語で試す、WebAssembly入門(1)
第1回では、第4のWeb言語とされ、W3Cで標準化されているWebAssemblyの概要を紹介します。WebAssemblyの仕組みと用途、Webブラウザをはじめとしたランタイム、非ブラウザAPIやプログラミング言語のサポートなどを紹介します。
本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。
WebAssemblyの概要
WebAssemblyは、第4のWeb言語と称される、WebAssemblyアプリケーションにおけるフロントエンド高速化の仕組みです。WASMと略されることもあります。まずは、WebAssembly登場の背景から、WebAssemblyが何者であるのか紹介していきます。
JavaScriptの限界
Webブラウザにおけるプログラミング言語といえば、やはりJavaScriptです。JavaScriptの登場当時からしばらくの間は、Webページにギミック的な機能を盛り込むといった用途が主で、利用はあくまでもHTMLの補助という位置付けでした。しかも、ブラウザによる動作の差異も大きく、どのようなブラウザでも実行できるスクリプトを記述するのは骨の折れる作業でした。
これが、2000年代中盤以降、以下のように状況が変化します。
- jQueryなどのライブラリの登場で、ブラウザに依存しないスクリプトの記述が可能になった
- Google Mapsに象徴されるAjax技術が普及した
- 2015年に標準化されたECMAScript 2015(ES6)で、モダンJavaScriptの基礎が出来上がった
- HTML5においてさまざまなAPIが整備された
これらを受けて、JavaScriptの利用幅が大きく広がりました。それは、ビジネスアプリケーション、2Dと3Dのゲーム、仮想・拡張現実(VR・AR)、画像や動画の編集、DTMといった領域にまで及びました。
ただし、Webアプリケーションにおけるフロントエンドの比重が高まるにつれ、インタープリタ型のスクリプト言語であるJavaScriptの不利な面が目立ってきました。プログラミング言語としてのJavaScriptは汎用(はんよう)性が高いものですが、上記の3Dゲームのような用途で使用しようとすると、パフォーマンスの問題に直面したのです。JIT(Just In Time)という、JavaScriptスクリプトを実行時にコンパイルする仕組みも導入されましたが、コンパイルのための時間が必要なため即時性に劣るなど、根本的な解決手段とはなっていません。
このような背景を受けて、より高速なWebブラウザの実行環境が模索されてきました。そこで登場したのが、asm.jsでありWebAssemblyです。
WebAssembly登場以前の高速化技術asm.js
Copyright © ITmedia, Inc. All Rights Reserved.