はじめに
本記事では、Go言語でデスクトップアプリを開発できる
フレームワークWailsの概要をまとめます。
GO言語の環境構築は、以下の記事をご参考にしてください。
1. Wailsとは
WailsはGoのコードとWebフロントエンドを
単一バイナリにまとめてデスクトップアプリを作れるフレームワークです。 GitHub
一言で言うと、
Goバックエンド + HTML/CSS/JavaScript フロントエンド
↓
1つの.exeファイル
という構成でデスクトップアプリが作れるツールです。
デスクトップアプリなのでネットワーク接続は要らず、
CSSでデザインできるのでおしゃれにできます。
2. なぜWailsを使うのか
デスクトップアプリを作る方法はいくつかあります。
代表的なものと比較します。
| フレームワーク | 言語 | 特徴 | 問題点 |
|---|---|---|---|
| Electron | JavaScript | 有名・実績あり | ブラウザをまるごと内蔵するため重い(RAM500MB超えも) |
| Tauri | Rust + JS | 軽量・高速 | Rustの学習コストが高い |
| Wails | Go + JS | 軽量・高速 | Goが書ければすぐ始められる |
WailsはElectronのようにブラウザエンジンを丸ごと内蔵せず、
OSのWebView2を使うためメモリ効率が大幅に優れています。 DEV Community
3. Wailsの主な特徴
| 特徴 | 内容 |
|---|---|
| 単一バイナリ | ビルドすると1つの.exeファイルになる |
| 軽量 | ElectronのようにChromiumを内蔵しない |
| フロントエンド自由 | React・Vue・Svelte・Vanilla JSなど使える |
| GoとJSの連携 | JavaScriptからGoの関数を直接呼び出せる |
| クロスプラットフォーム | Windows・macOS・Linuxに対応 |
| ホットリロード | 開発中にコードを変えると即座に反映される |
4. アプリの構成イメージ
Wailsアプリは2つの部分で構成されています。
Goバックエンド(業務ロジック・システム操作)と
Webベースのフロントエンド(UI)がシームレスに連携します。 Wails
┌─────────────────────────────────┐
│ デスクトップアプリ │
│ │
│ ┌──────────┐ ┌────────────┐ │
│ │ Go │ │ フロント │ │
│ │ バックエンド│◄─►│ エンド │ │
│ │ (処理) │ │ (HTML/JS) │ │
│ └──────────┘ └────────────┘ │
│ │
│ GoとJSがメモリ内で直接通信する │
└─────────────────────────────────┘
GoのPublicメソッドはJavaScript側から直接呼び出せます。
// Goで書いた関数
func (a *App) Greet(name string) string {
return "こんにちは、" + name + "!"
}
// JavaScriptから呼び出せる
import { Greet } from '../wailsjs/go/main/App'
const result = await Greet("太郎")
console.log(result) // こんにちは、太郎!
5. Wailsが向いているケース
| ケース | 理由 |
|---|---|
| GoでCLIツールを作っていてGUIを付けたい | バックエンドをそのまま使える |
| Electronが重すぎると感じている | 同等の見た目でメモリを大幅削減できる |
| 社内ツールをデスクトップアプリ化したい | 配布が.exe1ファイルで済む |
| Rustが難しくてTauriを断念した | Goで書けるのでハードルが低い |
まとめ
| 項目 | 内容 |
|---|---|
| 特徴 | Go + Web技術でデスクトップアプリが作れる |
| 強み | 軽量・単一バイナリ・GoとJSの直接連携 |
| 比較 | Electronより軽く・Tauriより学習コストが低い |
| 対応OS | Windows・macOS・Linux |
次の記事でインストールから環境構築までの手順をまとめます。