Electron v14 リリースに備える

Electron v14 のリリースが 8/31 に迫っています。

www.electronjs.org

2年ぐらい前から12週ごとのリリースに移行しており、機能が deplicated になってから remove されるまでの期間も短くなっています。

www.electronjs.org

起動時に webPreferences で指定するオプションのデフォルト値もどんどんセキュア側に倒されていきます。

BrowserWindow | Electron

Electron 自体が Chrome のリリースに追従しているのでいたしかたないのだろうとは思います。

そして v14 ではとうとう remote module が削除されます。remote は renderer process から main process のオブジェクトをゴニョゴニョすることができる便利機能で Electron 関連の NPM ライブラリでもけっこう使われています。パフォーマンスやセキュリティの観点から非推奨となっていました。

simple-minds-think-alike.hatenablog.com

今後は、IPC 通信への移行が推奨されています。ライブラリ含めてマイグレーションするのはかなり大変だと推察されます。当面、Electron のバージョンを固定せざるを得ないアプリも出てくるのではないでしょうか。

Electron v14.0.0-beta.12 で野良 Scrapbox アプリを起動するとやはり Context menu が出なかったりバージョンダイアログがちゃんと表示されなかったりします。

Context menu は electron-context-menu の古いバージョンを使ってました。

www.npmjs.com

最新版では remote module への依存が排除されており、main process でしか動かないようになっています。それはいいのですが、野良 Scrapbox アプリでは WebView をタブに埋め込んでいるため、WebContents に対して Context menu を生成してもらいたいのですが、できなかったので、PR を送ってマージしてもらいました。

github.com

これで renderer process でやっていた context menu 構築を main process に持って行くことができました。

バージョンダイアログは about-window というパッケージを使ってました。

www.npmjs.com

こちらはまだ対応されていないため、ダイアログを自作しました。

f:id:kondoumh:20210715111013p:plain

あとは、enableRemoteModule オプションを無効化

remove enableRemoteModule option from webPreferences · kondoumh/sbe@9de8086 · GitHub

以上で、v14 が出ても大丈夫になりました。