Wails:GolangがElectronに対抗してデスクトップ級アプリに賭けた理由

원제 · Wails: Golang's Bet On Desktop Grade Apps To Beat Electron

7:022분 읽기Better Stack2026. 07. 25.컴퓨터/소프트웨어 · AI/미래기술

핵심 요약

WailsはChromiumを同梱しないアーキテクチャにより52メガバイトの軽量なバンドルサイズを実現する一方、エコシステムの成熟度不足によりネイティブ連携でObjective-Cの自作が必要となる場合がある。

하이라이트

  • WailsはバックエンドにGoを使用し、各プラットフォームのネイティブウェブビューを利用してデスクトップアプリを構築するクロスプラットフォーム技術である。

  • Wailsのバンドルサイズは52メガバイトであり、Tauriの57メガバイトと同等である一方、Electronの324メガバイトと比較して大幅に小さい。

  • コールドスタート時の起動時間は、Electronが1,890ミリ秒であるのに対し、Tauriは2,049ミリ秒、Wailsは2,337ミリ秒である。

  • Goのバックエンド側でコードを変更すると、TypeScriptのAPI定義が自動的に再レンダリングされ、アプリケーションが自動的に再コンパイルされる。

  • Wailsで画面キャプチャ機能を実装する際、適切なGoのライブラリが存在しないため、約450行のObjective-Cコードを自建する必要がある。

타임라인

  1. Wailsの基本構造とアーキテクチャ

    Tauriと同様の仕組みで動作し、フロントエンドはウェブ技術で構築されてGolang管理下のネイティブAPIを呼び出す。MacとWindowsの両方に対応し、ブラウザを内蔵しないことでバンドルサイズを小さく抑えている。

    • WailsはバックエンドにGo言語を採用したクロスプラットフォームのデスクトップアプリ構築技術である。
    • ブラウザを内蔵せず、各プラットフォームのネイティブレンダリングエンジンを再利用する仕組みをとる。
  2. 画面録画ツールの実装と自動コード生成

    画面録画ツールの実装では、main.goでウィンドウのタイトルや寸法などの設定を行う。frontendフォルダ内のReactコードから、Wailsによって自動生成されたAPIを介してバックエンドの機能にアクセスする構造を持つ。

    • フロントエンドのUIはReactで構築され、Go側で定義されたAPIを呼び出す。
    • Goファイル側で変更を加えると、TypeScriptの定義が自動的に再レンダリングされアプリが再読み込みされる。
  3. フレームワーク間の数値比較

    Chromiumを同梱しないWailsとTauriはビルドサイズが優れている。起動時間の計測では通常起動でWailsが395ミリ秒、Tauriが410ミリ秒、Electronが350ミリ秒を記録し、コールドスタートではElectronが最速となる。

    • バンドルサイズはWailsが52MB、Tauriが57MBであり、Electronの324MBに比べて極めて小さい。
    • コールドスタート時の起動時間はElectronが1,890ミリ秒であり、Tauriの2,049ミリ秒やWailsの2,337ミリ秒より速い。
  4. 開発者エクスペリエンスとエコシステムの差異

    画面キャプチャ機能の実装において、Rustなら既存のCrateで完結する処理に対し、Wailsでは約450行のObjective-Cコードを自分で書く必要が生じる。開発言語の好みで選択できるものの、エコシステムの成熟度においてはTauriに分がある。

    • Tauriは豊富なRustのCrateエコシステムを利用できるが、WailsはGoの適したライブラリが少ない。
    • Wailsでネイティブ機能を利用するためには、CGOを用いてObjective-Cのコードを自ら記述する必要がある。

설명

You already write Go, so why bundle a whole Chromium to ship a desktop app? Wails builds cross-platform desktop apps on the system webview, 52 MB against Electron's 324. The catch is the developer experience: where Tauri leans on Rust crates, Go can leave you hand-writing Objective-C. Worth it if you're choosing a desktop stack. 🔗 Relevant Links https://wails.io https://github.com/wailsapp/wails ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters: 0:00 What is Wails? 0:33 How Wails works (Go + native webview) 1:06 Demo: the screen recorder app 1:29 Project structure: main.go and the frontend 1:57 React frontend and auto-generated bindings 2:50 Live reload with wails dev 3:24 Bundle size: Wails vs Tauri vs Electron 4:07 Startup time 4:36 Runtime performance 5:07 Developer experience 5:37 Writing Objective-C with CGo 6:07 Verdict: Wails or Tauri? 6:40 Outro

커뮤니티 글

모든 글 보기
이 영상에 대해 글쓰기