イントロダクション
Wailsは、Go言語とWeb技術を使用して、デスクトップアプリの構築を可能にするプロジェクトです。
"Goの力によって、Electronが軽量かつ高速になったようなもの"、と考えるとよいでしょう。 Goの柔軟性とパワーに、リッチでモダンなフロントエンドを組み合わせたアプリを、簡単に構築することができます。
特徴
- ネイティブなメニュー、ダイアログ、テーマ、透過処理を使用可能です
- Windows、macOS、Linuxをサポートしています
- Svelte、React、Preact、Vue、Lit、バニラJS向けにビルトインテンプレートを用意しています
- GoメソッドをJavaScriptから簡単に呼び出せます
- Go構造体に対応するTypeScript型定義を自動生成します
- WindowsにおいてCGOや外部DLLは必要ありません
- Viteの力を利用したライブ開発が可能です
- アプリケーションを簡単に作成、ビルド、パッケージングするための強力なCLIを備えています
- 豊富なランタイムライブラリを用意しています
- Wailsで構築されたアプリケーションは、Apple StoreおよびMicrosoft Storeに準拠しています
This is varly - a desktop application for MacOS & Windows written using Wails. 見栄えが良いだけではなく、ネイティブメニューや半透明効果を使用しています。これらは、モダンなネイティブアプリに期待されるものです。

クイックスタートテンプレート
Wailsには、アプリの開発をすばやく始められるように、多数のテンプレートが用意されています。 Svelte、React、Vue、Preact、Lit向け、およびバニラなJavaScript用で、それぞれのテンプレートがあります。 各テンプレートには、Javascript版とTypescript版が用意されています。
ネイティブ要素
Wailsは、ウィンドウ、メニュー、ダイアログなどのネイティブ要素を処理する専用ライブラリを使用するため、見栄えが良く、リッチな機能を備えたデスクトップアプリを構築できます。
It does not embed a browser, so it delivers a small runtime. Instead, it reuses the native rendering engine for the platform. 例えばWindowsの場合、Chromium上でビルトされているMicrosoft Webview2ライブラリを使用します。
GoとJavascriptのやり取り
Wailsは自動的に、GoのメソッドをJavascriptから利用できるようにするので、フロントエンドからGoのメソッド名を呼び出すことができます。 Goメソッドが使用する構造体を表すTypeScritpt型定義も自動生成されるため、GoとJavaScriptの間で同じデータ構造をやり取りすることができます。