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

昨今、サーバサイドでのサービスを支える分野で活躍が目立つ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パッケージがあったような 


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。