INDIE INDEX

リリース

Emscripten とは|C と C++ をブラウザで動く形に変換するツール

公開 2026-09-18更新 2026-09-18Emscripten

Emscripten は、C と C++ で書いたコードを、ブラウザの中で動く形式へ変換するためのコンパイラの一式です。変換したものは、ブラウザのほか Node.js でも動きます。

分類
ビルド・配信・ストア提出の補助
制作の流れ
リリース
日本語対応
日本語非対応
費用
無料(MIT ライセンスと University of Illinois/NCSA Open Source License の2つ)
公式サイト
https://emscripten.org/確認日 2026-09-18
このページの目次
  1. Emscripten の概要
  2. Emscripten の特徴
  3. Emscripten の費用とライセンス
  4. 情報源

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」です。

【公式】https://emscripten.org/

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++ の例外への対応、setjmplongjmp への対応、非同期のコードの扱いが、それぞれ別の頁になっています。

ファイルについては、仮想のファイルの仕組みの説明、ファイルを包んで配る方法、同期の読み出しに対応した置き場の使い方が並びます。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 のページに出た言葉

Emscripten と同じ分類のほかのツールビルド・配信・ストア提出の補助 全23件

ビルド・配信・ストア提出の補助の一覧を見る