**Watgo – Go 用 WebAssembly ツールキット**

2026/04/11 4:03

**Watgo – Go 用 WebAssembly ツールキット**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Summary

watgo は Go で書かれた WebAssembly ツールキットで、コマンドラインインターフェースとプログラム的 API の両方を提供し、WAT の解析、公式仕様に対する検証、WASM バイナリへのエンコード、およびバイナリからのデコードを行います。その中核コンポーネントである wasmir は、モジュールの意味的表現を提供し、再エンコードまたはソース(WAT)へ戻す前に検査・操作が可能です。

このツールキットは、カスタム Node.js ハーネスを使用して WebAssembly コアテストスイート全体(約 200 K 行の WAT)を通過し、wabt のインタープリター テストに対しても実行され、

wasm-wat-samples
の現実的なサンプルで試験されています。初期実験では wazero が新しい提案(Garbage Collection など)のサポート不足のため放棄されました。

CLI の使用例

go install github.com/eliben/watgo/cmd/watgo@latest
を実行してインストールし、例えば
watgo parse stack.wat -o stack.wasm
と実行します。

API 例(示例):WAT ファイルを解析し、その関数を反復処理して i32 パラメータの数、local.get 命令、および i32.add 操作をカウントする。

内部の textformat パッケージは、WAT を AST にパースした後で wasmir に正規化しますが、現在は非公開ですが需要が高まれば公開される可能性があります。将来のリリースではテストカバレッジをさらに拡張し、追加の API 機能を導入する予定です。Go 開発者にとって、watgo はコンパイラ、ランタイム、分析ツールなど、WebAssembly モジュールを直接操作できるツールリングの可能性を開き、Go 中心プロジェクトでの WebAssembly の採用を加速させる可能性があります。

本文

Watgo – Go 用 WebAssembly ツールキット

一般公開

純粋Goで構築され、依存関係ゼロのツールキット watgo の一般公開をお知らせします。watgo は WAT(WebAssembly テキスト)を解析し、検証し、WASM バイナリにエンコードし、また WASM を内部表現へデコードすることができます。


コア概念

機能説明
ParseWAT を wasmir(WebAssembly モジュールの意味的表現)に変換します。
Validate公式 WebAssembly の検証規則を適用し、モジュールが正しく構成され安全であることを保証します。
Encodewasmir を WASM バイナリ形式へエミットします。
DecodeWASM バイナリを再び wasmir に読み込みます。

CLI

インストールは次のコマンドで行います。

go install github.com/eliben/watgo/cmd/watgo@latest

CLI は

wasm-tools
と互換性があるよう設計されています。
以下は WAT ファイルを解析し、検証してバイナリ出力を書き込む例です。

watgo parse stack.wat -o stack.wasm

API

*wasmir*
はモジュールの検査・操作に使えるクリーンな Go API を提供します。
以下は簡単な WAT プログラムを解析し、基本的な分析を行うサンプルです。

package main

import (
	"fmt"

	"github.com/eliben/watgo"
	"github.com/eliben/watgo/wasmir"
)

const wasmText = `
(module
  (func (export "add") (param i32 i32) (result i32)
    local.get 0
    local.get 1
    i32.add
  )
  (func (param f32 i32) (result i32)
    local.get 1
    i32.const 1
    i32.add
    drop
    i32.const 0
  )
)`
 
func main() {
	m, err := watgo.ParseWAT([]byte(wasmText))
	if err != nil {
		panic(err)
	}

	i32Params := 0
	localGets := 0
	i32Adds := 0

	for _, fn := range m.Funcs {
		sig := m.Types[fn.TypeIdx]
		for _, param := range sig.Params {
			if param.Kind == wasmir.ValueKindI32 {
				i32Params++
			}
		}

		for _, instr := range fn.Body {
			switch instr.Kind {
			case wasmir.InstrLocalGet:
				localGets++
			case wasmir.InstrI32Add:
				i32Adds++
			}
		}
	}

	fmt.Printf("module-defined funcs: %d\n", len(m.Funcs))
	fmt.Printf("i32 params: %d\n", i32Params)
	fmt.Printf("local.get instructions: %d\n", localGets)
	fmt.Printf("i32.add instructions: %d\n", i32Adds)
}

注記: WAT 形式は構文上の便利さ(折りたたみ命令、名前付き関数/型など)を持っていますが、wasmir に低減される際に正規化されます。これらの詳細は内部

textformat
パッケージに隠蔽されていますが、将来公開する可能性があります。


テスト戦略

Watgo は広範なテストで高い信頼性を実現しています:

  1. 公式 WebAssembly テストスイート – 200 K 行近くの WAT を多数モジュールに渡し、期待される意味論とエラーケースを網羅。
    カスタムハーネスは
    .wast
    ファイルを解析し、watgo でバイナリ WASM に変換後、Node.js で実行します。
  2. Wabt のインタープレータテストスイート – シンプルな Node ベースのハーネスで end‑to‑end テストを実施。
  3. 現実的プログラムサンプル
    wasm-wat-samples
    リポジトリに保存され、内部テストでも利用。

これらの取り組みにより、watgo は WebAssembly 仕様コアテストスイート全体を通過し、wabt のインタープレータテストとも整合性が取れています。


今後の予定

  • textformat
    パッケージは現在内部ですが、ユーザー要望に応じて公開される可能性があります。
  • CLI 機能を拡張し、
    wasm-tools
    の機能とより近づけます。

同じ日のほかのニュース

一覧に戻る →

2026/04/11 7:16

