コンテンツへスキップ
QuickGUI

Pre-alphaAPI は変更されます

ネイティブデスクトップアプリを、Go、TypeScript、Rust で。

Go、TypeScript、Rust でネイティブ UI を構築。共通の GPU レンダラー、高速な増分ビルド、細粒度のリアクティビティ、アクセシブルなコンポーネントを利用できます。

$bunx @quickgui/cli init my-app

ベンチマーク

QuickGUI Go、QuickGUI TypeScript、QuickGUI Rust、GPUI、Tauri、Electron のアイドル時メモリとインストールサイズを同じ Mac で測定しました。各アプリで同じ課題管理ツールを動かし、1,000 件の課題を読み込みます。

Apple M5 · メモリ 32 GiB · macOS 27.0 · arm64測定日:2026/09/08~2026/09/13

アプリのアイドル時メモリ

アプリのアイドル時メモリQuickGUI Go: 83.1 MB; QuickGUI TypeScript: 97.5 MB; QuickGUI Rust: 68.7 MB; GPUI: 78.2 MB; Tauri: 101.7 MB; Electron: 136.1 MB037.575112.5150QuickGUI Go 0.1.3: 83.1 MB · 起動ごとの中央値:81.9–83.2 MBQuickGUI Gov0.1.3 · 9月8日83.1 MBQuickGUI TypeScript 0.1.3: 97.5 MB · 起動ごとの中央値:92.6–97.9 MBQuickGUI TypeScriptv0.1.3 · 9月9日97.5 MBQuickGUI Rust 0.1.4-next.2: 68.7 MB · 起動ごとの中央値:68.7–70 MBQuickGUI Rustv0.1.4-next.2 · 9月13日68.7 MBGPUI 0.2.2: 78.2 MB · 起動ごとの中央値:78.1–78.2 MBGPUIv0.2.2 · 9月13日78.2 MBTauri 2.11.5: 101.7 MB · 起動ごとの中央値:101.5–101.9 MBTauriv2.11.5 · 9月8日101.7 MBElectron 44.2.0: 136.1 MB · 起動ごとの中央値:132.1–136.7 MBElectronv44.2.0 · 9月8日136.1 MB

インストールサイズ

インストールサイズQuickGUI Go: 25.9 MB; QuickGUI TypeScript: 84.4 MB; QuickGUI Rust: 13.7 MB; GPUI: 6.3 MB; Tauri: 8.3 MB; Electron: 300.8 MB0100200300400QuickGUI Go 0.1.3: 25.9 MBQuickGUI Gov0.1.3 · 9月8日25.9 MBQuickGUI TypeScript 0.1.3: 84.4 MBQuickGUI TypeScriptv0.1.3 · 9月9日84.4 MBQuickGUI Rust 0.1.4-next.2: 13.7 MBQuickGUI Rustv0.1.4-next.2 · 9月13日13.7 MBGPUI 0.2.2: 6.3 MBGPUIv0.2.2 · 9月13日6.3 MBTauri 2.11.5: 8.3 MBTauriv2.11.5 · 9月8日8.3 MBElectron 44.2.0: 300.8 MBElectronv44.2.0 · 9月8日300.8 MB

1,100 × 720 のウィンドウに同じ 1,000 件の課題を読み込み、1 ページあたり 100 行を保持して最初の課題を選択。各フレームワークを 3 回起動します。少なくとも 30 秒待ち、メモリが安定して CPU が 1% 以下の状態が 15 秒続いてから、さらに 10 回測定します。棒は各起動の中央値の中央値、ひげはその範囲です。

測定方法

メモリはアプリと描画補助プロセスの物理フットプリントの合計です。WebKit や Chromium の描画、GPU、ネットワークプロセスを含み、自動入力などの macOS サービスは除外します。測定中も CPU とメモリの安定を確認し、スクリーンショットは測定後に撮影します。圧縮メモリを含み、アクティビティモニタと同じ十進 MB(1,000,000 バイト)で表示します。強制 GC やキャッシュ削除は行いません。

