メインコンテンツへ飛ぶ

Electron 9.0.0

· 読むのにかかる時間 1 分

Electron 9.0.0 がリリースされました! これには Chromium 83、V8 8.3、Node.js 12.14 へのアップグレードが含まれています。 スペルチェッカー機能や PDF ビュアーなど、いくつかの新しい API 統合を追加しました。


Electron チームは、Electron 9.0.0 のリリース発表にワクワクしています! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースには、アップグレード、修正、新機能が含まれています。 新機能たちと共に何を作るのか、楽しみにしています! このリリースの詳細については下に続きます。是非ご意見をお聞かせください!

注目すべき変更

累積的変更

注目の機能

  • スペルチェッカー機能に複数の改善をしました。 詳細は #22128#22368 を参照してください。
  • Linux におけるウインドウイベントハンドラの効率を改善しました。 #23260.
  • PDF ビュアーを有効にしました。 #22131.

新機能と変更の完全なリストは、9.0.0 リリースノート を参照してください。

破壊的変更

  • enableRemoteModule: true なしで remote を使用する場合に非推奨の警告が出るようになりました。 #21546
    • これは remote モジュールを非推奨にしユーザーランドへ移行する計画の第一段階です。 この Issue を読んで経緯を知ってください。この Issue では、理由を説明し非推奨化予定のタイムラインを提案しています。
  • app.enableRendererProcessReuse の省略値を true にしました。 #22336
    • これは、レンダラープロセスにロードされるネイティブ Node モジュールは N-APIコンテキス対応 であるという将来の要件に対応する作業の一環です。 完全な情報と提案された時系列は、この Issue で詳しく説明しています。
  • IPC で非 JavaScript オブジェクトを送信すると、例外が送出されるようになりました。 #21560
    • この動作は、Electron 8.0 ではあまり価値がありませんでした。 Electron 9.0 からは、旧シリアライズアルゴリズムが削除されました。先ほどのシリアライズ不可能なオブジェクトを送信すると、"object could not be cloned" (オブジェクトを複製できませんでした) というエラーが送出されます。

これらの変更と将来の変更の詳細については、予定されている破壊的な変更 のページを参照してください。

API の変更

  • shell API の変更:
    • shell.openItem API は非同期の shell.openPath API に置き換えられました。 提案内容
  • session API の変更:
    • session.listWordsFromSpellCheckerDictionary API を追加し、辞書のカスタムな単語を列挙できるようになりました。 #22128
    • session.removeWordFromSpellCheckerDictionary API を追加し、辞書のカスタムな単語を削除できるようになりました。 #22368
    • session.serviceWorkerContext APIを追加し、サービスワーカーの基本情報にアクセスし、サービスワーカーからコンソールログを受信できるようになりました。 #22313
  • app API の変更:
    • macOS の app.focus() に新しく force パラメータを追加し、アプリが強制的にフォーカスを取得できるようにしました。 #23447
  • BrowserWindow API の変更:
    • BrowserWindow の一部のゲッター/セッターのペアがプロパティアクセスに対応しました。 #23208

非推奨となった API

以下の API は非推奨化または削除されました。

  • shell.openItem API は非推奨となり、非同期の shell.openPath API に置き換えられました。
  • Electron 8.0 で非推奨となっていた <webview>.getWebContents は、削除されました。
  • Electron 8.0 で非推奨となっていた webFrame.setLayoutZoomLevelLimits は、削除されました。

6.x.y サポート終了

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

次回予告

短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。 リリース日について約束しないように注意していますが、予定では約四半期ごとに新しいメジャーバージョンの Electron を、各コンポーネントの新しいバージョンに対してリリースします。 仮 10.0.0 スケジュール では、Electron 10.0 開発ライフサイクルの主要な日付を示してあります。 また、Electron のバージョン管理の詳細については バージョン管理のドキュメントを参照 してください。

今後のバージョンの Electron で予定されている破壊的な変更の詳細については、予定されている破壊的な変更のドキュメントを参照してください

contextIsolation の既定値を false から true に変更 (Electron 10 から)

contextIsolation がないと、レンダラープロセスで実行されているコードは Electron の内部やアプリのプリロードスクリプトに簡単にアクセスできてしまいます。 そういったコードは、Electron が制限したい特権的なアクションを実行できてしまいます。

この既定値の変更は、Electron アプリのデフォルトのセキュリティが向上し、アプリによっては意図的に安全でない動作を選択することになります。 Electronは、Electron 10.0にある 現在のコンテキストのデフォルトの contextIsolation を、Electron 12.0の新しいデフォルト(true) に変更します。

のcontextIsolationisolationの詳細について、特に簡単に有効にする方法とセキュリティ上の利点をコンテキスト分離文書を参照してください。