カテゴリーアーカイブ C++

takahashi 著者:takahashi

Webブラウザで動くVimとWebAssembly

ふとニュースを見ていたら、こんな記事を発見。

テキストエディター戦争は「Vim」がまた一歩リードか、Webブラウザーで動作可能に – 窓の杜

LinuxをはじめとしたOSでよく使われるCUIテキストエディタ”Vim”を、なんとブラウザ上で動作するウェブアプリケーションとして移植してしまった方がいるらしい。

ソースのページである
Vim を WebAssembly に移植した – はやくプログラムになりたい

というサイトから、デモページに飛ぶことができるようです。
実際にアクセスしてみました。

おおおすごい!
本当にVimがブラウザで動いてる!!!

まさかJavascriptで一から書き直したのか…!?!?
と思ってしまいますが、実はVimを”WebAssembly”という形式のバイナリにビルドすることによって動作を可能にしたとのこと。

WebAssemblyとは、ブラウザ上で動作するバイナリ形式の規格で、現時点ではC/C++やRustなどといった言語からバイナリファイルを生成し、WebAssemblyに対応したブラウザ上で直接実行できるとのこと。

この辺りの記事が詳しそうです。
【2017年4月版】WebAssemblyとは?〜実際にC言語をブラウザで動かす〜 – Qiita

記事の中にはUnityで作られたゲームをWebAssemblyでブラウザ上で動作させてしまうデモもありました。すげぇ…
ただ、現時点ではWebAssemblyからDOMの描画ができないようで、今回のVimの移植では、描画部分はjavascriptを利用しているとのことです。

Webプログラマなのにこういうこと言ってしまうのもアレですが、実は自分はJavascriptが”嫌い”です。
その理由の一つに、ブラウザによって動作速度が異なる(非常に遅くなる)、という点があります。
ライトなWebアプリなら全く問題はないのですが、ブラウザ側でどうしても重い処理をせざるを得ない状況になると、いつも大きな悩みの種になります。

今後、WebAssemblyのようにブラウザ上でバイナリを動作させられる環境が整えば、こういった重い処理を高速化する際の選択の幅が広がることになるので、個人的にはとても嬉しい話です。

また、CやC++を得意とした方が、Webプログラミングに参加しやすくなるという意味でも、非常にいい流れなのではないかなと思います。

是非実用的に利用できるレベルまで発展していってほしいですね…!

  • この記事いいね! (0)