WebAssemblyとは何か?
最近にわかに注目を集め始めているのがWebAssemblyと呼ばれる技術です。アセンブリという単語でも分かる通り、Web上でコンパイルされたプログラムを使える技術になります。
今回はそんなWebAssemblyの紹介と、利点などについて紹介します。
コンパイルすればコードの隠蔽化が可能に
JavaScriptはスクリプト言語であり、良くも悪くもオープンな存在でした。そのため、Webブラウザで読み込まれたコードは誰でも閲覧が可能で、真似できました。それによってセキュリティ上の問題が出ることもありますが、JavaScriptが現在ほど広く使われるようになった一因とも言えるでしょう。
セキュリティ上、公開を避けたいキー系のデータについて、WebAssemblyによって隠蔽化ができるようになります。オープンという制約があるために、これまでサーバサイドでしか処理できなかったような内容がWebブラウザ側で実現できるようになります。さらにJavaScriptの使われる場面を増やせることでしょう。
Webブラウザではできなかったことを可能に
元々がPNaCl(とasm.js。後述)をベースにしていることもあり、Webブラウザ上でネイティブコードを安全に実行できるようになります。Webブラウザでは難しかった処理をこなすための存在です。
JavaアプレットやFlash、Silverlightといった技術が廃れたことで、Webブラウザ上でネイティブコードを動かす技術がなくなっています。HTML5もAPIが拡充されていますが、それでも足りない機能は多数あります。WebAssemblyはその一助になるでしょう。
転送量の低減
コンパイルすることによってスクリプトファイルに比べてサイズは低減できることが多いです。転送量が減るのは表示の高速化であったり、省メモリ化にも貢献してくれるでしょう。
最近のWebアプリケーションはどんどん肥大化する傾向にありますので、JavaScriptが1MBを超えることもあります。バイナリ化によってサイズが低減するのはユーザにとって大きなメリットになります。
開発言語について
現在のところ、C/C++からのコンパイルをサポートするのが目標となっています。さらにMozillaはRustでWebAssemblyをサポートすることを表明しています(1.14からサポート)。
asm.jsとの違い
Web上でのアプリケーション動作を高速化するために生み出された技術としてasm.jsが知られています。JavaScriptのサブセット版として開発されています。asm.jsでは標準のJavaScriptに比べて1.5倍程度高速化します。WebAssemblyではまだそのレベルまで達していないようですが、今後はパフォーマンスは向上するでしょう。
Webブラウザのサポート状況
2017年3月にリリースされたFirefox 52がWebAssemblyをサポートしました。さらにChromeやEdgeでも動作します(Chrome Canaryであったり、開発用のフラグを立てる必要があります)。WebAssemblyの開発にはAppleも参加していますので、今後ブラウザすべてで標準的にサポートされていくようになるでしょう。
今後WebAssemblyは標準になっていくことを考えると、C/C++によるWebブラウザ向けのアプリ開発も盛んになっていくことでしょう。もちろん現在は素のC/C++ですが、今後フレームワークも多数出てくるはずです。それによって開発が効率化すれば業務システム開発でも使えるようになるでしょう。
コメントは受け付けていません。