Help us understand the problem. What is going on with this article?

WebAssemblyの紹介(2018年冬版)

More than 1 year has passed since last update.

WebAssembly Advent Calendar 2018の1日目です。

WebAssembly:バイナリフォーマット

WebAssemblyとはソフトウェアパッケージを記述するためのバイナリフォーマットの1種です。WebAssemblyコミュニティグループで機能が議論され、W3Cでその仕様が定められています。

その特徴は以下の4点です。

  • 安全
  • ポータブル
  • 高速
  • Webのエコシステムに組み込める

Webブラウザの上で高速にプログラムを動かすには、サイズを小さくできるバイナリフォーマットが必要で、しかも効率良いネイティブコードへ変換を助ける情報が必要、という2つの要求を満たすために議論が始まったという経緯のため、Webブラウザの上で動くために必要な上記の特徴を持っている点が興味深いフォーマットとなっています。

利用できる環境

Apple, Google, Microsoft, Mozillaのモダンなブラウザベンダが初期から議論に参加しているため、現行のほとんどのモダンブラウザの上で利用できます

  • Chrome
  • Safari
  • Edge
  • Firefox

上記のブラウザは、モバイル版も含め動作します。

Chromeの場合、そのJavaScript処理系であるV8の一部としてWebAssemblyの処理系を実装しています。そのため、V8を利用しているnode.jsでもWebAssemblyが動作します。

利用例

利用例は上記の4点のどれを重要視するかによってカテゴリー分けできます。安全であることは、大前提であることもあるので、利用目的は次の3つに大別できます。

  • ブラウザ上の動かすプログラムの高速化
  • 既存ソフトウェア資産を利用したWebコンテンツの作成
  • ユニバーサルバイナリとして利用

それぞれの例は、別の記事で参照することにします。

開発に使える言語

開発の方法は2つあります。

1つはWebAssemblyをターゲットとしたコンパイルを行う方法で、C / C++ / Rust / Go などが利用できます。

もう1つはWebAssemblyに出力されたインタプリタを使って、他の言語で書かれたプログラムを動かす方法です。PerlLUAなどが代表例です。

まとめ

JS以外の言語で書かれたプログラムをWebの世界にもちこめるのがWebAssemblyの成果です。その特徴のどれを生かすかによって、面白い使い方が見えてくるかと思います。

chikoski
A transport matrix.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした