COLUMN
コラム
2023年04月11日
WebAssemblyを開発できるプログラミング言語まとめ
カテゴリー:システム開発, テクノロジー
タグ:サービス開発, システム開発, プログラミング
WebAssembly(WASM)はJavaScriptを除き、ブラウザ上での動作が保証された実行環境です。WASMはあくまでも実行環境であり、プログラミング言語ではありません。そのため、WASMバイナリに変換できる言語は幾つも存在します。
そうした言語を使うことで、普段自分が作っているプログラミング言語からWASMバイナリを生成できます。JavaScript以外の言語を使ってWebアプリケーションの開発が可能になります。
この記事では主なプログラミング言語と、その利用法を紹介します。
Rust
RustはMozillaの開発するプログラミング言語で、WebAssembly向けに開発するのであれば一番お勧めの言語になります。元々RustやC、C++がWebAssembly向けに開発できる言語となっていたので、最新の機能を一番早く実装されるでしょう。
Rustは元々CやC++を置き換える存在として開発されています。CやC++よりもモダンで、メモリ安全なプログラミングを行う際によく用いられています。
C/C++
CやC++もWebAssembly開発にお勧めの言語です。すでにCやC++で開発されているソフトウェアをWebAssembly化する試みも数多く行われています。SQLite3をWASM化するSQLite3 WASM/JSはその一つです。
C/C++からWASMバイナリにする場合にはEmscriptenを利用します。変換する際に、それを利用するHTMLファイルも生成してくれます。もちろん全てのAPIが動作する訳ではないので、コードの修正は必須ですが、既存の資産が利用できるメリットは大きいでしょう。
Go
Goは言語として公式にWebAssemblyをサポートしています。そのため、情報も充実しているイメージがあります。 GOARCH=wasm GOOS=js を付けてコンパイルすればWASMバイナリが生成されます。
ただし、まだ実験的な機能であったり、生成されるバイナリファイルのサイズが大きいのが難点です。
Java
JavaではTeaVMというライブラリがJavaの中間ファイルからWASMバイナリを生成します。面白いのは中間ファイルなので、元々のソースコードを必要としないことです。
つまり技術的にはJavaだけでなく、ScalaやKotlinなどJVMで動く中間ファイルであれば利用できるようです。
Kotlin
Kotlinについては開発元であるJetbrainにてKotlin/Wasmが開発されています。まだ実験的ということですが、KotlinからWASMバイナリを生成する機能です。
WASMのGCを必要としているため、ChromeやFirefoxの特別なフラグを必要とします。
AssemblyScript
AssemblyScriptはTypeScriptのサブセット言語です。言語体系はTypeScriptですが、全機能が使える訳ではありません。
そしてAssemblyScriptを変換して、WebAssemblyに変換できます。新しい言語を覚えずにTypeScriptだけで済むのは大きな利点です。
.NET
.NETではBlazorというフレームワークを利用することでWASMバイナリを生成できます。.NET系の言語、C#やVB.NETなどで利用できるようです。
まだ比較的新しいフレームワークですが、成熟すれば.NETを使った開発時に利用できるでしょう。
まとめ
今回はWebAssemblyバイナリを生成できるプログラミング言語を紹介しました。RustやC、C++以外の言語でもWebAssemblyは開発できます。ぜひ自分の好きな言語でトライしてください。
WebAssemblyは多くの場合、JavaScriptよりも高速に実行できます。機械学習のようなクライアント側での計算処理が増える場合やゲームなど、多くの場面で利用できるでしょう。
- カテゴリー
- タグ
- システム運用 (16)
- TypeScript (1)
- WebAssembly (2)
- ウォーターフォール開発 (2)
- 業務システム (28)
- CSS (2)
- GraphQL (1)
- プログラミング (31)
- スタートアップ (11)
- Nexaweb (1)
- BaaS (10)
- データベース (5)
- SPA (2)
- 基本用語 (26)
- Case study (5)
- Keyword (10)
- FaaS (1)
- システム開発 (69)
- スクラム (1)
- フロントエンド (38)
- AI (26)
- アジャイル開発 (18)
- Supabase (1)
- イノベーション (5)
- Database (2)
- 月額制 (1)
- PaaS (3)
- ACF (1)
- BookReview (3)
- サービス開発 (5)
- React (3)
- Firebase (1)
- クラウドサービス (12)
- low-code (2)
- バックエンド (8)
- ナレッジマネジメント (1)
- ChatGPT (1)
- Vue.js (2)
- Tailwind CSS (1)
- DBaas (2)
- プロジェクト管理 (13)
- セミナー (2)
- Web (21)
- 失敗事例 (2)
- Hexabase_health (1)
- 生成AI (7)
- 受託開発 (1)
- Kubernetes (3)
- WebComponents (1)
- 通知 (1)
- API (6)
- Next.js (1)
- フレームワーク (3)
- ローコード開発 (4)
- ノーコード開発 (1)
- JavaScript (2)
- Hexabase (12)
- LLM (3)
- 画像生成 (1)
- DX (34)