本文へスキップ

はじめに

#動作要件

  • macOS 14 以降
  • Go 1.23 以降
  • Bun 1.4 以降
  • Xcode Command Line Tools(xcode-select --install)

現在サポートしている対象は macOS です。

#プロジェクトを作成

bunx @quickgui/cli init my-app --language go
cd my-app
quickgui dev

init はプロジェクトを作成し、依存関係をインストールします。--language を省略すると、Go、TypeScript、Rust を対話的に選べます。

#最初のウィンドウ

main.go は native.Run でアプリを起動し、ウィンドウを開きます。コンポーネント関数を WindowOptions.Component に渡します。コンポーネントはそのウィンドウの UI を返します。

package main

import (
	"log"

	"github.com/egoist/quickgui/go/native"
	"github.com/egoist/quickgui/go/ui"
)

func Counter() *ui.Element {
	count, setCount := ui.CreateSignal(0)
	return ui.View().
		FlexCol().
		SizeFull().
		ItemsCenter().
		JustifyCenter().
		Gap(20).
		Bg("#090d16").
		TextColor("#e2e8f0").
		Child(ui.Text("Count: ", count()).FontSize(28).FontWeight(700)).
		Child(ui.Button().
			OnClick(func() { setCount(count() + 1) }).
			Padding(12).
			RoundedLg().
			Bg("#2563eb").
			Hover(func(s ui.StyleBuilder) ui.StyleBuilder { return s.BackgroundColor("#3b82f6") }).
			Child("Increment"))
}

func main() {
	if err := native.Run(func() {
		open := func() {
			native.NewWindow(native.WindowOptions{
				Title:     "My App",
				Width:     720,
				Height:    480,
				Component: Counter,
			})
		}
		native.App.OnReopen(func(event native.ReopenEvent) {
			if !event.HasVisibleWindows {
				open()
			}
		})
		open()
	}); err != nil {
		log.Fatal(err)
	}
}

Dock アイコンをクリックしたときに表示中のウィンドウがなければ、OnReopen がウィンドウを開き直します。

#実行とビルド

quickgui dev
quickgui fmt
quickgui check
quickgui build

dev は Go コードを再ビルドしてアプリを再起動します。fmt は長い UI 呼び出しを折り返します。build はパッケージ済みアプリを dist/ に書き出します。

#次のステップ