Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

全体アウトライン

本書は、プログラミング言語 Rust で画面つきのアプリケーション(GUI アプリ)を作るための人気ライブラリ「egui(イーグイ)」と、その公式フレームワーク「eframe(イーフーム)」の使い方を、基礎から応用までやさしく解説するガイドブックです。

本書の目的と対象読者

本書は、Rust の基本的な文法(変数、構造体、トレイト、参照など)をひと通り学んだことがあり、自分の手でデスクトップアプリや Web ブラウザ上で動くツールを作ってみたい人を対象としています。

従来の GUI 開発では、ボタンやテキストボックスの部品(オブジェクト)を作ってコールバック関数を登録し、画面の表示とプログラム内のデータを一致させるための複雑な管理が必要でした。特に Rust では「所有権と借用」のルールが厳格なため、従来の方式で GUI を作ろうとするとコンパイルエラーに悩まされがちです。

egui が採用している「Immediate Mode GUI(即時モード GUI)」は、この問題を根本から解決します。本書を通じて、なぜ egui なら Rust らしくシンプルに画面を作れるのかを理解し、実際に動くコードと図解を通して実用的なアプリを自在に組み立てられる力を身につけます。

章構成一覧

第1章 Immediate Mode GUIの仕組みとeguiの特徴

GUI ライブラリの大きく 2 つの設計方式である「Retained Mode(保持モード)」と「Immediate Mode(即時モード)」の違いを比べます。毎フレーム画面を描き直す Immediate Mode がなぜ Rust の所有権システムと相性が良いのか、また egui と eframe がそれぞれどのような役割を担っているのかを学びます。

第2章 開発環境の構築と最初のeframeアプリケーション

Cargo を使って新しいプロジェクトを作り、eframe を導入して最初のウィンドウを画面に表示します。アプリの状態を持つ構造体の定義、eframe::App トレイトの update メソッドの役割、そして日本語を表示したときに起きる文字化け(豆腐現象)を防ぐための日本語フォント設定手順を詳しく解説します。

第3章 基本ウィジェットとユーザー入力の扱い方

画面を構成する基本的な部品(ウィジェット)の使い方を学びます。文字を表示するラベル、クリックを受け取るボタン、文字を入力するテキストボックス、数値を調整するスライダー、チェックボックス、ラジオボタン、ドロップダウンリスト(コンボボックス)などを扱い、ユーザーの操作結果を egui::Response から受け取る方法を習得します。

第4章 レイアウトシステムとパネル・ウィンドウ構成

部品をきれいに並べるためのレイアウト機能と、画面全体を分割するパネルの使い方を解説します。上部メニューやサイドバーを作る TopBottomPanel・SidePanel・CentralPanel の配置順序のルール、横並び(horizontal)と縦並び(vertical)、スクロール領域(ScrollArea)、表形式のグリッド(Grid)、折りたたみ表示、そしてアプリ内ウィンドウ(Window)の作り方を学びます。

第5章 スタイル調整と2Dカスタム描画

アプリ全体の見た目を整えるテーマ切り替え(ダークモード・ライトモード)や、余白・角丸・配色のカスタマイズ方法を解説します。さらに、画像の読み込み表示や、egui::Painter を使って直線・四角形・円・曲線を自由に描き、マウス操作に反応するお絵かきキャンバスやグラフを作る方法を学びます。

第6章 状態永続化と非同期・マルチスレッド連携

アプリを閉じてもデータを残すための自動保存(Persistence)機能と、重い処理を実行しても画面が固まらない(フリーズしない)ためのマルチスレッド連携を解説します。std::sync::mpsc チャネルを使って別スレッドから進捗状況を受け取り、プログレスバーやスピナーを更新する実践的なパターンを身につけます。

第7章 実践:タスク管理アプリの開発とWeb展開

これまでの章で学んだ知識をすべて組み合わせて、実用的な「タスク管理(ToDo)アプリ」をゼロから完成させます。さらに、表作成などを支援する公式拡張クレート(egui_extras や egui_plot)の紹介と、同じ Rust コードを WebAssembly(WASM)にビルドして Web ブラウザ上で動かす手順を解説します。