コンテンツへスキップ

GoではじめるWebAssebmly その2「JavaScriptイベントハンドリング」

by : 2018/12/14

WebAssebmlyはWebブラウザ上でバイナリファイル(テキスト形式もあり)を実行できる環境です。JavaScriptと異なりコードの漏洩がなく、実行速度も高速というのがメリットです。

WebAssebmlyは元々Rustで開発することが多かったですが、最近では様々なプログラミング言語が対応しています。その一つがGoです。Go 1.11からWebAssembly向けにもコンパイルできるようになっています。

一般的なWebAssemblyはDOMやネットワーク操作が行えません。それに対してGo 1.11ではJavaScript APIを使えるようにした syscall/js パッケージを用いることで、DOMやネットワーク操作を可能にしています。

そこで今回はDOMのクリックイベントをWebAssemblyで扱う方法を紹介します。

まずGoのコードです。今回はmain.goとしています。最初に syscall/js をインポートします。

そして、トップレベルのDOMであるドキュメントを作成します。

IDやクラスを使ってDOMを取得します。

取得したボタンに対してコールバックを指定します。

ボタンのクリックイベントにコールバックを指定します。

最後にプログラムが終了しないようにチャネルを待ち受けます。

これで完成です。全体のコードは次のようになります。

HTMLを準備する

HTMLはボタンを貼り付けだけのものです。

JavaScriptファイルを用意する

専用のJavaScriptファイルを設置します。

Goをコンパイルする

最後にGoファイルをコンパイルして WebAssebmly化します。

サーバを立ち上げる

Webサーバは goexec を用います。インストールは go get -u github.com/shurcooL/goexec になります。インストールされたら以下のコマンドでHTTPサーバを立ち上げます。

これで http://localhost:8080/ でアクセスできます。

試す

では実際に試しているところです。ボタンをクリックすると開発者ツールのコンソールにログが出力されます。

このようにしてGoのコードからイベントハンドリングができます。


Goを使うことでWebアプリケーションをまるっとWebAssemblyで提供できる可能性が出てきました。高速、かつコードの隠蔽化も実現しますのでWebアプリケーションの可能性を飛躍的に向上できるでしょう。

ぜひトライしてみてください。

From → HTML5

コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。