エコシステム2023年総括
2023年のElectronの開発者エコシステムにおける改善点と変更点について考察します。
ここ数ヶ月、Electronアプリの開発者エクスペリエンスを向上させるため、Electronエコシステム全体でいくつかの変更を加えてきました!Electron HQから最新の追加機能を簡単にご紹介します。
Electron Forge 7以降
Electronアプリケーションのパッケージ化と配布のためのオールインワンツールである最新のメジャーバージョン、Electron Forge 7が利用可能になりました。
Forge 6はv5からの完全な書き換えでしたが、v7は範囲が狭く、それでもいくつかの破壊的変更が含まれています。 今後は、破壊的変更が必要になった場合に、Forgeのメジャーバージョンの公開を継続します。
詳細については、GitHubの完全なForge v7.0.0変更ログを参照してください。
破壊的変更
- macOS notarizationに
notarytool
を使用:2023年11月1日より、AppleはmacOS notarizationのレガシーaltool
を廃止し、このリリースではElectron Forgeから完全に削除されました。 - 最小Node.jsバージョンがv16.4.0に増加:このリリースでは、必要な最小Node.jsバージョンを16.4.0に設定しました。
electron-prebuilt
とelectron-prebuilt-compile
のサポートを削除:electron-prebuilt
はElectronのnpmモジュールの元の名前でしたが、v1.3.1でelectron
に置き換えられました。electron-prebuilt-compile
はそのバイナリに対する代替手段で、高度なDX機能を備えていましたが、最終的にはプロジェクトとして放棄されました。
ハイライト
- Google Cloud Storageパブリッシャー:静的自動更新のサポートを強化するための取り組みの一環として、Electron ForgeはGoogle Cloud Storageへの直接公開をサポートするようになりました!
- ESM forge.config.jsサポート:Electron ForgeはESM
forge.config.js
ファイルをサポートするようになりました。(ちなみに、Electron 28ではESMエントリポイントのサポートにも期待してください。) - メーカーが並列実行されるようになりました:Electron Forge 6では、✨レガシー✨な理由でメーカーは順番に実行されていました。それ以来、Makeステップの並列化を悪影響なくテストしてきたため、同じプラットフォームの複数のターゲットをビルドする際に速度向上が見られるはずです!
🙇 GCSパブリッシャーとForge設定でのESMサポートへの貢献に感謝いたします!mahnunchikさん、ありがとうございました!
静的ストレージ自動更新の改善
Squirrel.WindowsとSquirrel.Macは、Electronの組み込みautoUpdater
モジュールを支えるプラットフォーム固有のアップデートテクノロジーです。どちらのプロジェクトも、2つの方法による自動更新をサポートしています。
- Squirrel互換のアップデートサーバー
- 静的ストレージプロバイダー(例:AWS、Google Cloud Platform、Microsoft Azureなど)でホストされているマニフェストURL
アップデートサーバー方式は、従来Electronアプリで推奨される方法でしたが(アップデートロジックのカスタマイズも可能)、クローズドソースの場合、アプリが独自のサーバーインスタンスを維持する必要があるという大きな欠点がありました。
一方、静的ストレージ方式は常に可能でしたが、Electron内ではドキュメント化されておらず、Electronツールパッケージ間でのサポートも不十分でした。
@MarshallOfSound
による素晴らしい作業により、サーバーレス自動アプリアップデートに関するアップデートストーリーが大幅に簡素化されました。
- Electron ForgeのZipとSquirrel.Windowsメーカーは、
autoUpdater
互換のアップデートマニフェストを出力するように構成できるようになりました。 - 新しいメジャーバージョンの
update-electron-app
(v2.0.0)は、update.electronjs.orgサーバーの代わりに、これらの生成されたマニフェストを読み取ることができます。
メーカーとパブリッシャーがクラウドファイルストレージにアップデートマニフェストをアップロードするように構成したら、数行の設定だけで自動アップデートを有効にできます。
const { updateElectronApp, UpdateSourceType } = require('update-electron-app');
updateElectronApp({
updateSource: {
type: UpdateSourceType.StaticStorage,
baseUrl: `https://my-manifest.url/${process.platform}/${process.arch}`,
},
});
📦 さらに詳しく知りたいですか?詳細なガイドについては、Forgeの自動更新ドキュメントを参照してください。
@electron/
拡張ユニバース
Electronが最初に開始されたとき、コミュニティはElectronアプリの開発、パッケージ化、配布のエクスペリエンスを強化するための多くのパッケージを公開しました。時間の経過とともに、これらのパッケージの多くはElectronのGitHub組織に統合され、コアチームがメンテナンスの負担を引き受けるようになりました。
2022年、npmの@electron/
名前空間の下で、これらのファーストパーティツールをすべて統合し始めました。この変更により、以前はelectron-foo
だったパッケージはnpmでは@electron/foo
になり、以前はelectron/electron-foo
という名前だったリポジトリはGitHubではelectron/foo
になります。これらの変更により、ファーストパーティプロジェクトとユーザーランドプロジェクトを明確に区別できます。これには、以下のような多くの一般的に使用されるパッケージが含まれます。
@electron/asar
@electron/fuses
@electron/get
@electron/notarize
@electron/osx-sign
@electron/packager
@electron/rebuild
@electron/remote
@electron/symbolicate-mac
@electron/universal
今後、リリースする全ての一級パッケージは@electron/
名前空間にも配置されます。ただし、このルールには2つの例外があります。
- Electronコアは引き続き
electron
パッケージ名で公開されます。 - Electron Forgeは、そのモノレポのパッケージを全て
@electron-forge/
名前空間で公開し続けます。
⭐ このプロセスの間に、electron/packagerリポジトリを誤って非公開にしてしまい、GitHubのスター数が消えてしまいました(削除前は9000以上ありました)。Packagerを積極的に使用されている方は、⭐ **スター** ⭐ をいただけると幸いです!
@electron/windows-sign
のご紹介
2023年6月1日より、業界標準として、Windowsコード署名証明書のキーをFIPS準拠のハードウェアに保存することが求められるようになりました。
実際には、これはCI環境でビルドと署名を行うアプリにとってコード署名を非常に難しくしました。多くのElectronツールは、構成パラメータとして証明書ファイルとパスワードを受け取り、ハードコードされたロジックを使用してそこから署名しようとするためです。
この状況はElectron開発者にとってよくある問題点でした。そのため、macOSの@electron/osx-sign
と同様に、Windowsコード署名をスタンドアロンのステップに分離する、より優れたソリューションに取り組んできました。
将来は、このパッケージをElectron Forgeツールチェーンに完全に統合する予定です。しかし、現時点では独立して存在しています。このパッケージは現在、npm install --save-dev @electron/windows-sign
でインストールでき、プログラムによる使用またはCLIから使用できます。
ぜひお試しいただき、リポジトリのissueトラッカーでフィードバックをお寄せください!
今後の予定
来月より、毎年恒例の12月の静止期間に入ります。その間、2024年のElectron開発エクスペリエンスをさらに向上させる方法について検討します。
今後取り組んでほしいことはありますか?ぜひお聞かせください!