2023年のエコシステムまとめ
2023年のElectronの開発者エコシステムの改善と変更を振り返ります。
ここ数ヶ月で、Electronアプリの開発者体験を向上させるために、Electronエコシステム全体でいくつかの変更を加えてきました!Electron本部からの最新情報について簡単に説明します。
Electron Forge 7 以降
Electron Forge 7 — Electronアプリケーションのパッケージングと配布を行うオールインワンツールの最新メジャーバージョン — が利用可能になりました。
Forge 6 は v5 からの完全な書き直しでしたが、v7 はスコープが小さく、いくつかの破壊的な変更が含まれています。今後、破壊的な変更が必要になった場合は、Forge のメジャーバージョンを引き続き公開します。
詳細については、GitHub の Forge v7.0.0 の変更ログを参照してください。
破壊的な変更
- macOSのノータリー化に
notarytool
に切り替えました: 2023年11月1日以降、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パブリッシャーと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準拠のハードウェアに保存することが義務付けられました。
実際には、多くのElectronツールが証明書ファイルとパスワードを構成パラメータとして受け取り、そこからハードコードされたロジックを使って署名しようとするため、CI環境でビルドおよび署名するアプリにとってコード署名が非常に難しくなりました。
この状況はElectron開発者にとって共通の悩みであったため、私たちはmacOSで@electron/osx-sign
が行うのと同様に、Windowsコード署名をスタンドアロンのステップに分離する、より良いソリューションに取り組んできました。
将来的には、このパッケージをElectron Forgeツールチェーンに完全に統合する予定ですが、現在は単独で存在しています。このパッケージは現在、npm install --save-dev @electron/windows-sign
でインストールでき、プログラムまたはCLI経由で使用できます。
ぜひ試してみて、リポジトリのissue trackerでフィードバックをお寄せください!
次は何?
来月には、毎年恒例の12月の静観期間に入ります。その間、2024年にElectronの開発体験をさらに向上させる方法について検討します。
今後、私たちが取り組むべきことはありますか?ぜひお知らせください!