WebAssemblyの登場で、ブラウザベースのアプリ開発が現実的になるかも?

YK0I9A6202_TP_V

サーバー開発担当の木下です。
Nintendo Switchが発売されましたね。Joy-Conに搭載されているジャイロ・加速度センサーはスマホにもありますが、これを上手に活用した1-2-Switchのおもしろさは任天堂ならではだな、と感じました。

さて今回は、WebAssemblyの話です。

WebブラウザーのWebAssembly正式対応が進む

3月7日にFirefox 52が、9日にChrome 57が正式リリースされました。Firefoxはプラグイン制度の廃止、Chromeはバックグラウンドタブの電力消費抑制などがありました。さらに、どちらも今回のリリースで「WebAssembly」がサポートされるようになり、ブラウザーで高度かつ高速な処理ができるようになりました。

WebAssemblyとは

これまでWebブラウザーで動く高度なアプリケーションといえば、Adobe FlashやSilverlight、Java Appletなどを使用するのが一般的でした。しかしどれも、ブラウザー側にプラグインを入れる必要があり、しかも動作が重いなどのデメリットがありました。
最近では、HTML5のAPIやJavaScriptフレームワークの充実のおかげで、プラグインなしで出来ることが増えてきました。たとえばYouTubeは以前Flashで動画を再生していましたが、現在はHTML5の標準仕様に沿って実装されています。さらにはAngularやReactなどの優れたフレームワークのおかげで、大規模なシステムをJavaScriptだけで構築できるようになりました。
ただ一方で、JavaScriptはその名の通りスクリプト言語であり、処理の度に必要なソースをインタープリタに通したりコンパイルしたりするため、ゲームなどに不可欠なリアルタイム性は保証されていません。
このような背景で、「どのブラウザーでもプラグインなしで、高速かつ高度な処理ができる環境」というニーズが出てきました。そしてこれを解決してくれるのがWebAssemblyです。

WebAssemblyは何がすごいのか

前述のように、JavaScriptはスクリプト言語であり、インタープリタによる処理を必要とします。それに対してWebAssemblyは、C/C++で記述し、コンパイルされたものをブラウザーに送ります。コンパイル済みなので、(ほぼ)マシン語であり、ブラウザーは受け取ったらすぐに実行することができます。
これまで、「コンパイル済みの実行ファイル」は実行環境に大きく依存していました。たとえばiOS向けに作成したアプリをAndroidやWindowsで動かすことはできませんし、CPUのアーキテクチャが変わると動かないなんていうこともあります。FlashはWindowsやmacOSで実行できましたが、iOSには結局対応せずでした。
しかしWebAssembly向けにコンパイルされた実行ファイルは、OS等の環境に依存せず、ただブラウザーが対応していれば動かすことができます。理論上はAndroidやiOSのモバイルブラウザーでも実装でき、実際開発が進められているようです。

どのような活用が期待できるのか

WebAssemblyでできそうなことを、いくつか考えてみました。

  • プラグインなしでコンテンツの著作権保護に対応する
  • HTML5には著作権保護の仕様がまだないため、huluやNetflix、DMM、GYAO!などは今でもSilverlightやFlashを使い続けています。致し方のないこととは思いますが、SliverlightはLinuxに対応していないため、Linux Mint使いの木下はDMMで悲しい思いをすることになります。WebAseemblyがこの代替になれば、環境に依存せず有料コンテンツなどを楽しめるようになるのでは。

  • ブラウザーゲームの幅が広がる
  • 既にUnityにも対応しているようですので、WebAssembly対応ゲームが増えてくるのではと期待しています。Webベースですので、PCで遊んでいたゲームの続きをスマホで、というSwitch的なことができるようになるかも。

  • Webベースのハイブリッドアプリが現実的になる
  • 個人的に大きく期待している部分です。HTML5/JavaScriptでアプリを作るというトレンドは、動作の重さなどから落ち着いてしまいましたが、WebAssemblyであればネイティブに近い動作速度を得られるため、アプリ制作が現実的になってくるのでは。

  • オンラインオフィススイートが快適になる
  • 仕事・プライベートで、Google SpreadsheetやSlides, Dropbox Paperなどを活用しています。動作速度はかなり改善されてきていますが、それでも若干重いなーと感じることがしばしばあります。ここがWebAssemblyになれば、かなり快適になるかも。

こんな感じでしょうか。Webの可能性をさらに広げてくれることは間違いないと思います。

サンプルなど

すでにいくつかのサンプルアプリが作られているようです。
http://webassembly.org/demo/
webassembly.orgにある公式のデモアプリです。シンプルなゲームではありますが、プラグインなしでヌルヌル動く様子はちょっと驚きです。

https://s3.amazonaws.com/mozilla-games/ZenGarden/EpicZenGarden.html(直リンクです)
Mozillaが提供しているデモアプリです。100MB超なので読込に時間がかかりますが、実際の実行速度の速さはさすがです。

また弊社では、WebやUnityを使用するアプリの開発も行っております。お気軽にお問い合わせください!

木下 晴晶
e.d.aではサーバー・APIの開発を担当。Plamo->Fedora->Ubuntu->CentOSとわたり歩く生粋のLinux好き。趣味はゆったりした鉄道旅行。

Egg Device Application

東京品川のスマホアプリ開発会社です。
一般アプリ、業務用アプリからVRまで開発可能。

ライター一覧

求人情報

スマホアプリ開発の
相談を受け付けています

メールでのご相談

お電話でのご相談
TEL 03-5422-7524
平日10:00~18:00