サイズは .app 内に配布するファイルを集計し、ネイティブライブラリやフレームワークを含みます。QuickGUI TypeScript は Bun と Solid 2 を同梱し、QuickGUI Rust はネイティブコアを実行ファイルにリンクし、GPUI は Zed の GPU UI フレームワークを実行ファイルに含め、Electron は Chromium と Node を同梱します。OS が提供する WebKit などは除外します。圧縮ダウンロードではなく、インストール後のサイズです。

検索、状態フィルター、ページ切り替え、メモの編集、完了操作に対応しています。データはセッション中のメモリに保持し、データベースやネットワークサービスは使いません。グラフは読み込み後のアイドル時の使用量で、操作の処理性能を表すものではありません。結果はアプリ、マシン、OS によって変わります。QuickGUI は開発版からビルドしており、各結果に使用したリビジョンを記録しています。

ベンチマーク用アプリ
QuickGUI Go で 1,000 件の課題を表示するベンチマークアプリ

機能

変化がなければ休止

画面に変化がない間、ウィンドウは休止します。シグナルは関連するプロパティだけを更新し、イベント内の変更は一度の再描画にまとめます。

高速な増分ビルド

ネイティブランタイムを再利用し、Go、TypeScript、Rust のアプリを再コンパイル。待ち時間を減らし、UI の改善に集中できます。

Flexbox と CSS Grid

Flexbox、CSS Grid、なじみのあるスタイルオプション。Go、TypeScript、Rust でレイアウトを組み立て、スタイルを再利用できます。

コンポーネント同梱

アクセシブルでスタイルなしのコンポーネントを多数同梱——メニュー、ダイアログ、ポップオーバー、select、combobox、タブ、テーブル、ツリー。自由に仕上げられます

テキスト編集

選択、編集、アンドゥ、IME、絵文字、右から左へ書く言語に対応しています。

標準でアクセシブル

スクリーンリーダーには本物のボタン・リスト・テキストが見えます。追加コードは不要

仮想化リスト

仮想化テーブルはスクロールに合わせて表示中の行をマウントし、大きな履歴やデータビューを扱いやすくします。

ネイティブのデスクトップ機能

本物のウィンドウ、システムメニュー、ファイルダイアログ、トレイアイコン、通知をアプリで利用できます。

開発とパッケージ化

quickgui dev は編集しながら実行、quickgui build は署名済みでインストール可能なリリースを出力します

Go、TypeScript、Rust のコード例

同じリアクティブなカウンターを、3 つの言語で。言語を選んでコードを見てみましょう。

counter.go
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())).
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"))
}

メソッドチェーンで組み立てるネイティブビューと再利用できるスタイル。シグナルが UI を同期します。

Go ドキュメント
Native SwiftUI · macOS

QuickGUI でネイティブ SwiftUI を使う

macOS の Go、TypeScript、Rust アプリに本物の SwiftUI コントロールを埋め込み、QuickGUI コンポーネントと一緒に使えます。

swiftui.go
ui.SwiftUI.Host(
ui.SwiftUIHostProps{MatchContents: true},
func() *native.Node {
return ui.SwiftUI.Button(ui.SwiftUIButtonProps{
Label: "Save changes",
SystemImage: "checkmark",
Modifiers: []ui.SwiftUIModifier{
ui.SwiftUI.ButtonStyle("glass"),
},
})
},
)

クイックスタート

01

作成して実行

bunx @quickgui/cli init my-app
cd my-app
quickgui dev
02

整形とビルド

quickgui fmt
quickgui build
03

署名とパッケージ化

quickgui build --target darwin-arm64 \
  --sign "Developer ID Application: Example (TEAMID)" \
  --notarize quickgui-notary
macOS利用可能
Windows開発中
Linux開発中

QuickGUI をはじめる

Go、TypeScript、Rust のコンポーネントを書いて、ランタイムを同梱したネイティブアプリを配布しましょう。