エコシステム 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の署名に
notarytool
に切り替えました: 2023-11-01現在、AppleはmacOSの署名に使用されていたレガシーの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 Publisherと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 の開発体験をさらに向上させる方法について検討します。
次に私たちが取り組むことを希望するものはありますか?ぜひ教えてください!