MacBook の角を削り取ること (「Filing the corners off my MacBooks」という表現は、MacBookの角をサンドペーパーやファイルで磨き取り、角を丸めている様子を指します。)

## Japanese Translation: ### 改良された要約 著者は、2026年4月にMacBookの鋭い角を削る方法について説明し、手首に快適に感じられる滑らかでより人間工学的なエッジを目指したと述べています。Apple のアルミニウムユニボディ設計はこのような改造を可能にしますが、狭いノッチは不快感を与えることがあります。そのため、小さな半径の曲線を大きなものに統合しながら、機械を通過してしまわないよう段階的に作業することに重点を置いています。保護措置として、スピーカーとキーボードをテープで覆い、アルミニウム粉塵から守り、ファイル作業中は軽い圧力でラップトップを工作台にクランプしました。プロセスは粗いファイルで始め、その後 150 グリットのサンドペーパーで研磨し、最後に 400 グリットのサンドペーパーで仕上げました。著者は完成した表面品質に満足していると述べています。写真には数か月の使用で蓄積された傷やへこみが写っており、調整が必要だった理由を示しています。この改造は作業用コンピュータ上で行われたものであり、将来の作業用コンピュータも同様の変更を受ける可能性があることを示唆しています。著者は自分のノートパソコンを改造したい他者に対して助けを提供すると述べています

2026/04/11 9:10

アーテミス II は無事に海に帰還しました。

## Japanese Translation: > トランプ大統領はアーテミスIIクルーを称賛し、「現代の開拓者」と呼び、将来の火星ミッションへの示唆を投げかけました。オリオンカプセルは2026年4月10日、サンディエゴから40–50マイル離れた太平洋で午後8時7分(ET)に正確に着水し、乗組員4名が搭乗していました。回収は海軍潜水士と16〜20人のチームによって行われ、カプセルを安定させるためにシーアンカー、膨張式カラー、および筏を取り付けてから乗組員を救出しました。 > > 着水後、カプセルのシステムは電源を切りましたが、短時間の技術的な不具合により完全な電源復帰が回収チーム準備完了まで遅れました。再突入中、宇宙船は等離子体形成による6分間の通信遮断を経験し、熱シールドで約5,000°F(約2,760°C)の温度に達し、秒速約24,661mph(≈3.9Gs)まで加速しました。 > > 乗組員はiPhoneを使用して地球の最終写真を撮影し、「アースセット」と宇宙からしか観測できない月食も収録しました。また、指揮官レイド・ワイズマン氏の故人の妻に敬意を表し「キャロル」という月面クレーター名を付け、別の名前として「インテグリティ」の提案も検討しました。 > > 着水後、カプセルはUSS John P. Murthaへ運ばれ医療点検が行われ、その後海軍基地サンディエゴへ移送されてからケネディ宇宙センターに戻り検査とデータ解析が実施されました。ミッションは地球から最も遠い距離で252,756マイルという新記録を樹立し、アポロ13より4,000マイル以上離れた位置で月面上空4,067マイルを超える接近を達成しました。ミッション・コントロールは着水を「完璧な的中」と表現し、全システムが乗組員救出前に完全に機能していたことを確認しました。 > > CBSニュースは午後7時30分(ET)から着水の午後8時7分までライブ放送を行い、視聴者はオンラインまたはモバイルデバイスで視聴できました。乗組員の総ミッション期間は約9日1時間31分で、地球と月周回で推定694,481マイルに相当する距離を移動しました。 > > 成功裏に帰還したことでNASAのオリオン回収手順への信頼が強化され、将来の深宇宙計画(潜在的な火星ミッションを含む)を支援し、ライブメディア報道による公共の関与も向上しました。

2026/04/11 4:10

ウガンダで研究者らが指摘:チンパンジーは8年間にわたり「内戦」に陥っている ---

## Japanese Translation: (以下は日本語訳です) **改訂要旨** ウガンダのキバレ国立公園にあるンゴゴチンパンジーコミュニティ―かつて最大規模の野生集団(約200頭)―が、2015年6月の脱走をきっかけに、西部と中央という二つの対立派閥へと分裂しました。脱走後は6週間の回避期間が続き、その後対立が激化していきました。2018年までには両集団が完全に別々になり、西部チンパンジーは中央メンバーを標的にした攻撃を開始しました。 分裂以降、研究者たちは**24件の殺害事件**(少なくとも7頭の成人雄と17頭の乳幼児が中央集団から死亡)を記録しており、実際の死亡数はさらに多い可能性があります。暴力の主な要因として3つが挙げられます: 1. 2014年に5頭の成人雄と1頭の雌が死亡し、社会的ネットワークが崩壊したこと; 2. 2015年にアルファ雄が交代し、初期分裂と相まって影響を与えたこと; 3. 2017年に発生した呼吸器感染症流行で25頭のチンパンジー(中でも重要な集団間結びつき役)が死亡したこと。 著者アーロン・サンドルは、チンパンジーの領土性と外部との敵対的相互作用が、人間社会における宗教や政治といった文化的構造なしでも致命的な集団攻撃を引き起こす可能性があると強調しています。この研究は*Science*誌に掲載され、同誌のポッドキャストで取り上げられました。相関関係だけが戦争を説明できるという示唆は、人間の紛争根源を再考する必要性を訴えています。また、資源競争と雄対雄の繁殖闘争もエスカレーションに寄与した可能性が高く、集団分裂が社会を危険にさらす警告として提示されています。 この要旨は主要な事実を全て保持しつつ曖昧な表現を排除し、研究の広範な示唆を明確に記述しています。

**Watgo – Go 用 WebAssembly ツールキット** | そっか~ニュース