全体アウトライン
本書は、Rust 言語で高速かつネイティブな操作感を持つデスクトップアプリケーションを構築するための UI フレームワーク「GPUI」と、その上で動作する包括的なコンポーネントライブラリ「GPUI-Component(GPUI Kit)」の仕組みと実践的な開発手法を分かりやすく解説する技術書です。
本書の目的と対象読者
本書は、Rust の基本的な文法(構造体、トレイト、所有権など)を学んだことがあり、これから実用的な GUI デスクトップアプリケーションを作ってみたい開発者を対象としています。 「なぜ Rust の GUI 開発は難しいと言われてきたのか」「GPUI はどのようにして所有権の壁を越え、120 FPS の描画を実現しているのか」「GPUI-Component を使ってどのように業務レベルの画面を素早く組み立てるのか」という疑問に対し、図解と動作イメージが湧くコード例を交えて解説します。
章構成一覧
第1章 GPUIとGPUI-Componentの概要
高速コードエディタ「Zed」の心臓部として誕生した GPUI の設計思想と、Longbridge 社が開発した UI ライブラリ GPUI-Component(GPUI Kit)の役割を解説します。従来の Electron(Web 技術ベース)や他の Rust GUI フレームワークとの違いを比較し、開発環境のセットアップと最初のウィンドウ表示までを体験します。
第2章 コアアーキテクチャと状態管理
Rust で GUI を作るときに最大の壁となる「状態の共有と更新」を、GPUI がどのように解決しているかを学びます。アプリケーション全体が状態を所有する集中管理モデル、Entity<T> と Context<T> の関係、Render トレイトによる画面描画、そして変更通知(notify)と購読(subscribe)の仕組みを解き明かします。
第3章 レイアウトとスタイリング
GPUI における宣言的な UI 構築手法を学びます。レイアウトエンジン「Taffy」による Flexbox 配置と、Tailwind CSS のようなメソッドチェーン記法(.flex(), .gap_2(), .bg() など)を使った直感的なデザイン手法を整理します。また、コンポーネントを再利用しやすくする RenderOnce トレイトの使い分けも解説します。
第4章 イベント・アクション・非同期処理
ユーザーの操作に反応するインタラクティブな仕組みを扱います。マウスクリックなどのイベント処理、キーボードショートカットと論理コマンドを結びつける actions! マクロと FocusHandle、そして UI スレッドを止めずにファイル読み書きや通信を行う非同期タスク(cx.spawn)の安全な実装パターンを学びます。
第5章 GPUI-Componentの導入とテーマ設計
素の GPUI には用意されていない汎用ウィジェット群を提供する「GPUI-Component」の基礎を学びます。初期化関数 gpui_component::init とウィンドウ全体を包む Root コンポーネントの役割、ライトモード・ダークモードの切り替え、およびデザインシステム(Theme)のカスタマイズ方法を解説します。
第6章 基本ウィジェットとフォーム制御
日常的な画面開発で最もよく使う部品の使い方を習得します。ボタン(Button)、アイコン、バッジなどの表示部品から、日本語入力(IME)やカーソル制御を内蔵したテキスト入力(Input / InputState)、チェックボックス、スイッチ、セレクトボックス、モーダルダイアログや通知(トースト)の実装方法をコード例とともに確認します。
第7章 高度なUI(仮想化テーブル・リスト・Dock)
本格的かつ複雑なデスクトップアプリに欠かせない高度なコンポーネントを解説します。数十万件のデータでも一瞬でスクロールできる仮想化リスト(VirtualList)とデータテーブル(Table / TableDelegate)、そして IDE のように画面を自由なパネルやタブに分割・配置できる DockArea システムの構築手法を学びます。
第8章 実践:タスク管理デスクトップアプリの開発
これまでの知識を統合し、GPUI と GPUI-Component を組み合わせた実用的な「タスク管理デスクトップアプリケーション」を設計・実装します。サイドバー、検索・追加フォーム、ステータス切り替え、一覧表示、キーボードショートカット、テーマ切り替えを備えたアプリのコードを追いながら、実践的な設計パターンを身につけます。
第9章 パフォーマンス最適化とテスト戦略
120 FPS の滑らかな描画性能を維持するための設計上の注意点とテスト手法をまとめます。不要な再描画の防止、シェーダーや GPU 描画パイプラインの内部動作の理解、ヘッドレス環境での UI 自動テスト、そしてアクセシビリティ(AccessKit)対応や配布に向けたベストプラクティスを解説します。