小型MCUからLinuxベースのMPUまで、組み込み機器向けのGUIを構築できる、MITライセンスの無償C UIライブラリ。
tinygo-org/tinygo
LLVMを基盤とするGoコンパイラ。マイクロコントローラー、WebAssembly(WASM/WASI)、コマンドラインツール向けにビルドできます。
- スター
- 17,828
- フォーク
- 1,093
- 未解決の Issue
- 601
- 最終コミット
- 12 時間前
これは何?
TinyGoは、小規模な環境を対象としたGoコンパイラです。標準Goツールチェーンのライブラリの一部を再利用し、バックエンドにLLVMを採用しているため、同じGoソースコードからマイクロコントローラーボード、WebAssemblyランタイム、デスクトップOS向けのビルドを作成できます。
組み込み環境では、machineパッケージを使ってGPIOピンや周辺機器を制御できます。Arduino、Adafruit、Seeed Studioの製品を含む、多数のボードに対応しています。ターゲットを指定すれば、tinygo flashコマンドでプログラムを直接書き込めます。WebAssemblyでは、ブラウザー向け(WASM)とWASIランタイム向けのモジュールを生成でき、Fastly Compute、Fermyon Spin、wazeroなどのプラットフォームで利用できます。
プロジェクトが掲げる目標は、バイナリーを非常に小さくすること、一般的なボードを幅広くサポートすること、そして標準ライブラリの大半のパッケージとGoコードを変更せずにコンパイルできることです。一方で、標準のgcコンパイラと同等の性能や、あらゆるGoプログラムのコンパイルは目指していません。
主な機能
- 01150種類を超えるマイクロコントローラーボード向けにGoプログラムをコンパイルできます。
- 02ブラウザー向け(WASM)とWASIランタイム向けの両方のWebAssemblyモジュールを生成できます。
- 03Cコードを出力する代わりに、コード生成バックエンドとしてLLVMを使用します。
- 04Linux、macOS、Windows向けのビルドに対応しています。
- 05flashやbuildサブコマンドを備えたtinygoコマンドラインツールを提供します。
ユースケース
- Arduino、micro:bitなどの小型ボード向けファームウェアをGoで開発する。
- WebAssemblyを介して、ブラウザーやエッジプラットフォームで動作するGoコードをビルドする。
- Fermyon Spinやwazeroなどのランタイム向けにWASIコンポーネントを作成する。
- リソースに制約のあるデバイス向けに、コンパイル後のバイナリーを小さく保つ。
クイックスタート
- 1
Getting Started の手順に従って TinyGo をインストールする
- 2
blinky のサンプルを Arduino Uno 向けにコンパイルして書き込む
tinygo flash -target arduino-uno examples/blinky1 - 3
WASI プログラムを WebAssembly モジュールにビルドする
tinygo build -buildmode=c-shared -o add.wasm -target=wasip1 add.go
使う前に知っておきたいこと
- すべての Go プログラムがコンパイルできるわけではありません。このプロジェクトは、すべての Go コードをサポートすることを明確に目指していません。
- 同梱コードの一部は LLVM および Teensy ライブラリに由来し、それぞれ別のライセンスが適用されるため、ライセンスが混在しています。
トピック
よくある質問
- tinygo とは?
- LLVMを基盤とするGoコンパイラ。マイクロコントローラー、WebAssembly(WASM/WASI)、コマンドラインツール向けにビルドできます。 TinyGoは、小規模な環境を対象としたGoコンパイラです。標準Goツールチェーンのライブラリの一部を再利用し、バックエンドにLLVMを採用しているため、同じGoソースコードからマイクロコントローラーボード、WebAssemblyランタイム、デスクトップOS向けのビルドを作成できます。
- tinygo は無料で使えますか?ライセンスは?
- tinygo は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- tinygo は今もメンテナンスされていますか?
- 活発にメンテナンス中。tinygo の最終コミットは 2026年10月21日 です。
- tinygo は何に使えますか?
- Arduino、micro:bitなどの小型ボード向けファームウェアをGoで開発する。 WebAssemblyを介して、ブラウザーやエッジプラットフォームで動作するGoコードをビルドする。 Fermyon Spinやwazeroなどのランタイム向けにWASIコンポーネントを作成する。 リソースに制約のあるデバイス向けに、コンパイル後のバイナリーを小さく保つ。
- tinygo のインストール方法は?
- Getting Started の手順に従って TinyGo をインストールする blinky のサンプルを Arduino Uno 向けにコンパイルして書き込む: tinygo flash -target arduino-uno examples/blinky1 WASI プログラムを WebAssembly モジュールにビルドする: tinygo build -buildmode=c-shared -o add.wasm -target=wasip1 add.go
- tinygo はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/tinygo-org/tinygo
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
マイクロコントローラーなどのリソースが限られたデバイスで動作し、ハードウェアアクセス用モジュールを備えた軽量なPython 3実装。
C/C++コードをWebAssemblyに変換し、ブラウザーやNode.jsなどのWasmランタイムで実行できるコンパイラツールチェーン。
音声でデバイス間に少量のデータを送れる、Python、JavaScript、マイコンから利用可能な小型C++ライブラリ。
ESP32を搭載し、OLEDの顔とサーボ駆動の歩行機能を備えた、オープンソースの3Dプリント対応ミニ四足歩行ロボット。
Node.jsなしで動作するネイティブ実行ファイルやWebAssemblyを生成する実験的なTypeScript/JavaScriptコンパイラ。