この記事は2つのAdvent Calendar向けのものです。
https://qiita.com/advent-calendar/2024/webview_native_app_frameworks
https://qiita.com/advent-calendar/2024/linux
異なるOSでも動作するGUIアプリケーションを作れるライブラリ/プラットフォームは以前からいくつもありました(wxWidetsやQt、一時期はJava AWT/Swing/Javafxなど)。近年だとElectronがWeb技術でほぼ書けてしまう上に見た目の制御も柔軟なためよく使われます。ただ、ElectronはChromiumとNode.jsを丸ごと含むため配布サイズが大きくなりがちだし、それぞれのアップデートが最終バイナリに影響するので頻繁な更新が求められがちです。
最近ではWebView2(Chromium)がWindows標準搭載になってきたこともあり、OS標準のブラウザコンポーネントを使うことで配布サイズを下げるアプローチも出ています(Tauri、Wailsなど)。これにより、アプリケーション本体が小さければ数MiBの配布サイズで済むようになりました。ブラウザ側が統一ではない(WindowsのみChromium、LinuxやmacOSはWebKit)ので少なくともLinux/macOSでの動作確認は必須ですが、ずいぶんと書きやすくなった……はずでした。
しかし、Linuxに配布しようとすると別の壁にぶち当たることになります。
(注)macOSは年間$99支払わないとアプリケーションが事実上配布できなくなっているので、当方ではmacOSについては考慮しません。
macOS 15 Sequoiaではランタイム保護のアップデートにより、署名/公証されていないアプリを開く際にコンテキストメニューからGatekeeperをオーバーライドすることが不可能に。
https://applech2.com/archives/20240807-apple-gatekeeper-update-in-macos-15-sequoia.html
■webkit2gtkバージョン問題
Tauri公式リポジトリのIssueにある下記のコメントが最も分かりやすいと思います。
https://github.com/tauri-apps/tauri/issues/9039#issuecomment-1973353831
Tauri | webkit2gtk | Ubuntu系 | RHEL系 |
---|---|---|---|
v1 | webkit2gtk-4.0 | 15.04~23.10 | Cent7~9, RHEL8~9 |
v2 | webkit2gtk-4.1 | 22.04~ | なし(Fedora 37以降はOK) |
これにTauriの配布設定を組み合わせると、次のようになります。
個人的にはWailsは使っていないのですが、WailsのLinux開発ページやビルドのページの注記を見る限りだと標準状態では "libwebkit2gtk-4.0" を使いつつ4.1対応も考慮という感じですね。4.0と4.1両方の配布ファイルを作れるのかは分かりません。
なお次期バージョン(Wails 3.x)では少し変化があるようです。
一方、インライン入力がどうなるのかは試していないので不明です。
■まとめ
WindowsとLinuxの両方に、それなりの見た目のGUIアプリケーションを共通コードからリリースする場合、Web技術を使おうとしてTauriを使うと、webkit2gtkバージョン問題とインライン入力問題への対応を考慮する必要があります。
TauriやWailsは、Windows向けだと、配布サイズが巨大じゃないGUIアプリケーションを作れて非常に有用です(webviewのアップデートもWindowsがやってくれるのでアプリケーション自身の都合以外で更新する必要がほぼないのも魅力的です)。
しかし、Linux向けでは(社内のみ利用とかのケースを除いて)実質上配布サイズのメリットは享受できないと考えた方がいいだろうと思います。
それならElectronの方が開発しやすいかも……という気がしなくもありません(ちなみに4年前に作ったElectronアプリケーションのdebファイルはUbuntu 24.04でも使えました)。
◀(前記事)[mail] さくらインターネットのメーリングリスト(fml)からGmailに配信するには
▶(次記事)[misc] Windows11で「代替の構成」を設定するには
(一覧)[2.技術情報 (tech)]