今一人一台スマホを持ち歩く時代。様々なアプリが登場し、ユーザーのニーズを満たし、デジタル社会になくてはならないものとなっています。しかし、今後開発者サイドから見ると、スマホアプリに特化した開発を行わなければいけない部分を、WEBアセンブリを活用することでWEBとスマホの垣根を取り払うことができる可能性があります。
今回はこれからの技術開発のスタンダードになりうる?「WEBアセンブリ」についてご紹介。
WEBアセンブリとは?
ブラウザからアセンブリ(機械語)を実行できるようにする技術。
高速化手段、あるいはJavaScriptの処理系にできないことをするといった目的で提案され、2015年6月、Mozilla、Google、Microsoft、Appleが標準フォーマットとして開発することに合意しました。
当初、JavascriptはHTMLに飾り付けをする程度だったが、最近では、
・複雑なアニメーション
・WebGL(ウェブジーエル)(※ウェブブラウザで3次元コンピュータグラフィックスを表示させるための標準仕様)などのグラフィック、画像処理
・計算速度の遅いモバイル端末
などにも用途が広がり、実行速度が求められるようになってきた経緯から、WEBアセンブリが生まれました。
2013年頃、asm.js(読み:アスム)が誕生したが、ファイルサイズが増大&通信量増加することから、WEBアセンブリに移行。WEBアセンブリはasm.jsに比べてファイルサイズが小さくなり、ロード時間が短くなります。
既に、C/C++言語、RustやGo言語などのプログラミング言語がWebAssemblyに対応しています。
WebAssemblyのバイナリファイルを出力するのではなく、WebAssembly上で動くというのであれば、PythonやRubyなどのスクリプト言語も動かすことができます。
WEBアセンブリの可能性、およびWEBの凄さ
WebAssemblyを使えば、C/C++などで公開された既存のソースをWebAssemblyにコンパイルして利用することも可能になるため、Web上できることが大きく広がります。多様なアプリをWebアプリとして動かせる。主要なWebブラウザーであるChromeやFirefox、EdgeなどはWebAssemblyに対応済みなので、今後の普及が見込まれます。
Web のすばらしさは、どこででも動く点です。スマホアプリのようにダウンロードもインストールも必要ありません。
必要になった時に 1 クリックすれば、ただちに Web アプリケーションはこちらにやって来ます。
セキュリテイ面においても、コンピューターにバイナリをダウンロードして直接実行するよりも、安全です。
なぜならブラウザは、セキュリティ性を念頭に置いて設計されているため、コードが実行された時にあなたのシステムが壊されない可能性が高いです。
そして Web では、何かを共有することは、何かを得るのと同じように、簡単に実現できます――リンクはどこにでも持ち運べる文字列です。
Web は、アプリケーションをあらゆるデバイスに対して適用可能にする、唯一の真に普遍的なプラットフォームです。
私たちは単一のコードベースをメンテナンスするだけで良くなります。アップデートはシンプルなタスクになります。さらには、すべてのユーザーがアプリケーションにアクセスできると見込めるようになります。
・スピード
・移植性
・柔軟性
この3つが強みです。
最近だとWebAssemblyをUnityで扱えるようにすることも可能のようで、C#(シーシャープ)からWebAssemblyを利用できるようにするやり方があるようです。
githubページ▼
詳細はこちら
WEBアセンブリの使い方
WebAssemblyの生成の際には、Emscripten (えむすくりぷとん)を利用して C/C++ で書いたコードから作るのが一般的かもしれません、
WEBアセンブリファイルの準備のためのサイトのリンクも共有します。
詳細はこちらちなみに上記サイトはCとC++両方でコードを書けてWebAssemblyにコンパイルできます。が、C++だとマングリングされてしまって、C#から利用する際に関数名などが分からなくなってしまうのでCでコンパイルするといいでしょう。