コンテンツに移動
アプリケーション開発

Go 1.24 における Wasm のサポートについてのお知らせ

2025年2月20日
Cameron Balahan

Group Product Manager

Arman Rye

Product Manager

※この投稿は米国時間 2025 年 2 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。

2 10 日の週に Google は、Go 1.24 をリリースしました。これは、Google のオープンソース プログラミング言語の最新バージョンであり、スケーラブルでプロダクション レディなバックエンドおよびクラウドベース システムを効率的に構築できます。

ポスト量子暗号のサポート、弱いポインタの実装、Go ランタイムの大幅なパフォーマンス向上など、Go 1.24 には多くの優れた点があります。また、ネイティブ パフォーマンスに近い速度で、高パフォーマンスな低レベルコードの実行を可能にするバイナリ命令形式である、WebAssemblyWasm)の機能も大幅に拡張されています。新しい「go:wasmexport」コンパイラ ディレクティブと、WebAssembly System InterfaceWASI)用のリアクターを構築する機能により、開発者は Go コードから Wasm に関数をエクスポートできるようになりました(長時間稼働するアプリケーションも含む)。これにより、Wasm ホストとのより深い統合が促進され、Go ベースの Wasm アプリケーションに新たな可能性がもたらされます。

これらの追加は、Wasm に関連する Go の大幅な進化を表しています。エッジで実行されるアプリケーションのように、一部の種類のアプリケーションでは、パフォーマンスが重視されるユースケースに対応するために Wasm が不可欠です。デベロッパーは、Go ならではの機能を活用して、これらのユースケースでもスケーラビリティ、セキュリティ、プロダクション レディな状態を確保できるようになりました。

仕組み

Go はまず、Go 1.11 で「js/wasm」ポートを介した Wasm へのコンパイルのサポートを追加し、Go 1.21 WASI プレビュー 1 syscall API 用の新しいポートを追加しました。Go 1.24 では、新しい「go:wasmexport」コンパイラ ディレクティブにより、Go 関数が Wasm ホストにアクセスできるようになりました。これにより、Wasm ホストがプラグインや他の拡張メカニズムなどの Go アプリケーションを呼び出すことができます。さらに、新しい WASI リアクター ビルド フラグを使用すると、Go アプリケーションは初期化関数の完了後も稼働したままになるため、再初期化しなくても、エクスポートされた関数を呼び出し可能な状態に維持できます。これは、長時間稼働するアプリケーションやサービスにとって重要な機能です。

詳細については、Go ブログのこちらの投稿 Go のドキュメントをご覧ください。

Google Cloud を使用してエッジで Wasm を実行する

このたび、Google Cloud で構築されたアプリケーション用の Go コンパイル済み Wasm プラグインをエッジで実行できるようになりました。そのためには、Google Cloud のアプリケーション ロードバランサで Service Extensions を活用する必要があります。Service Extensions を使用すると、レイテンシが最適なフルマネージド Google 環境のリクエスト / レスポンスパスで独自のカスタムコードを直接実行できるため、ビジネス要件に合わせてロードバランサをカスタマイズできます。コードを提供するだけで、あとは Google Cloud がすべて管理します。

Service Extensions プラグインと Go を使い始めるには、拡大を続ける Google のサンプル リポジトリ(ローカルテスト ツールキットが用意されています)を確認し、ドキュメント内のクイックスタート ガイドに沿って進めてください。

-グループ プロダクト マネージャー Cameron Balahan
-プロダクト マネージャー Arman Rye

投稿先