WebAssembly についてまとめてみた (2018年2月)

目次

概要

巷で話題のWebAssemblyについて色々と調べてみたので、その調べた結果を紹介します。

WebAssemblyとは

まず、WebAssemblyとは何であるのかということを説明したいのですが、その前に、Assembly(アセンブリ)というものを説明します。

Assemblyとは、バイナリや機械語と呼ばれるようなコンピュータが理解する命令を人間がみやすく整形したものです。

様々なプログラミング言語で書かれたソースコードについても人間が見やすいという意味で同じですが、ソースコードをコンパイルした結果であるコンピュータが理解できる機械語を人間がみやすいようにしたものがアセンブリなので、プログラミング言語とは異なります。

このことを踏まえて、WebAssemblyとは、ブラウザで動作するAssemblyのことを表します。

今までは、ブラウザの表示内容を変更したい場合には、JavaScriptというプログラミング言語を使って行うしか選択肢がありませんでした。

WebAssemblyはこの常識を打ち破る新しいブラウザを操作する方法となります。

動作

JavaScriptを使っている場合は、ブラウザがそのJavaScriptを読み込んで、それをブラウザ内でコンパイルして利用していました。

しかしWebAssemblyの場合は、WebAssemblyというAssemblyをブラウザが読み込んで動作します。

そのため、WebAssemblyを生成できるのであれば、JavaScript以外のC言語やPythonなど他の言語を使うことができるということです。

基本的に各プログラミング言語のWebAssemblyへの対応方法として、コンパイラを使って実行ファイルを生成していたものを、コンパイラを使ってWebAssemblyを生成するようにすることで対応しています。

そのため、C言語やRustのようなコンパイルをしてから実行するような言語でWebAssemblyへの対応が早いという印象があります。

実際に、WebAssemblyをどのように生成するかは、まだ新しい技術ということで生成方法が難しいなど対応が追いついていませんが、徐々に環境が整いつつあるので、JavaScriptの代わりにPythonを使ってブラウザを操作できるというのも時間の問題です。

これらのプログラミング言語を使うことができる利点として、すでにあるライブラリを使うことができるということがあります。例えばOpenCVを使うことができれば通常サーバ側でしていた画像処理をブラウザでやるということが可能です。

ブラウザの対応

WebAssemblyを使おうと思った際に気になるのは、どれくらいブラウザがWebAssemblyに対応しているかということだと思います。

現状、IEや一部のスマホ向けブラウザを除いたブラウザで使うことができます。

しかし、最近のブラウザでしか動作しないということでもあるので、まだ導入には早いと思うかもしれません。その場合は現状では諦めるしかないです。使われているブラウザで動作するような未来を待つしかありません。

まとめ

WebAssemblyを理解することができたでしょうか。

要点として、JavaScriptに変わるブラウザの操作方法ということです。

現在では、色々なプログラミング言語で動作するようにそれぞれのプログラミング言語ごとに、開発中ではありますがWebAssemblyを生成する方法が開発されています。

しかし、調べてみると分かるのですがWebAssemblyを生成するのは非常に面倒臭いです。

このWebAssemblyの生成方法が簡単になればこれからもっとこの技術は普及すると思うので、情報を追いかけておいて損はないでしょう。