技術概要
Wails v3コードベースの高レベルアーキテクチャとロードマップ
Wails v3技術ドキュメントへようこそ
このセクションでは、コミュニティガイドラインやプルリクエストの作成方法は扱いません。 代わりに、コードベースの構成をすばやく把握し、自信を持って開発に取りかかれるよう、Wails v3がどのように構築されているかを詳しく解説します。
ランタイムの修正、CLIの拡張、新しいテンプレートの作成、あるいは単に内部構造の理解を目的としている場合でも、以降のページで必要な技術的背景を確認できます。
高レベルアーキテクチャ
すべてのWailsアプリの中核は、ネイティブ実行ファイルにコンパイルされるGoコードです。アプリケーションロジック、システム連携、パフォーマンスが重視される処理を担います。
UIは標準的なWeb技術(React、Vue、Svelte、Vanillaなど)で記述され、軽量なシステムWebView(Linux/macOSではWebKit、WindowsではWebView2)によってレンダリングされます。
ゼロコピーのインメモリブリッジにより、自動的な型変換、イベント伝播、エラー転送を備えたGo⇄JavaScript呼び出しが可能になります。
wails3は、プロジェクトの作成、ライブリロード対応の開発サーバー、アセットのバンドル、クロスコンパイル、パッケージ化(deb、rpm、AppImage、msi、dmgなど)を統括します。
アーキテクチャの概要
Wails v3 — エンドツーエンドフロー
[エンドツーエンドフロー図のプレースホルダー]
この図は、次のエンドツーエンドフローを示しています。
- CLIは、生成、開発サーバー、コンパイル、パッケージ化を制御します。\
- バインディングシステムは、WebフロントエンドからGoバックエンドを呼び出せるようにするグルーコードを生成します。\
- 開発時にはアセットサーバーがフレームワークの開発サーバーへプロキシし、本番環境では埋め込みファイルを配信します。\
- 実行時にはデスクトップランタイムがウィンドウとOS APIを管理し、ブリッジがGoとJavaScriptの間でメッセージをやり取りします。
このドキュメントで扱う内容
| トピック | 重要な理由 |
|---|---|
| コードベースの構成 | /v3ディレクトリの配置と、モジュール間の連携を示すマップ。 |
| ランタイムの内部構造 | ウィンドウ管理、システムAPI、メッセージプロセッサー、プラットフォーム適応層。 |
| アセットサーバーと開発サーバー | 開発時にWebアセットを配信し、本番環境向けに埋め込む仕組み。 |
| ビルドとパッケージ化のパイプライン | Taskfileベースのワークフロー、クロスプラットフォームコンパイル、インストーラー生成。 |
| バインディングシステム | 型安全なGo⇄TSバインディングを生成する静的解析パイプライン。 |
| テンプレートシステム | wails3 init -t <framework>を支えるジェネレーターアーキテクチャ。 |
| テストとCI | 単体/結合テストハーネス、GitHub Actions、レースディテクターのガイダンス。 |
| Wailsの拡張 | サービス、テンプレート、CLIサブコマンドの追加。 |
以降の各ページでは、具体的なコードサンプル、図、関連するソースファイルへの参照を交えながら、これらの領域を詳しく解説します。
ぜひ探索を楽しみながら、Wails v3の内部構造を理解していきましょう!