WebAssembly とは?
20 年以上にわたり、JavaScript はブラウザーで実行できる唯一のプログラミング言語でした。Python、C++、Go などの他の言語は、主に Web アプリケーションとサービスのサーバー側を構築するためのものでした。
JavaScript はかなりうまくいきましたが、他の多くのプログラミング言語の方が高速です。よりパフォーマンスの高い他のプログラミング言語をブラウザーで直接実行することで、Web アプリが利用できる多くの利点があります。
WebAssembly は、オープン Web プラットフォームの一部である、効率的でオープンかつ安全なオプションを提供します。これを使用して、ブラウザー、サーバー、およびその他の環境で実行されるアプリケーションを構築できます。
WebAssembly の紹介
WebAssembly (WASM) は、効率的で低レベルの移植可能な W3C 標準言語です。プログラムが Web 上のプラットフォームと対話するためのコード形式とインターフェイスを定義します。
ほとんどのプログラミング言語を WebAssembly のバイナリ コード形式にコンパイルできます。ブラウザは、通常の JavaScript と同じように、生成された WASM コードを解釈して実行できます。また、JavaScript コードと一緒に WebAssembly を実行して、アプリのパフォーマンスと 2 つの間の相互運用性を高めることもできます。
WebAssembly は 2019 年に W3C 標準となり、多くのプログラミング言語でサポートされています。Made with WebAssemblyによると、WebAssemblyを使用して高速で安全なソフトウェアをユーザーに出荷する人気のあるプロジェクトがすでに多数存在します。
サーバー側固有のものを含む多くのプログラミング言語が WebAssembly をサポートしています。これらには、Rust、Go、Python、C++、TypeScript、Java、PHP、および Ruby が含まれます。awesome-wasm-langs リソースをチェックして、WebAssembly がサポートする言語とそれらで使用できるパッケージについて学んでください。
以下は、Tutorials Point の WebAssembly プログラムの例で、最大 2 つの整数を返します。
WebAssembly の構文は、JavaScript に比べて比較的冗長ですが、問題にはなりません。WebAssembly は、好みの言語で作成したプログラムのコンパイル ターゲットになるため、構文を学習する必要はありません。
WebAssembly のしくみ
WASM は、他のプログラミング言語がトランスパイルするためのコンパイル ターゲットとして存在します。お気に入りのプログラミング言語で記述し、ソース コードをクライアントで実行される WASM バイトコードにコンパイルできます。ネイティブ マシン コードに変換すると、通常は JavaScript よりも高速に実行できます。
WASM の重要な機能の 1 つは、JavaScript の相互運用性です。WASM モジュールを Web アプリケーションにインポートして、JavaScript コードで使用する WASM 関数を公開できます。JavaScript フレームワークは、WASM を利用してパフォーマンスを向上させることができます。
WASM は、JavaScript に似たサンドボックス実行モデルを使用します。WASMは、プログラムの要件に基づいてリソースやその他のシステム サービスへのアクセスを提供するWebAssembly System Interfaceのような ABI (Application Binary Interface) を使用してホスト マシンと対話します。
Chrome、Microsoft Edge、Mozilla Firefox、Opera、Safari など、最新のブラウザーの多くは WASM をサポートしています。Go や Rust などの言語は、そのままで WASM をサポートします。
Web に WebAssembly が必要な理由
JavaScript は、設計上、機能が制限されています。Web 用のスクリプト言語として始まって以来、最速または最もパフォーマンスの高い言語の 1 つではありません。JavaScript がさまざまな速度で実行される多くのランタイムがありますが、WebAssembly がゲーム、ビデオ、音楽などのユースケースのために Web にもたらすことができる、より高速でパフォーマンスの高い言語があります。
WebAssembly は、Web 上で実行されない言語への移植性と柔軟性も提供します。Web (最も人気のあるオープンソース プラットフォーム) により多くの言語を導入すると、全体的なエクスペリエンスが向上するはずです。
WebAssembly の採用は急速に進んでいます
多くの企業や開発者が WebAssembly を使用してアプリケーションを構築しています。Google、Dropbox、および Cloudflare は、一部のアプリケーションで WebAssembly を積極的に使用しています。
WebAssembly は、Python、C++、および Rust の開発者の間で人気があります。Python 開発者は通常、Pyoidide と PyScript、C++ 開発者と Emscripten、Rust 開発者は Percy、Yew、Sycamore、MoonZoon、および Seed フレームワークを使用します。
コメントを残す