Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GoでもGUIアプリを作りたい!

 GoでもGUIアプリを作りたい!

nasum(株式会社ナレッジワーク ソフトウェアエンジニア)
X: https://x.com/nasum360

※2025/10/14開催「Go Night Talks – After Conference」での登壇資料です
https://mercari.connpass.com/event/367075/

<セッション概要>
Go言語はクロスプラットフォームでコンパイルできポータブルな言語だと思います。そんなポータブルさを活かすアプリとはなんでしょうか。自分はGUIアプリだと思います。
本セッションではGo言語でGUIアプリを作るいくつかの方法を紹介し比較し適切なフレームワークを選ぶための知識を共有します。
electronライクのwails、ゲームエンジンのebitenなどの例を紹介し、Go言語で開発をしたい人向けに選択肢としてのGUIアプリの道を提示します。

<プロフィール>
2024年1月にナレッジワークに入社。ソフトウェアエンジニアとしてワーク領域のプロダクト開発に従事。前職ではAutify株式会社でテクニカルサポートエンジニアとしてユーザの技術的な問題を調査を行う。現在はGo言語でバックエンドの開発を中心に活動中。フロントからバックエンド、インフラまで広く触ることを好みがち。

More Decks by KNOWLEDGE WORK / 株式会社ナレッジワーク

Other Decks in Technology

Transcript

  1. Ebitengine • 有名なゲームエンジン • 対応環境 ◦ Windows ◦ MacOS ◦

    Linux ◦ FreeBSD ◦ browser(WebAssembly) ◦ Android ◦ iOS ◦ NintendoSwitch(!) • OpenGLやMetalを使ってGUIを構築
  2. 特徴 • GUIの描画にDirectX OpenGL Metalと各種OSによって変えている ◦ そしてそれは開発者が意識する必要ない(オプションで指定はできる • 自由度が高い ◦

    ピクセル単位でどこに何を描画するか指定する • 全ては画像から画像への変換 ◦ 画面は画像に画像を貼り付けて描画される
  3. pros&cons • pros ◦ ネイティブで動作するGUI ◦ あらゆるOSでゲームを動かせる • cons ◦

    当たり前ではあるがゲーム用のフレームワーク ◦ レイアウトを作るのに熟練がいる ◦ Windowsではcgoが不要だが他のOSでビルドするときそれぞれの対応がいる
  4. Gio

  5. gio • 即時モードGUIという考え方 • 対応環境 ◦ Windows ◦ MacOS ◦

    Linux ◦ FreeBSD ◦ browser(WebAssembly) ◦ Android ◦ iOS • OpenGLやMetalを使ってGUIを構築 • MaterialUIのWidgetが用意されている
  6. 特徴 • 即時モードGUI ◦ …is ? ◦ 毎フレームコードで描画するGUI ◦ 簡単に言うとゲームのような描画スタイル

    ◦ 即時モード・保持モードという考え方がある • Widgetがライブラリとして用意されている
  7. pros&cons • pros ◦ ネイティブで動作するGUI ◦ ゲームのようにUIを作れる • cons ◦

    即時モードGUIという考え方に慣れない ◦ Widgetがまだ発展途上
  8. 各ライブラリの比較表 フレームワーク スター数 最終リリース 特徴 技術基盤 モバイル対応 向いている用途 Wails 30.4k

    2025/07/06 Web技術ベース WebView ✗ 既存Web資産を活 かしたデスクトッ プアプリ Ebitengine 12.5k 2025/10/10 ゲームエンジン OpenGL/Metal/ DirectX ◯ ゲーム・描画中心 アプリ Gio 2k 2025/09/10 即時モードGUI OpenGL/Metal/ Vulkan ◯ ネイティブGUI・ ツール系
  9. まとめ • GoでもGUIフレームワークは活発に開発されている • 目的に応じてフレームワークを選べる ◦ Web技術を活かすなら Wails ◦ ゲーム性・描画重視なら

    Ebitengine ◦ ネイティブなGUIなら Gio • WebアプリケーションエンジニアならWailsが一番とっつきやすいかも ◦ 実際Wailsでメモアプリを作ってますがWeb開発と同じような感覚で作れます • Gioも即時モードを理解してトライしてみたいですね