WebAssembly
読み: うぇぶあせんぶりー
ブラウザ上でネイティブに近い速度でバイナリコードを実行する技術。C/C++/Rust で書かれた画像処理ライブラリをブラウザで動作させられる。
WebAssembly (Wasm) は、ブラウザ上でネイティブコードに近い実行速度を実現するバイナリ命令フォーマットである。C、C++、Rust などのコンパイル言語で記述された画像処理アルゴリズムを .wasm ファイルにコンパイルし、JavaScript から呼び出せる。
従来 JavaScript では処理速度が不足していた高度な画像処理、例えばノイズ除去、超解像、複雑なフィルタ演算などが、WebAssembly によりブラウザ上でリアルタイムに実行可能になった。libvips や OpenCV の Wasm ビルドが公開されており、サーバーレスで本格的な画像処理を実現できる。
画像拡大ツールのような計算集約型の機能では、WebAssembly と Web Worker を組み合わせることで、メインスレッドをブロックせずに高速処理を行う。SIMD (Single Instruction, Multiple Data) 拡張により、ピクセル配列の一括演算がさらに高速化される。