昨今、サーバサイドでのサービスを支える分野で活躍が目立つGo言語ですが、すこし違う分野でも活躍できないかなーと考えている今日この頃。
PocketCHIPでGoを書けるようにする
以前PocketCHIP手に入れました。
まずはこいつでGoをコンパイルできるようにします。
PocketCHIPは、機能的にはraspberry piに近いですが、昔のゲームボーイのような形にカラーディスプレイとキーボードがついているマシンです。
アーキテクチャはARMです。他のマシンでクロスコンパイルしたバイナリを実行しても良いですが、せっかくキーボードがついてるのでその場でコードを書いて実行できるようにしておきます。
Goの環境をセットアップ
シンプルに行きます。
https://golang.org/dl/ にARM用にビルドされたコンパイラがあるのでそれを使います1。
ARMに関連するドキュメントはこの辺りです
https://github.com/golang/go/wiki/GoArm
wifiにつながるのでwgetで(go1.7.4の場合):
$ wget https://storage.googleapis.com/golang/go1.7.4.linux-armv6l.tar.gz
$ tar xzf go1.7.4.linux-armv6l.tar.gz
$ export PATH=$HOME/go/bin:$HOME/bin:$PATH; export GOROOT=$HOME/go; export GOPATH=$HOME
go envをみると:
$ go env
GOARCH="arm"
GOBIN=""
GOEXE=""
GOHOSTARCH="arm"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/home/chip/go"
GOTOOLDIR="/home/chip/go/pkg/tool/linux_arm"
CC="gcc"
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
使えそうです。エディタはこの際面倒なのでvimで行きましょう。2
GoのGUIアプリ(サンプル)を試す
せっかくX11が動いているのでGUIアプリを動かしてみましょう。3
$ go get golang.org/x/exp/shiny
$ go get golang.org/x/mobile
動作確認
$ go run src/golang.org/x/exp/shiny/example/basic/main.go
コンパイルに時間がかかりますが、動きます!
flappy gopherも動きます:
$ sudo apt-get install build-essential
$ sudo apt-get install libegl1-mesa-dev libgles2-mesa-dev libx11-dev
$ cd golang.org/x/mobile/example/flappy
$ go build
$ ./flappy
画面タップでちゃんとジャンプします。
まとめ
思いの外、すんなりとGUIアプリが動きました。基本的にデスクトップLinuxと同じようにX11が動いてるので動いて当然と言えばそうかもしれませんが、ちょっと感動。
誰得記事な感じですが、普段とは違うところで動くGoも良いのでは無いでしょうか。
それでは!