Google Colabというと、Pythonや機械学習の実行環境というイメージが強いかもしれません。
しかし、少し工夫するだけで、Go言語の開発環境としても利用できます。
本記事では、
- Google Colab上でGo言語を利用する
- Goプログラムを実行する
- バイナリをビルドする
- 作成した実行ファイルをダウンロードする
までの流れを紹介します。
対象読者
- Google Colabを使ったことがある人
- Go言語を学習してみたい人
- ローカル環境を汚さずにGoを試したい人
なお、「Google ColabでGoのプログラミングを進めるイメージが全然わかない!」という人は、まずは下記記事を読んでみてください。
まずは、簡単な例でプログラムファイルを作る→実行
セルで、以下の記述を実行します。ここまでは、Google Colabで、あえてGo言語のプログラミングをする -最低限でハローワールド編のおさらいです。
%%writefile main.go
package main
import "fmt"
func main() {
fmt.Println("Hello from Go on Google Colab")
}
書いたら、実行します。
!go run main.go
文法が壊れていなければ、Hello, Go from Google Colab!とでます。
コンパイルする
続いて、main.goを、コンパイルして、バイナリ(機械語)に変換します。
下記のコマンドで、main.goのプログラムファイルから、helloというバイナリファイルが生成できます。
!go build -o hello main.go
作成できると、左のメニュー上にも、バイナリファイルが出現します。

ビルドしたバイナリを実行
作ったバイナリは、下記のような指定で直接実行できます。
!./hello
Colabから、自分のマシンにダウンロードすれば、ローカルマシンでも実行できるようになります。
※ただし、実行マシンのOS/CPU等に合わせたパラメーター指定に注意。これについては次章。
いろいろなOS向けにビルドする
Go言語の大きな特徴のひとつが、クロスコンパイルです。
つまり、ビルド時に環境変数を指定するだけで、現在動いている環境とは別のOS向けの実行ファイルを作成できます。言い方を変えると、バイナリを実行するときのOSと一致するように、ビルドする必要があるということです。
指定する主なパラメータは以下の2つです。
| 項目 | 意味 |
|---|---|
| GOOS | 対象OS |
| GOARCH | 対象CPUアーキテクチャ |
例えば、Apple Silicon搭載Mac向けのバイナリを生成する場合は以下のようになります。
GOOS=darwin GOARCH=arm64 go build -o hello main.go
代表的な組み合わせは以下の通りです。
Windows向け
GOOS=windows GOARCH=amd64 go build -o hello.exe main.go
Linuxサーバー向け
GOOS=linux GOARCH=amd64 go build -o hello-linux main.go
Intel Mac向け
GOOS=darwin GOARCH=amd64 go build -o hello-intel-mac main.go
Apple Silicon Mac向け
GOOS=darwin GOARCH=arm64 go build -o hello-apple-silicon main.go
主な値
| GOOS | 対象 |
|---|---|
| linux | Linux |
| windows | Windows |
| darwin | macOS |
| GOARCH | 対象 |
|---|---|
| amd64 | Intel / AMD 64bit CPU |
| arm64 | Apple Silicon |
このように、Google ColabはLinux環境ですが、WindowsやMac向けの実行ファイルも生成できます。
さいごに
プログラムを完成させたら、バイナリ(機械語)にしてからツール配布することで、
- いろいろなマシンで、環境構築不要で動くツールが作れる
- 実行時間も早くて快適
というのがGo言語の世界だと思います。
Google Colabの環境下で、手軽に、「ツールを作って、配る」Go言語の面白さが伝われば幸いです。
弊社について
本記事を書いている 合同会社インクルーシブソリューションズ は、データ基盤構築・分析基盤設計・システム改善支援を中心に活動している小規模IT法人です。
主な領域は、
- データマート設計・データパイプライン構築
- SQL / Python を用いたデータ処理設計
- BI導入支援・分析基盤の整備
- 既存システムの運用改善・可視化支援
といった、「データを使える状態にする」ための活動です。
弊社の企業活動に興味がある方は、ぜひ公式サイトも覗いてみてください。
以下は余談:Go言語のクロスコンパイルについて
下記画像は、友人に協力してもらってGoのクロスコンパイルを検証していたときのチャット履歴。筆者(安部 航祐)のMacBookで、プログラミング⇨ビルドを行い、Go言語の環境構築ナシのWindowsで実行に成功したときのもの。
