とあるIT屋の独白

ITや経営について主に書きます

WebAssemblyを使う意義

WebAssemblyについて、かなり前になりますが本ブログで取り上げました。
https://toaruit.hatenablog.com/entry/2018/02/10/203926
それから、少し前にW3C勧告でWebの標準になったこともあり、実例はおそらくまだ少ないものの期待されている技術として、たびたび話題になります。ので、今回はWebAssemblyを使う意義について取り上げてみたいと思います。
まずは、あらためてWebAssemblyの概要から。下記の記事にある通り、ブラウザ上でバイトコードを動かす仕組みになります。C言語などからWebAssembly形式のバイナリに、コンパイルできます。

【WebAssembly(wasm)とはなにか?Googleやアップルも関わる期待の技術】
https://yokonoji.work/webassembly-754

WebAssemblyを使う意義ですが、一点目はものによっては速度の向上が見込める、という点です。例えば、ゲームなど計算処理が多くなるような場合は、採用してみてもよいかなと思います。逆にそこまで計算処理を要しないサイトであれば、導入のメリットは薄いのかなと。

【WebAssemblyをちょろっと触って速度測ってみる。】
http://namazu-tech.hatenablog.com/entry/2017/12/02/012600

実際にWebAssemblyを使って、ブラウザで動くよう移植した例は下記の記事に。Doom3のような3Dのゲームでも、移植は難しそうですがいけるみたいです。

【あのDoom3ゲームがWebAssemblyを使ってブラウザ上で動く - Gabriel Cuvillier氏とのQ&A】
https://www.infoq.com/jp/news/2019/10/doom3-web-assembly-port/

また、WebAssemblyで取り組みがされているのはセキュリティ面。Webのアプリで脆弱性ゼロで構築するのは、かなりスキルが求められる感はあります。WebAssemblyを使うことで、脆弱性を突くような処理が実行された際に、プラットフォーム側でブロックのようなことをしてくれるのが、今後期待できるかなと。

【Webアプリの脆弱性から影響を受けないソフト基盤の確立に向けて、「Bytecode Alliance」が発足】
https://www.atmarkit.co.jp/ait/spv/1911/14/news137.html

ちなみに、WebAssemblyを使用してRustだけでWebアプリを作れるフレームワークがあるそうで、開発者にとって利用しやすい取り組みとかも増えそうな感じはしますね。

【Kagura - RustだけでWebアプリケーションを開発するフレームワーク
https://www.moongift.jp/2019/11/kagura-rust%e3%81%a0%e3%81%91%e3%81%a7web%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e9%96%8b%e7%99%ba%e3%81%99%e3%82%8b%e3%83%95%e3%83%ac%e3%83%bc%e3%83%a0/