Emscripten とは|C と C++ をブラウザで動く形に変換するツール
Emscripten は、C と C++ で書いたコードを、ブラウザの中で動く形式へ変換するためのコンパイラの一式です。変換したものは、ブラウザのほか Node.js でも動きます。
- 分類
- ビルド・配信・ストア提出の補助
- 制作の流れ
- リリース
- 日本語対応
- 日本語非対応
- 費用
- 無料(MIT ライセンスと University of Illinois/NCSA Open Source License の2つ)
- 公式サイト
- https://emscripten.org/確認日 2026-09-18
Emscripten の概要
Emscripten(エムスクリプテン)は、C と C++ で書いたコードを WebAssembly に変換するためのコンパイラの一式です。公式ドキュメントは「Emscripten is a complete Open Source compiler toolchain to WebAssembly.(Emscripten は、WebAssembly へ変換するための、ひとそろいのオープンソースのコンパイラの一式です)」と書いています。
WebAssembly とは
WebAssembly は、ブラウザの中で機械に近い形のプログラムを動かすための形式です。C や C++ など、ブラウザでそのままは動かない言語で書いたものを、この形に変換して動かします。
公式ドキュメントは、Emscripten でできることを2つに分けています。1つは、C・C++ と、LLVM を使うほかの言語のコードを WebAssembly に変換して、Web・Node.js・そのほかの WebAssembly の実行環境で動かすことです。もう1つは、ほかの言語の実行環境そのものを WebAssembly に変換して、その言語で書いたコードを間接的に動かすことで、Python と Lua で行われた例が挙げられています。
著作権の表示は「Copyright © 2015, Emscripten Contributors」です。
Emscripten の特徴
Emscripten はゲームを描く機能を持ちません
Emscripten が受け持つのは、すでにあるコードをブラウザで動く形へ変換する部分です。公式ドキュメントは、持ち運べる形で書かれた C・C++ のコードであれば、絵を描き・音を鳴らし・ファイルを読み書きする速さの要るゲームから、Qt のようなアプリの枠組みまで、ほとんどどれでも WebAssembly に変換できるとしています。
実際に変換された例として、公式ドキュメントは Unreal Engine 4 と Unity のエンジンを挙げています。
Emscripten のツールの構成
| ツールの名前 | 何をするか |
|---|---|
| emcc(Emscripten Compiler Frontend) | 中心になるツールです。gcc や clang のような標準のコンパイラとそのまま入れ替えて使え、Clang と LLVM を通して WebAssembly に変換します。同時に、変換したコードを支える JavaScript も書き出します |
| emsdk(Emscripten SDK) | emcc と LLVM を含む一式をまとめて入れるツールです。Linux・Windows・macOS で使えます |
| emrun | 書き出した HTML を動かすためのツールです |
| emcmdprompt.bat | Windows で Emscripten の命令を打つための入口です |
書き出された JavaScript は、Node.js でも、ブラウザの中の HTML からでも動かせます。
Emscripten が書き出すもの
公式ドキュメントは、既定の書き出しの形を WebAssembly とし、これを、とてもよく最適化でき、機械に近い速さで動き、持ち運べて安全な実行の形式だとしています。最適化の多くは自動で行われ、その際に LLVM・Binaryen・Closure Compiler などと組み合わせます。
Emscripten に移すときに直すところ
公式ドキュメントは、持ち運べる形の C・C++ への対応はかなり行き届いているとしています。C の標準ライブラリ、C++ の標準ライブラリ、C++ の例外、SDL2 などへの対応は良好で、OpenGL については OpenGL ES 2.0 の形のコードへの対応が特に良いとしています。
一方で、もとの機械の上で動かす場合と Emscripten の実行環境には違いがあるため、ふつうは元のコードに手を入れることになります。公式ドキュメントは、多くのアプリで直すのは2か所だけだとしています。処理の繰り返しの土台(メインループ)の書き方と、ブラウザと JavaScript の制約に合わせたファイルの扱いです。
Emscripten の絵・音・通信への対応
公式ドキュメントは、絵と音まわりの頁として、Emscripten での WebGPU の使い方、EGL への対応、OpenGL への対応、音の扱いを立てています。このほか、複数の処理の流れ(pthreads)への対応、通信、WebAssembly での SIMD の使い方、C++ の例外への対応、setjmp・longjmp への対応、非同期のコードの扱いが、それぞれ別の頁になっています。
ファイルについては、仮想のファイルの仕組みの説明、ファイルを包んで配る方法、同期の読み出しに対応した置き場の使い方が並びます。C++ と JavaScript のつなぎには Embind と WebIDL Binder の2つが用意されています。
Emscripten の費用とライセンス
Emscripten は無料です。公式ドキュメントのライセンスの頁は、Emscripten が2つのゆるやかなオープンソースのライセンスのもとで提供されていると書いています。MIT ライセンスと、University of Illinois/NCSA Open Source License です。
MIT ライセンスとは
MIT ライセンス(MIT License)は、著作権の表示とライセンス文を残せば、商用も含めて自由に使ってよいとする短い決まりです。
| 項目 | 内容 |
|---|---|
| 費用 | 無料 |
| ライセンス | MIT ライセンスと University of Illinois/NCSA Open Source License の2つ |
| 入手の方法 | Emscripten SDK(emsdk)で一式をまとめて入れます |
| 動く機械 | Linux・Windows・macOS |
2つを並べている理由も、ライセンスの頁に書かれています。実際の違いはほとんど無いが、MIT ライセンスは広く知られていて分かりやすく、University of Illinois/NCSA Open Source License は、必要が生じたときに Emscripten のコードを LLVM 本体へ取り込めるようにするためだとされています。
ライセンスの全文は、公式ドキュメントの同じ頁と GitHub にあり、SDK の一番上の階層にも置かれています。
- Emscripten|公式サイトhttps://emscripten.org/
情報源
- Emscripten — 公式ドキュメントの入口(資料の構成・版の表示)https://emscripten.org/確認日 2026-09-18
- About Emscripten — Emscripten 公式ドキュメント(Emscripten の定義・できること2つ・道具の構成・書き出しの形・移すときに直すところ)https://emscripten.org/docs/introducing_emscripten/about_emscripten.html確認日 2026-09-18
- Open Source License — Emscripten 公式ドキュメント(2つのライセンスとその理由・全文の置き場)https://emscripten.org/docs/introducing_emscripten/emscripten_license.html確認日 2026-09-18