注目されるWebAssembly
WebAssembly(Wasm)は、Webブラウザでプログラムを高速で動かすための新しいフォーマットです。
WebAssemblyを活用することで、Webブラウザ上でのアプリケーション動作のパフォーマンスを向上できる可能性があります。Web上で利用されるアプリケーションの広がりとともに、WebAssemblyの技術は開発や応用が広がっています。
登場からまだそれほど時間が経っていないWebAssemblyの技術は、試験的に運用されている段階ということも多いですが、様々な領域への適用が試みられています。
今日は、
- Webフレームワーク / ライブラリ
- 統合開発環境
などの点から、WebAssembly関連の技術やツールを見ていきます。
Webフレームワークとライブラリ
Blazor
Blazorは、C#で、Webアプリケーションを開発するためのWebフレームワークです。Microsoftにより公開されています。
Blazorには、サーバサイドで動作するBlazor Serverと、クライアントサイドで動作するBlazor WebAssemblyというモデルがあります。
Blazor WebAssemblyは、文字通りWebAssembly技術を使用していて、このフレームワークを使用することで、C#から、Webブラウザで動作するアプリケーションを開発することができます。
Yew
Yewは、Rustのフロントエンド用フレームワークです。
Yewを使うことで、Webブラウザで動作するアプリケーションをRustで開発することができます。
Rustというとシステムプログラミング言語のイメージが強いかもしれませんが、Yewの開発は進んでいます。
始め方のドキュメントも充実してきています。
Perspective
Perspectiveは、インタラクティブなデータの可視化ツールです。
Perspectiveを使用することで、Web上でのグラフ描画、ピボットテーブルの作成などデータ分析と可視化をインタラクティブに行えるWebページを作成することができます。
JavaScriptやPythonから使用することができます。
Vugu
Vuguは、Go言語で使用できるフロントエンド用フレームワークです。
WebAssemblyの技術が利用されていて、Vuguを使うことで、Webブラウザで動作するアプリケーションを開発することができます。
Vuguは、VueやReact、AngularといったJavaScripのフレームワークに影響を受けているとのことです。
プログラミング言語から見るWebAssembly
Webフレームワークやライブラリの他にも様々な領域でWebAssemblyの技術は使われ始めています。
AssemblyScript
AssemblyScriptは、WebAssemblyのためのプログラミング言語です。
TypeScriptに非常によく似た構文を持ち、WebAssembly技術活用のために開発された言語です。
Pyodide
Pyodideは、WebAssembly技術を用いて、Pythonとその科学ライブラリ(NumPyやPandasなど)の実行環境をWebブラウザで実現するものです。
始め方のドキュメントが用意されています。
エディタと統合開発環境
WebAssembly Studio
WebAssembly Studioは、Mozillaが発表した、統合開発環境(IDE)です。
WebAssemblyを活用したアプリケーション開発のためのIDEで、C言語やRust、AssemblyScripなどのプログラミング言語に対応しています。
発表から間もないですが、MozillaはWebAssembly Studioの機能拡充を進めるとしています。
既存のエディタの拡張機能
WebAssembly Studio以外にも、
- Visual Studio CodeのWebAssembly for VSCode
- Vimのvim-wasm
など、すでに広く使われているエディタに対して、WebAssemblyやWebAssembly Text Formatサポートツールが開発されています。
開発が進むWebAssemblyのエコシステム
WebAssemblyが最初にアナウンスされたのが2015年です。
2021年2月時点で、すでに多くの分野での活用が模索され、様々なプロジェクトが実用化を見据えて開発を進めています。
今日紹介した、
- Webフレームワークとライブラリ
- 色々なプログラミング言語のWebAssemblyへの対応
- エディタや統合開発環境
をはじめ、多くの試みがあります。
- ゲーム開発のプラットフォームとして広く知られるゲームエンジンUnityのWebAssemblyサポート
- 組み込みやWebAssembly向けのGo言語コンパイラTinyGo
など、目を引くものが多数ある印象です。
WebAssembly環境の今後にますます注目です。
コメント