Repolode
tinygo-org

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. 1

    Getting Started の手順に従って TinyGo をインストールする

  2. 2

    blinky のサンプルを Arduino Uno 向けにコンパイルして書き込む

    tinygo flash -target arduino-uno examples/blinky1
  3. 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 の数値は毎日更新されます。

関連プロジェクト