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

Electron 6.0.0

·4 分で読めます

Electronチームは、Electron 6.0.0のリリースを発表できることを嬉しく思います! npm install electron@latest を使用してnpmでインストールするか、リリースウェブサイトからダウンロードできます。このリリースには、アップグレード、修正、および新機能が満載されています。これらを使って皆さんがどんなものを構築するのか、楽しみにしています! このリリースの詳細については、読み進めてください。また、フィードバックがあれば共有してください!


新機能

今日は、Electronプロジェクトにとって初めての日です。これは、対応するChrome安定版リリース同日に、安定版のElectronリリースを行った初めてのケースです!🎉

Electronの機能の多くは、Chromium、Node.js、およびV8のコアコンポーネントによって提供されています。Electronは、これらのプロジェクトを最新の状態に保ち、ユーザーに新しいJavaScript機能、パフォーマンスの向上、およびセキュリティ修正を提供しています。これらの各パッケージは、Electron 6でメジャーバージョンがアップグレードされています。

このリリースには、ElectronのAPIの改善も含まれています。リリースノートには、より完全なリストがありますが、ここではハイライトを紹介します。

プロミスの導入

Electron 6.0は、Promiseのサポートを改善するために、5.0で開始された近代化の取り組みを継続しています。

これらの関数はPromiseを返すようになり、以前のコールバックベースの呼び出しも引き続きサポートします。

  • contentTracing.getCategories() #16583
  • contentTracing.getCategories() #16583
  • contentTracing.getTraceBufferUsage() #16600
  • contents.executeJavaScript() #17312
  • cookies.flushStore() #16464
  • cookies.get() #16464
  • cookies.remove() #16464
  • cookies.set() #16464
  • dialog.showCertificateTrustDialog() #17181
  • inAppPurchase.getProducts() #17355
  • inAppPurchase.purchaseProduct()#17355
  • netLog.stopLogging() #16862
  • session.clearAuthCache() #17259
  • session.clearCache() #17185
  • session.clearHostResolverCache() #17229
  • session.clearStorageData() #17249
  • session.getBlobData() #17303
  • session.getCacheSize() #17185
  • session.resolveProxy() #17222
  • session.setProxy() #17222
  • webContents.hasServiceWorker() #16535
  • webContents.printToPDF() #16795
  • webContents.savePage() #16742
  • webFrame.executeJavaScript() #17312
  • webFrame.executeJavaScriptInIsolatedWorld() #17312
  • webviewTag.executeJavaScript() #17312

これらの関数には、同期形式とPromiseベースの非同期形式の2つの形式があります。

  • dialog.showMessageBox()/dialog.showMessageBoxSync() #17298
  • dialog.showOpenDialog()/dialog.showOpenDialogSync() #16973
  • dialog.showSaveDialog()/dialog.showSaveDialogSync() #17054

これらの関数はPromiseを返すようになりました。

Electron Helper (Renderer).appElectron Helper (GPU).app、および Electron Helper (Plugin).app

ハードニングランタイム(書き込み可能な実行可能メモリや、異なるチームIDで署名されたコードの読み込みなどを制限する)を有効にするために、特別なコード署名エンタイトルメントをHelperに付与する必要がありました。

これらのエンタイトルメントを必要とするプロセスタイプに限定するために、Chromiumは3つの新しいHelperアプリのバリアントを追加しました。レンダラー用 (Electron Helper (Renderer).app)、GPUプロセス用 (Electron Helper (GPU).app)、プラグイン用 (Electron Helper (Plugin).app)です。追加されました

electron-osx-signを使用してElectronアプリをコード署名している場合は、ビルドロジックを変更する必要はありません。カスタムスクリプトでアプリをコード署名する場合は、3つの新しいHelperアプリケーションが正しくコード署名されていることを確認する必要があります。

これらの新しいヘルパーを使用してアプリケーションを正しくパッケージ化するには、electron-packager@14.0.4以上を使用する必要があります。electron-builderを使用している場合は、この issue を参照して、これらの新しいヘルパーのサポートを追跡する必要があります。

破壊的変更

  • このリリースでは、レンダラープロセスでロードされるネイティブNodeモジュールが、N-APIまたはContext Awareのいずれかであるという、将来の要件の基礎が築かれ始めます。この変更の理由は、パフォーマンスの向上、セキュリティの強化、およびメンテナンス作業の削減です。提案されたタイムラインを含む詳細については、この issue を参照してください。この変更はElectron v11で完了する予定です。

  • net.IncomingMessage ヘッダーが、特に set-cookie の値と重複ヘッダーの処理方法に関して、Node.jsの動作 により近いようにわずかに変更されました#17517

  • shell.showItemInFolder() は void を返すようになり、非同期呼び出しになりました。 #17121

  • アプリは、app.getPath('log') を使用する前に、新しい関数 app.setAppLogPath() を呼び出してログパスを明示的に設定する必要があります。 #17841

3.x.y のサポート終了

私たちのサポートポリシーに従い、3.x.yはサポート終了となりました。開発者とアプリケーションは、より新しいバージョンのElectronにアップグレードすることを推奨します。

アプリフィードバックプログラム

私たちは、テストのためにアプリフィードバックプログラムを引き続き使用しています。このプログラムに参加するプロジェクトは、アプリでElectronベータ版をテストします。見つかった新しいバグは、安定版リリースに向けて優先されます。参加または詳細を知りたい場合は、プログラムに関するブログ記事をご覧ください。

今後の予定

短期的に、チームはChromium、Node、V8を含むElectronを構成する主要コンポーネントの開発に引き続き注力することを期待できます。リリース日については約束をしませんが、Electronの新しいメジャーバージョンをこれらのコンポーネントの新しいバージョンとほぼ四半期ごとにリリースする予定です。暫定的な7.0.0スケジュールは、Electron 7の開発ライフサイクルの主要な日付を示しています。また、Electronのバージョン管理に関する詳細については、バージョン管理に関するドキュメントを参照してください。

今後のバージョンのElectronで計画されている破壊的な変更については、計画された破壊的な変更に関するドキュメントを参照してください。