メインコンテンツへスキップ

2023年のエコシステムまとめ

·5分で読めます

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-prebuiltelectron-prebuilt-compileのサポートを終了しました: electron-prebuiltElectronの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の開発体験をさらに向上させる方法について検討します。

今後、私たちが取り組むべきことはありますか?ぜひお知らせください!