これは来るんじゃないだろうか…。 Go1.11でJavaScript APIが実装され、WebAssemblyからDOMやネットワークにアクセスできるようになりました。しかし、そのコードは通常のGoのコードと異なり、JavaScriptと比べても分かりづらいものでした。 しかし将来的にうまくラッピングしたライブラリが出るだろうと思っていたのですが、それはVuguによって予想以上に早く実現されました。

Vuguの使い方

Vuguのメインとなるコードです。Vue風にWeb Component調にまとまっているのが分かります。

<div class="my-first-vugu-comp">
    <button @click="data.Toggle()">Test</button>
    <div vg-if="data.Show">I am here!!</div>
</div>

<style>
.my-first-vugu-comp { background: #eee; }
</style>

<script type="application/x-go">
type RootData struct { Show bool }
func (data *RootData) Toggle() { data.Show = !data.Show }
</script>

しかし書かれているのはGoです。実行すると動的にWebAssemblyが生成されて、Webアプリケーションとして動作します。

Vuguを使うことでVueのようにGoを使ってWebアプリケーションが開発できます。しかもWebAssemblyなので高速に動作します。JavaScriptに変換される訳ではないので、ネイティブ並の速度で実行されるのがメリットです。難読化もJavaScript以上になります。

個人的にはRailsをはじめて触った時くらいの衝撃がありました。まだまだ実験的な段階ですが、今後に大いに期待がかかるライブラリです。

VuguはGo製のオープンソース・ソフトウェア(MIT License)です。

Vugu: A modern UI library for Go+WebAssembly vugu/vugu: Vugu: A modern UI library for Go+WebAssembly (experimental)