WebAssemblyが見せる可能性

Blog Single

現在世界的に注目されているWebAssemblyについてご紹介していきます。

WebAssemblyとはウェブブラウザ上で実行可能な低水準プログラム言語で、これまでJavaScript一択だったフロント開発に、CやRustを選択することができるようになります。

そもそもなぜ注目されるようになってきたのかと言いますと、昨今スタンドアロンアプリケーションから、Webブラウザを利用したサービス・アプリケーションへ移行するケースが多くなり、これまで以上にWebが多方面で利用されるようになった事が大きな理由です。
Webアプリケーションは基本的にブラウザを介して利用するサービスなので、端末へのインストールの手間もなく、ブラウザが使える端末ならどこからでもアクセスできます。(Facebook / Twitter など)
そんなブラウザアプリケーションにもデメリットがあります。
スタンドアロンのアプリケーションの場合、端末にインストールすることを前提に開発されているので、OSが許容しているマシン能力を最大限に使う事ができます。さらにセキュリティにはファイアウォールなどが効くので、安全で強固なシステムとしては圧倒的です。
逆にブラウザを介するWebアプリケーションの場合、極力端末に依存しないようブラウザが許容する領域でしか力を発揮できないので、スタンドアロンのアプリケーションに比べると、出来る事が限られてしまいます。ブラウザゲームとインストール型のゲームの例がわかりやすいでしょうか。
WebアプリケーションもJavaScriptを利用する事で、可能な限りマシンの力を引き出せるので、一昔前より自由度の高いデザインや動きを表現できるようになりました。
WebGLなどがその最たる例で、JavaScriptからGPUへアクセスすることを可能とし、滑らかな3Dグラフィクスを表現しています。

しかし最近際立って問題視されているのは、その速度限界とセキュリティ面です。そもそもJavaScriptはその名前の通りスクリプト言語なので、ブラウザで言語が解析され実行されています。なのでコンパイル言語に比べ圧倒的に遅く、ブラウザ処理のレイテンシが致命的となってしまうので、数学的演算処理が必要なゲームなど、特に解析系には不向きとされています。また、実行がブラウザに委ねられるので、ソースコードは誰でも見る事ができ、コピーサイトを作る事も難しくありません。

ではWebAssemblyはどうでしょうか。

WebAssembly

WebAssemblyとは、これまでのJavaScriptに置き換わる技術で、端的に説明すると、CやRustといったコンパイル言語を採用することができるようになります。
ブラウザはJavaScriptの実行環境なので、必然的にJavaScriptの選択肢しかありませんでしたが、WebAssemblyはCやRustのプログラムをWebAssemblyと呼ばれる低水準言語にコンパイルしブラウザ上で実行します。これによりコード自体も軽量化され、条件次第で実行速度はJavaScriptの3倍とされています。
数値演算はコンパイル言語の得意領域ですし、コンパイルすることでコードも隠蔽されます。上記で問題とされた速度とセキュリティの両方を解決できるのです。

何より、JavaScript以外の言語を利用できるということが重要で、これから先、WebAssemblyへのコンパイルがサポートされれば、エンジニアの得意とする言語でWebアプリケーションを開発することが出来るようになります。

FireFoxで有名なmozillaは、Rustの開発元で、FireFoxにはすでにWebAssemblyの実行をサポートしております。(Chrome 57 / Firefox 52 でWebAssembly対応)

先の説明で置き換わると説明しましたが、決してJavaScript自体が無くなるという訳ではありません。これまで培ってきたJavaScriptのレガシーは洗練されおり、ページの動きやアニメーションにJavaScriptはこれからも利用され続けるでしょう。

Posted by SakaiYasuhiro
PHP,NodeJS,Reactを主に使っているが、デザイン周りもこなす何でも屋。 自称: 可能性の獣

Other Posts: