PocketCHIPでGoのGUIアプリを動かしてみる

  • 10
    Like
  • 0
    Comment

昨今、サーバサイドでのサービスを支える分野で活躍が目立つGo言語ですが、すこし違う分野でも活躍できないかなーと考えている今日この頃。

PocketCHIPでGoを書けるようにする

以前PocketCHIP手に入れました。
まずはこいつでGoをコンパイルできるようにします。

PocketCHIPは、機能的にはraspberry piに近いですが、昔のゲームボーイのような形にカラーディスプレイとキーボードがついているマシンです。

pocketchip

アーキテクチャは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

コンパイルに時間がかかりますが、動きます!

IMG_6750.jpg

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

IMG_6751.jpg

画面タップでちゃんとジャンプします。

まとめ

思いの外、すんなりとGUIアプリが動きました。基本的にデスクトップLinuxと同じようにX11が動いてるので動いて当然と言えばそうかもしれませんが、ちょっと感動。

誰得記事な感じですが、普段とは違うところで動くGoも良いのでは無いでしょうか。

それでは!


  1. ありがたいことに、go1.6からARM用のコンパイラが配布されています 

  2. emacsユーザです 

  3. go1より前、exp/draw/x11パッケージがあったような