WebAssemblyとは、ブラウザ上でJavaScript(スクリプト言語)の代わりにバイナリ(アセンブラ)を実行したら高速化するんじゃないかな、みたいな感じである。
JavaScriptはユーザー数の多さ(ほとんどのWebサイトで使用されている)もあって最適化が進み、スクリプト言語最速と言われる水準に達している。しかし、いかんせんスクリプト言語である以上、事前にコンパイルされているコンパイル言語の実行速度との間には超えられない壁がある(Juliaはこの壁を越えたと豪語しているが、用途も違うし、それはまた別の話。)。
WebAssemblyはこの問題を解消するべくブラウザ上でネイティヴコードに近いバイナリを実行するための低水準プログラミング言語として登場した。2015年に発表され、2017年にはFirefox, Chrome, Safari, Edgeといった主要ブラウザが対応するようになった(IEはもちろん非対応)。2019年にはW3C勧告になり、Web標準としての地位を獲得した。
実行ファイルは(Javaのバイトコード的な中間コードの)バイナリデータの形で提供され、仮想マシンでネイティヴコードに変換後実行される。これだとJavaScriptと同じ様に聞こえるが、ネイティヴコードに近い状態で仮想マシンに渡されるので、実行時に構文解析から始めるJavaScriptよりも高速に動作する。
機械語と同様、普通の人間には読めないので、アセンブリ言語に近い表現方式も存在する。
上記主要ブラウザ以外にもローカルのJavaScript実行エンジンであるNode.jsやDenoからも実行可能。いずれの環境でもJavaScriptを介して呼び出す方式である。
LLVMにビットコードをWebAssemblyに変換するバックエンドがあることから、LLVMに対応したプログラミング言語ならばWebAssemblyの開発が可能(なはず)。
初期にはDOMの操作は対象外とされ、JavaScriptの処理のうち計算量の多い部分を置き換える使い方が想定されていたが、2019年あたりからWebAssembly対応の各種言語でDOMの操作のサポートが進んできている。
掲示板
2 ななしのよっしん
2021/03/05(金) 12:16:06 ID: Yvhrocj9IB
WebAssemblyをブラウザの外で動かすWasmerを触ってみた
https://
Wasmer 1.0がリリースされたので、ベンチマークを取ってみた
https://
WASI準拠の他言語対応WASM実行ランタイムすごいな
WASMがポータブルなバイナリ及びユニバーサルなライブラリとしてプラットフォーム間の違いを吸収してくれたら開発が捗りそう
WebGPUもそんな感じでブラウザ内外共通APIとして一緒に普及してくれると非常に助かる
3 ななしのよっしん
2021/03/08(月) 12:56:20 ID: TB40xUfIef
WebAssemblyはセキュアな実行のためにアプリケーションをデフォルトで自動的にサンドボックス化し悪意あるコードやバグ、実行されるソフトウェアの脆弱性からホスト環境を保護するよう設計されているbyMDN
最近は普段使いだとCPUやメモリ性能が向上したお陰でパフォーマンスに余裕が出てきたからHTTPS通信が必須化したように一般環境ではセキュリティ確保のためネイティブコード実行が忌避される時代が来るかもしれないね
オンライン認証もパスワードに依存しないWebAuthn/FIDO2が標準化されたのでよりセキュアな次世代方式へ移行が進むといいな
4 ななしのよっしん
2022/11/10(木) 13:01:41 ID: RHKQdfv+LY
提供: かぐや
提供: 緑黒白
提供: 一工一
提供: 匿名希望一般ニコ民
提供: 核砂糖入り紅茶
急上昇ワード改
最終更新:2025/03/29(土) 21:00
最終更新:2025/03/29(土) 20:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。