アプリ業界気になるニュース
2017.03.17
WebAssemblyの登場で、ブラウザベースのアプリ開発が現実的になるかも?
サーバー開発担当の木下です。
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でできそうなことを、いくつか考えてみました。
- プラグインなしでコンテンツの著作権保護に対応する
- ブラウザーゲームの幅が広がる
- Webベースのハイブリッドアプリが現実的になる
- オンラインオフィススイートが快適になる
HTML5には著作権保護の仕様がまだないため、huluやNetflix、DMM、GYAO!などは今でもSilverlightやFlashを使い続けています。致し方のないこととは思いますが、SliverlightはLinuxに対応していないため、Linux Mint使いの木下はDMMで悲しい思いをすることになります。WebAseemblyがこの代替になれば、環境に依存せず有料コンテンツなどを楽しめるようになるのでは。
既にUnityにも対応しているようですので、WebAssembly対応ゲームが増えてくるのではと期待しています。Webベースですので、PCで遊んでいたゲームの続きをスマホで、というSwitch的なことができるようになるかも。
個人的に大きく期待している部分です。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を使用するアプリの開発も行っております。お気軽にお問い合わせください!