この記事はGo4 Advent Calenderの8日目の記事です。
前日の記事はこちらー 7日目
翌日の記事はこちら- 9日目
筆者のGo歴
- 1年前までプログラミング関連の経験/知識なし
- Goは今年の5月から趣味で牛歩
前置き
- この記事は、Fyneというライブラリの簡易的な紹介のみ
- 極力間違いのないように調べたつもりだが、初学者なので鵜呑みには注意
- 間違いなどあればコメントや編集リクエスト頂けると泣いて喜びます
Fyne とは
- GoでGUIアプリケーションを作成する際に利用できるライブラリ
- [OSS(Github)] (https://github.com/fyne-io/fyne)
- PureGo
- デザインがキレイ
今回は公式のチュートリアルを実行するまでご紹介
公式のチュートリアルは、すでに分かりやすくてシンプルです。
ただ、英語で記載されているので和訳しつつ紹介していきたいと思います。
ダウンロード
「あなたがWindows,macOS,LinuxかBSDを利用していて、既にGoのインストールが済んでいるなら、次のコマンドでFyneの全てをインストールすることができます」
$ go get fyne.io/fyne
「そのコマンドが完了することで、あなたのGOPATH配下にFyneの開発パッケージの全てがインストールされます。Fyneのツールキットがどのような動作をするのか見てみたいなら、以下を実行することで私たちが用意したデモアプリをコンピュータ上で試すことができます」
$ go get fyne.io/fyne/cmd/fyne_demo
$ fyne_demo
「これだけです。さあ、Fyne APIを使いあなただけのクロスプラットフォームGUIアプリケーションを作る方法を見てみましょう」
初めてのFyneアプリを作りましょう
「シンプルなアプリを作るには、app.New()でアプリインスタンスを作成し、app.NewWindow()でウインドウを開くところからです。次に、SetContent()によりウインドウのメインコンテンツがウィジェットツリーとして定義されます。その後、ShowAndRun()を呼び出すことで、アプリのUIが表示されます」
package main
import (
"fyne.io/fyne/app"
"fyne.io/fyne/widget"
)
func main() {
a := app.New()
w := a.NewWindow("Hello")
w.SetContent(widget.NewVBox(
widget.NewLabel("Hello Fyne!"),
widget.NewButton("Quit", func() {
a.Quit()
}),
))
w.ShowAndRun()
}
package main
import (
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/widget"
)
func main() {
a := app.New()
w := a.NewWindow("Hello")
w.SetContent(&widget.Box{Children: []fyne.CanvasObject{
&widget.Label{Text: "Hello Fyne!"},
&widget.Button{Text: "Quit", OnTapped: func() {
a.Quit()
}},
}})
w.ShowAndRun()
}
「上記のコードを実行する(シンプルに行けば、go run hello.goと実行するはずです)と、次のようなウインドウが作成されます」
「明るい雰囲気にしたいのであれば、FYNE_THEME=light と設定するだけで次のようになります」
「始めるには、たったこれだけです。完全なAPIドキュメントは、GoDoc.orgで見ることができます」
ハマったこと
openGLのライブラリを利用している(?)、そのためにgccとか諸々必要になるらしい。
CentOS8で環境構築した時か、macOS Catalinaで環境構築した時か覚えてないけど、あれもないこれもないとエラーが出て困りました。
もし同じエラーでつまづいた場合は、とりあえず、エラーの中で足りないと言われているライブラリを環境のインストールコマンド(brew,yum,dnfなど)で工夫してみればなんとかなると思います。
後書き
正直、プライベートで色々とあって投稿が遅れました。
その上、予定では自作のGUIアプリをドヤ顔()で投稿するつもりだったのが、公式サイトマルパクリで終わっちゃいました。
ちょっとだけ触ってみた感じは、「簡単なGUIツールを作る」だけならコレ!みたいなイメージです。
悔しいので、忘れないぐらいの間には何かアウトプットを作成してまた投稿したいと思います。
追記(2019年12月13日)
現時点でFyneをインストールしただけでは、日本語フォントに対応してないようです。
julialoverさんがこちらの記事で説明と対応策を提示してくれています。
ありがたや......