by @sharkattack51

February 18, 2017

goでguiライブラリを使う

前から気になってちょこちょこ調べていた go での gui ライブラリを試す。 いろいろ漁った結果、libui が良さそうだったのでセットアップにだいぶ苦戦しながら最終的には動かせた。

とりあえずインストール

go get github.com/andlabs/ui

まずここでしばらくつまづいていた。

Win64bit環境で go get したら途中でエラーが出て完了できなかった。 いろいろ調べたら64bit環境のビルドツールチェインがインストールされてなかったのが原因のエラーだった。 github の issue を読んでいたら MinGW-w64 入れろって書いてあったので試しにいれてパス通したら動いた。

そもそも go get の仕組みをちゃんと理解していなかったのだけれども go get はダウンロードするだけではなくてその後にコンパイルも行う。 今回の libui は cgo で c コンパイルが走るのでどうやらそこでつまづいていた。

試す

とりあえず Github の tutorial だとだいぶ機能が少なかったので、 オリジナルライブラリのほうの c のソース examples を go で写経したのがこちら。

https://github.com/sharkattack51/go_libui_test

ライブラリ自体はまだ完全ではなさそうで、まだオリジナルから bind できていない機能もあったけど簡単なものだったら大丈夫そうだった。

そもそも go で gui アプリが作れた場合のメリットとしてはスクリプト感覚で作れるし、クロスプラットフォームであり、 ビルドしてしまえば実行環境に異存にしないバイナリが一個だけというのがあってとてもシンプルで素敵だ。

今回ついで解って良かったのは、

go build -ldflags "-H=windowsgui" main.go

Winビルドのオプションにこれつけるとアプリケーションがコンソール無しになる。