概要
TinyGoは、Go言語を組み込みシステムやWebAssembly(WASM)向けに利用可能にするLLVMベースの新しいコンパイラ。 100種類以上のマイコンボードや産業用プロセッサに対応。 WASMコード生成にも対応し、ブラウザやサーバー、エッジコンピューティング環境でも動作可能。 オープンソースで、GitHubやMastodonでも情報発信。 オンラインでTinyGoを試せるプレイグラウンドも提供。
TinyGoとは
- Go言語 を 組み込みシステム や WebAssembly 向けに動作させるための LLVMベース コンパイラ
- 100種類以上の マイコンボード と 産業用プロセッサ への対応
- 例: BBC micro:bit、 Arduino Uno、 Nordic Semiconductor、 ST Microelectronics
- WebAssembly(WASM) コードの生成機能
- ブラウザ や サーバー、 エッジコンピューティング 環境での利用
- WebAssembly System Interface(WASI) ファミリーのインターフェース対応
- コードサイズ が非常に小さいことが特徴
TinyGoの始め方
- 公式ウェブサイト から セットアップガイド や チュートリアル を参照
- TinyGo Playground でオンライン実行・試用が可能
- GitHub でソースコードやドキュメントを公開
- Mastodon でコミュニティ参加・情報交換が可能
主な利用シーン
- 組み込みシステム開発
- マイコンボード を使ったIoTプロトタイピング
- WebAssembly開発
- ウェブブラウザ 向けアプリケーション
- サーバー や エッジデバイス 向けの高速・軽量なGoアプリケーション
参考リンク
- 公式ウェブサイト: TinyGo公式ページ
- GitHub: 最新コードやIssueトラッキング
- Mastodon: コミュニティ交流・最新情報
- TinyGo Playground: オンラインでのコード実行環境
Tinygoは年々進化してるね。最近はmacOSのサポートも始めたし!確かに、macOS用のバイナリもかなり小さくなるよ。 yuriy@MacBookAir ~/t/tinygo> time tinygo build -o test-tiny main.go
実行時間: 1.06秒 fish外部 usr 時間: 1.18秒 0.31ミリ秒 sys 時間: 0.18秒 1.50ミリ秒 0.18秒 yuriy@MacBookAir ~/t/tinygo> time go build -o test-normal main.go
実行時間: 75.79ミリ秒 fish外部 usr 時間: 64.06ミリ秒 0.41ミリ秒 63.64ミリ秒 sys 時間: 96.76ミリ秒 1.75ミリ秒 95.01ミリ秒 yuriy@MacBookAir ~/t/tinygo> ll 合計 5096 -rw-r--r--@ 1 yuriy staff 74B 3 Apr 19:17 main.go -rwxr-xr-x@ 1 yuriy staff 2.3M 3 Apr 19:18 test-normal* -rwxr-xr-x@ 1 yuriy staff 192K 3 Apr 19:18 test-tiny* yuriy@MacBookAir ~/t/tinygo> cat main.go package main import "fmt" func main() { fmt.Printf("Hello world!\n") }