GoでWebAssembly――Go標準のWebAssemblyサポートを体験するいろんな言語で試す、WebAssembly入門(6)

第6回は、Go言語における開発事例を紹介します。GoからのJavaScript関数呼び出し、JavaScriptからのGo関数の呼び出しについても紹介します。

» 2023年05月19日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「いろんな言語で試す、WebAssembly入門」のインデックス

連載:いろんな言語で試す、WebAssembly入門

 本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。


GoとWebAssembly

 今回は、プログラミング言語GoによるWebAssemblyプログラムの開発を紹介します。Goは、Googleの開発したプログラミング言語であり、WebAssemblyへの対応も積極的に行われています。C/C++やRustでは、EmscriptenやRust and WebAssemblyのような外部プロジェクトとの連携でWebAssembly対応を果たしていました。Goでは、直接WebAssemblyバイナリをターゲットにできるなど、言語レベルでWebAssemblyに対応しているのが特徴です。そのため、Goの言語環境を整える以外の特別な環境整備が不要で、すぐに標準ライブラリを含めたGoの言語仕様を十分に生かしたWebAssemblyプログラムを作成することができます。

 Goは、C/C++やRustと同様にネイティブコードをターゲットにしたプログラミング言語であるので、その高い効率と高速性を生かした使い方が、同様に真価を発揮しやすいといえます。連載第1回でも紹介したように、まずは速度が重視される部分をGoが受け持つというのが自然な使われ方でしょう。

 本稿では、それを前提にJavaScriptコードとの連携まで含めた、GoによるWebAssemblyプログラムの開発を紹介していきます。

環境準備

 Goによる開発のために、以下に挙げるソフトウェアを準備しておきます。コードエディタの他にはGoの言語環境を用意するだけなので、非常にシンプルです。以降、操作例はmacOSによるものを示しますが、適宜Windows環境についても補足します。

  • コードエディタとしてのVisual Studio Code(以降、VSCode)
  • Go(1.11以降)

 Goがインストールされていない場合、macOS環境、Windows環境ともに以下からインストーラをダウンロードしてインストールすることができます。macOSではHomebrewも利用できます。

All releases - The Go Programming Language

 WebAssemblyをターゲットにする場合、Goのバージョンは1.11以降である必要があります。バージョンは、以下のように確認できます(この場合はGo 1.20.2)。

% go version
go version go1.20.2 darwin/amd64

【補足】VSCodeにはGo拡張機能をインストールしておく

 VSCodeでGoをプログラミングするなら、その名の通りのGo拡張機能をインストールしておきましょう。この拡張機能では、IntelliSenseやデバッグ機能が追加されます。拡張機能をインストールしてGoのソースコードを開くと、goplsやgo-outlineなどのGoのツールのインストールを促すポップアップが表示されますので、[Install]をクリックしてインストールしましょう。

図1 VSCodeのGo拡張機能によるツールのインストール 図1 VSCodeのGo拡張機能によるツールのインストール

 goplsは「Go please」の略で、Goの公式Language Serverです。Language Serverとは、例えばVSCodeの場合は言語ごとの補完機能やフォーマッタ、定義参照などの機能を提供するための仕組みです。go-outlineは文字通り、Goのソースファイルから定義などをJSON形式で抽出するのためのツールです。

プロジェクトの作成と実行

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。