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

Electron 12.0.0

·5 分で読めます

Electron 12.0.0 がリリースされました!Chromium 89、V8 8.9、Node.js 14.16 へのアップグレードが含まれています。リモートモジュールの変更、contextIsolation の新しいデフォルト、新しい webFrameMain API、および一般的な改善が追加されました。詳細については下記をお読みください!


Electron チームは、Electron 12.0.0 のリリースを発表できることを嬉しく思います!npm で npm install electron@latest を使用してインストールするか、リリースウェブサイトからダウンロードできます。このリリースに関する詳細については以下をお読みください。また、フィードバックがあれば共有してください!

注目すべき変更点

スタックの変更

ハイライト機能

  • ContextBridge exposeInMainWorld メソッドは、オブジェクト以外の API を公開できるようになりました。#26834
  • Node 12 から Node 14 にアップグレードしました。#23249
  • メインプロセスから WebContents インスタンスのサブフレームにアクセスするための新しい webFrameMain API を追加しました。#25464
  • contextIsolationworldSafeExecuteJavaScript のデフォルト値が true になりました。#27949 #27502

新機能と変更点の完全なリストについては、12.0.0 リリースノートをご覧ください。

破壊的変更

これらの変更および今後の変更に関する詳細については、計画された破壊的変更ページをご覧ください。

API の変更

  • webFrameMain API を追加:webFrameMain モジュールは、既存の WebContents インスタンス全体でフレームを検索するために使用できます。これは、既存の webFrame API のメインプロセス相当です。この新しい API の詳細については、こちら、およびドキュメントをご覧ください。
  • app API の変更
    • ローカライズされていない serviceName'child-process-gone' / app.getAppMetrics() に追加しました。#25975
    • Apple シリコン上で rosetta で実行されているかどうかを検出するための新しい app.runningUnderRosettaTranslation プロパティを追加しました。#26444
    • render-process-gone の詳細(アプリとwebContents)に exitCode が追加されました。#27677
  • BrowserWindow API の変更点
    • BrowserWindow.isTabletMode() API が追加されました。#25209
    • BrowserWindowresized (Windows/macOS) および moved (Windows) イベントが追加されました。#26216
    • システムコンテキストメニューの防止とオーバーライドを可能にする新しい system-context-menu イベントが追加されました。#25795
    • BrowserView を前面に表示できるように、win.setTopBrowserView() が追加されました。#27713
    • ドキュメントの最小サイズに応じてビューのサイズを変更できるように、webPreferences.preferredSizeMode が追加されました。#25874
  • contextBridge API の変更点
    • ContextBridge の exposeInMainWorld メソッドで、オブジェクトではない API を公開できるようになりました。#26834
  • display API の変更点
    • Windows のリフレッシュレートに関する情報を取得できるように、Display オブジェクトに displayFrequency プロパティが追加されました。#26472
  • extensions API の変更点
    • 一部の chrome.management API のサポートが追加されました。#25098
  • MenuItem API の変更点
    • macOS の共有メニューの表示がサポートされました。#25629
  • net API の変更点
    • net.request() に新しい credentials オプションが追加されました。#25284
    • インターネット接続が現在あるかどうかを検出するための net.online が追加されました。#21004
  • powerMonitor API の変更点
    • powerMonitor.onBatteryPower が追加されました。#26494
    • macOS の powerMonitor に高速ユーザー切り替えイベントが追加されました。#25321
  • session API の変更点
    • ses.loadExtension() API に allowFileAccess オプションが追加されました。#27702
    • session.setPermissionRequestHandlerdisplay-capture API が追加されました。#27696
    • session.setSSLConfigdisabledCipherSuites オプションが追加されました。#25818
    • sessionextension-loadedextension-unloaded、および extension-ready イベントが追加されました。#25385
    • SSL を構成できるように session.setSSLConfig() が追加されました。#25461
    • session.setProxy()directauto_detect、または system モードを明示的に指定するためのサポートが追加されました。#24937
    • Serial API のサポートが追加されました。#25237
    • スペルチェッカーを有効/無効にするための API が追加されました。#26276
  • shell API の変更点
    • 同期的な shell.moveItemToTrash() に代わる、新しい非同期の shell.trashItem() API が追加されました。#25114
  • webContents API の変更点
    • レンダラーのクラッシュをデバッグするのに役立つ小さなコンソールヒントがコンソールに追加されました。#25317
    • webRequest ハンドラーの詳細オブジェクトに frame および webContents プロパティが追加されました。#27334
    • ハングしたレンダラーの復旧を支援するために、レンダラープロセスを強制終了する webContents.forcefullyCrashRenderer() が追加されました。#25580
    • レンダラーで作成された子ウィンドウ用の setWindowOpenHandler API が追加され、new-window イベントは非推奨になりました。#24517
  • webFrame API の変更点
    • レンダラーにスペルチェック API が追加されました。#25060

削除/非推奨の変更点

次のAPIは削除されたか、非推奨になりました

  • remote モジュールを非推奨にしました。これは @electron/remote に置き換えられます。#25293
  • 非推奨の crashReporter API が削除されました。#26709
  • パッケージ化されたアプリのデフォルトの「ヘルプ」メニューから、Electron Webサイトへのリンクが削除されました。#25831

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

Electron 9.x.y は、プロジェクトのサポートポリシーに従って、サポートが終了しました。開発者およびアプリケーションは、新しいバージョンのElectronにアップグレードすることをお勧めします。

今後の予定

当面の間、チームはChromium、Node、V8など、Electronを構成する主要コンポーネントの開発を継続することに注力すると予想されます。リリース日については慎重を期していますが、これらのコンポーネントの新しいバージョンを搭載したElectronの新しいメジャーバージョンを四半期ごとにリリースする予定です。暫定的な13.0.0スケジュールでは、Electron 13.0の開発ライフサイクルにおける主要な日付をマッピングしています。また、Electronのバージョン管理の詳細については、バージョン管理に関するドキュメントをご覧ください。

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

Electron 11.0.0

·4分間の読み物

Electron 11.0.0がリリースされました!Chromium 87、V8 8.7、およびNode.js 12.18.3へのアップグレードが含まれています。Apple Siliconのサポートと、一般的な改善が追加されました。詳細については、以下をお読みください。


Electronチームは、Electron 11.0.0のリリースを発表できることを嬉しく思います!npm install electron@latestを使用してnpmでインストールするか、リリースWebサイトからダウンロードできます。このリリースには、アップグレード、修正、およびAppleのM1ハードウェアの新しいサポートが満載されています。

皆様がこれらで何を構築されるのか、楽しみです!このリリースに関する詳細については、引き続きお読みください。また、フィードバックがあればぜひ共有してください!

注目すべき変更点

スタックの変更

ハイライト機能

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

破壊的変更

  • 実験的なAPIが削除されました:BrowserView.{fromId, fromWebContents, getAllViews}BrowserViewidプロパティ。#23578

これらの変更および今後の変更に関する詳細については、計画された破壊的変更ページをご覧ください。

API の変更

  • 特定のプロトコルを処理するアプリに関する詳細情報を返すapp.getApplicationInfoForProtocol() APIが追加されました。#24112
  • ファイルのファイルパスと最大サムネイルサイズを指定して、ファイルのプレビュー画像を返すapp.createThumbnailFromPath() APIが追加されました。#24802
  • ハングしたレンダラーの復旧を支援するために、レンダラープロセスを強制終了するwebContents.forcefullyCrashRenderer()が追加されました。#25756

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

Electron 8.x.y は、プロジェクトのサポートポリシーに従って、サポートが終了しました。開発者およびアプリケーションは、新しいバージョンのElectronにアップグレードすることをお勧めします。

今後の予定

当面の間、チームはChromium、Node、V8など、Electronを構成する主要コンポーネントの開発を継続することに注力すると予想されます。リリース日については慎重を期していますが、これらのコンポーネントの新しいバージョンを搭載したElectronの新しいメジャーバージョンを四半期ごとにリリースする予定です。暫定的な12.0.0スケジュールでは、Electron 12.0の開発ライフサイクルにおける主要な日付をマッピングしています。また、Electronのバージョン管理の詳細については、バージョン管理に関するドキュメントをご覧ください。

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

remote モジュールの非推奨化に向けた継続的な取り組み

Electron 9 で remote モジュールの削除作業を開始しました。remote モジュール自体は Electron 14 で削除する予定です。

非推奨に関する完全な計画と詳細については、この issue を読んで従ってください。

ネイティブ Node モジュールがコンテキスト対応または N-API であることを必須とする最終ステップ (Electron 12)

Electron 6 以降、レンダラープロセスでロードされるネイティブ Node モジュールが、N-API または コンテキスト対応であることを必須とするための準備を進めてきました。この変更を強制することで、セキュリティの強化、パフォーマンスの高速化、メンテナンス負荷の軽減が可能になります。この計画の最終ステップは、Electron 12 でレンダラープロセスの再利用を無効にする機能を削除することです。

提案されているタイムラインを含む詳細については、この issue を読んで従ってください。

Apple Silicon のサポート

·3 分で読めます

今年後半に Apple Silicon ハードウェアがリリースされますが、新しいハードウェアで Electron アプリを実行するための道のりはどのようなものでしょうか?


Electron 11.0.0-beta.1 のリリースに伴い、Electron チームは、今年後半に Apple が出荷を予定している新しい Apple Silicon ハードウェア上で実行される Electron のビルドを出荷するようになりました。npm install electron@beta で最新のベータ版を入手するか、リリースウェブサイトから直接ダウンロードできます。

仕組み

Electron 11 から、Intel Mac 用と Apple Silicon Mac 用に別々のバージョンの Electron を出荷します。この変更の前から、すでに 2 つのアーティファクト、darwin-x64mas-x64 を出荷しており、後者は Mac App Store の互換性用でした。今回、上記アーティファクトの Apple Silicon 版である darwin-arm64mas-arm64 の 2 つのアーティファクトを新たに出荷します。

必要な対応

アプリのバージョンを 2 つ、x64 (Intel Mac) 用と arm64 (Apple Silicon) 用の 2 つ出荷する必要があります。良いニュースは、electron-packager, electron-rebuild, electron-forge が既に arm64 アーキテクチャをターゲットにすることをサポートしていることです。これらのパッケージの最新バージョンを実行している限り、ターゲットアーキテクチャを arm64 に更新すれば、アプリは問題なく動作するはずです。

将来的には、arm64 アプリと x64 アプリを単一のユニバーサルバイナリに「マージ」できるパッケージをリリースする予定ですが、このバイナリは巨大になり、ユーザーに出荷するにはおそらく理想的ではありません。

アップデート: このパッケージは @electron/universal で利用可能になりました。これを使用すると、パッケージ化された 2 つの x64 および arm64 アプリを単一のバイナリにマージできます。

潜在的な問題

ネイティブモジュール

新しいアーキテクチャをターゲットにしているため、ビルドの問題を引き起こす可能性のある依存関係をいくつか更新する必要があります。参考として、特定の依存関係の最小バージョンを以下に示します。

依存関係バージョン要件
Xcode>=12.2.0
node-gyp>=7.1.0
electron-rebuild>=1.12.0
electron-packager>=15.1.0

これらの依存関係のバージョン要件の結果として、特定のネイティブモジュールを修正/更新する必要がある場合があります。注目すべきことの 1 つは、Xcode のアップグレードにより新しいバージョンの macOS SDK が導入されるため、ネイティブモジュールのビルドが失敗する可能性があることです。

テスト方法

現在、Apple Silicon アプリケーションは Apple Silicon ハードウェアでのみ実行できますが、このブログ記事の執筆時点では市販されていません。Developer Transition Kitをお持ちの場合は、そこでアプリケーションをテストできます。そうでない場合は、アプリケーションが動作するかどうかをテストするには、Apple Silicon ハードウェアの製品版のリリースを待つ必要があります。

Rosetta 2 について

Rosetta 2 は、Apple の Rosetta テクノロジーの最新版であり、新しい arm64 Apple Silicon ハードウェア上で x64 Intel アプリケーションを実行できます。x64 Electron アプリは Rosetta 2 で動作すると考えていますが、注意すべき重要な点 (そして、ネイティブの arm64 バイナリを出荷する必要がある理由) がいくつかあります。

  • アプリのパフォーマンスは大幅に低下します。Electron / V8 は JavaScript に JIT コンパイルを使用しており、Rosetta の動作方法のため、実質的に JIT を 2 回実行することになります (V8 で 1 回、Rosetta で 1 回)。
  • メモリページサイズの増加など、Apple Silicon の新技術のメリットが得られません。
  • パフォーマンスが大幅に低下すると述べたのを覚えていますか?

コミュニティ Discord サーバーと Hacktoberfest

·3 分で読めます

コミュニティの絆を深め、オープンソースを 1 か月間お祝いしましょう。


Hacktoberfest and Discord banner

Electron コミュニティ Discord の立ち上げ

Electron のアウトリーチワーキンググループは、公式のコミュニティ Discord サーバーの立ち上げを発表しました。

新しい Discord サーバーの理由

Atom テキストエディターのバックボーンとしての初期の頃、Electron フレームワークに関するコミュニティディスカッションは、Atom の Slack ワークスペースの単一のチャンネルで行われていました。時間が経ち、2 つのプロジェクトがますます切り離されていくにつれて、Atom ワークスペースが Electron プロジェクトに関連する意味は薄れ、Slack チャンネルへのメンテナーの参加も同様に減少しました。

今まで、より広範なコミュニティを Atom Slack ワークスペースにリダイレクトしていましたが、招待状の受け取りに問題があるという報告が多数あり、コアメンテナーで頻繁にチャンネルを利用する人はほとんどいませんでした。

この新しいサーバーは、Electron に関する最新ニュースを入手できるコミュニティの中心的なディスカッションハブとなるように設定します。

参加しましょう!

今のところ、サーバーのメンバーシップは、サーバーのセットアップに協力してきた一部のメンテナーで構成されていますが、皆さんとのチャットを楽しみにしています。助けを求めたり、Electron のリリースに関する最新情報を入手したり、他の開発者と交流したりしてください。サーバーにアクセスできる便利な招待状をご用意しました。

Hacktoberfest 2020

大規模で長年続いているオープンソースプロジェクトとして、Electron は、コードの投稿からバグレポート、ドキュメントの変更など、コミュニティからのすべての貢献なしには、これほど成功していなかったでしょう。そのため、すべてのスキルレベルの開発者のより幅広いコミュニティをプロジェクトに導入するために、Hacktoberfest に参加することの重要性を信じています。

その他のこと

今年は、皆さんが取り組むことができる幅広いプロジェクトはありませんが、Electron JavaScript エコシステム全体で貢献する機会に焦点を当てたいと考えています。

メインの electron/electron リポジトリ、electron/electronjs.org ウェブサイト、electron/fiddle、および electron-userland/electron-forge を含む、さまざまなリポジトリで hacktoberfest タグが付けられた issue を探してください。

追伸:特に冒険好きなら、help wanted タグが付いた issue のバックログもあります。さらに難しいものをお探しの場合に。

行き詰まりましたか?チャットしましょう!

さらに、Discord サーバーのグランドオープンが、今年の最大のオープンソースソフトウェアのお祝いと一致するのも偶然ではありません。Hacktoberfest PR で助けを求めるには、#hacktoberfest チャンネルをチェックしてください。見逃した場合のために、招待リンクを再度掲載します!

Electron 10.0.0

·5 分で読めます

Electron 10.0.0 がリリースされました!Chromium 85、V8 8.5、Node.js 12.16 へのアップグレードが含まれています。いくつかの新しい API 統合と改善が追加されました。詳細については、以下をお読みください!


Electron チームは、Electron 10.0.0 のリリースを発表できることを嬉しく思います。npm install electron@latest を使用して npm でインストールするか、リリースウェブサイトからダウンロードできます。このリリースには、アップグレード、修正、および新機能が満載です。

Electron 10 のリリースでは、リリースノートも変更しました。Electron 10 で何が新しく、Electron 10 と過去のリリースで何が変更されたかを簡単に判断できるように、Electron 10 に導入されたが、以前のリリースにバックポートされた変更も含むようになりました。これにより、Electron をアップグレードする際に、新しい機能やバグ修正を見つけやすくなることを願っています。

皆様がこれらで何を構築されるのか、楽しみです!このリリースに関する詳細については、引き続きお読みください。また、フィードバックがあればぜひ共有してください!

注目すべき変更点

スタックの変更

ハイライト機能

  • contents.getBackgroundThrottling() メソッドと contents.backgroundThrottling プロパティを追加しました。 [#21036]
  • メインプロセスで desktopCapturer モジュールを公開しました。 #23548
  • ses.isPersistent() API を呼び出すことで、特定の session が永続的かどうかを確認できるようになりました。 #22622
  • ネットワーク IP アドレスの変更と ICE により、RTC コールが接続できなかったネットワーク問題を解決しました。(Chromium issue 1113227)。 #24998

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

破壊的変更

  • enableRemoteModule のデフォルト値を false に変更しました。 #22091
    • これは、remote モジュールを非推奨とし、ユーザランドに移行させる計画の一部です。この理由の詳細と非推奨化の提案されたタイムラインについては、こちらの issue を参照してください。
  • app.allowRendererProcessReuse のデフォルト値を true に変更しました。 #22336 (また、Electron 9でも変更されています)
    • これにより、レンダラープロセスでの非コンテキスト対応ネイティブモジュールの読み込みが防止されます。
    • この理由の詳細と非推奨化の提案されたタイムラインについては、こちらの issue を参照してください。
  • OS のロケールが RTL (アラビア語やヘブライ語など) の言語に設定されている場合、macOS でのウィンドウボタンの配置を修正しました。フレームレスウィンドウアプリは、ウィンドウをスタイル設定する際に、この変更を考慮する必要がある場合があります。 #22016

これらの変更および今後の変更に関する詳細については、計画された破壊的変更ページをご覧ください。

API の変更

  • セッション: ses.isPersistent() API を呼び出すことで、特定の session が永続的かどうかを確認できるようになりました。 #22622
  • コンテンツ: contents.getBackgroundThrottling() メソッドと contents.backgroundThrottling プロパティを追加しました。 #21036

非推奨 API

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

  • 非推奨の netLogcurrentlyLoggingPath プロパティを削除しました。また、netLog.stopLogging は記録されたログへのパスを返さなくなりました。 #22732
  • crashReporter で非圧縮クラッシュアップロードを非推奨にしました。 #23598

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

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

今後の予定

短期的には、Electron を構成する主要なコンポーネント (Chromium、Node、V8 など) の開発に遅れないようにすることにチームが焦点を当て続けることが期待されます。リリース日について約束することは慎重に避けますが、これらのコンポーネントの新しいバージョンを搭載した Electron の新しいメジャーバージョンを四半期ごとにリリースする予定です。暫定的な 11.0.0 のスケジュールは、Electron 11.0 の開発ライフサイクルの主要な日付を示しています。また、Electron のバージョン管理の詳細については、バージョン管理ドキュメントを参照してください。

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

remote モジュールの非推奨化に関する継続的な作業 (Electron 11 で)

Electron 9 で remote モジュールの削除作業を開始し、remote モジュールを削除する計画を継続しています。Electron 11 では、Electron 10 で行ったように、WeakRef を実装するためのリファクタリング作業を継続する予定です。非推奨化の完全な計画と詳細については、こちらの issue を参照してください。

ネイティブ Node モジュールがコンテキスト対応または N-API であることを必須とする最終ステップ (Electron 12)

編集: 当初、このブログ記事では、Electron 11 でレンダラープロセスの再利用を無効化すると述べていました。レンダラープロセスの再利用の無効化は、Electron 12 に延期されました。

Electron 6 以降、レンダラープロセスで読み込まれる ネイティブ Node モジュールN-API または Context Aware のいずれかである必要があるように、基礎を築いてきました。この変更を強制することで、セキュリティの強化、パフォーマンスの向上、およびメンテナンス作業の軽減が可能になります。この計画の最終ステップは、Electron 12 でレンダリングプロセスの再利用を無効にする機能を削除することです。提案されたタイムラインを含む詳細については、こちらの issue をお読みください。

Electron が OpenJS Foundation のインパクトプロジェクトになる

·1分で読めます

今朝の OpenJS World で、Electron が OpenJS Foundation のインキュベーションプログラムを正式に卒業し、OpenJS Foundation Impact Project になったことを発表しました。

Electron は、モントリオールで開催された前回の OpenJS Foundation グローバル会議で、2019 年 12 月にインキュベーションに参加しました。Impact Project として JavaScript コミュニティでより大きな役割を果たし、OpenJS Foundation とのパートナーシップを継続できることを楽しみにしています。


詳細情報

財団、そのミッション、およびメンバーについては、OpenJSF のウェブサイトで確認できます。OpenJS Foundation は、jQuery、Node.js、webpack を含む多くのオープンソース JavaScript プロジェクトを主催しています。GoDaddy、Google、IBM、Intel、Joyent、Microsoft など、30 の企業およびエンドユーザーメンバーによってサポートされています。

Electron は、Web テクノロジーを使用してクロスプラットフォームデスクトップアプリケーションを構築するためのオープンソースフレームワークです。Electron を支える人々とその協力方法の詳細については、ガバナンスページをご覧ください。

Electron を使い始めるには、ドキュメントをご覧ください。

Google Season of Docs

·2分で読めます

Electron は、プロジェクトのドキュメントを改善するために、オープンソース組織のメンターとテクニカルライターを結び付ける、Google の Season of Docs イニシアチブの第 2 版に参加できることを誇りに思っています。


Season of Docs とは?

Season of Docs logo

Season of Docs は、テクニカルライターとオープンソースコミュニティ間のコラボレーションを促進するプログラムであり、両者にとって有益です。オープンソースのメンテナは、ライターの技術ライティングの専門知識を活用してドキュメントの構造と内容を改善し、テクニカルライターはメンターの指導の下でオープンソースコミュニティに紹介されます。詳細については、Google の Season of Docs ウェブサイトをご覧ください。

このプログラムへの初参加では、Electron の Ecosystem Working Group と協力して、ドキュメントの大部分を再構築する 1 人のテクニカルライターを指導します。プロジェクト全体のタイムラインの詳細については、こちらを参照してください。

サインアップする方法は?

テクニカルライターとして協力することに興味がありますか? まず、今年のプログラムの Google の テクニカルライターガイドをよく理解し、私たちが準備した 2 つの プロジェクトアイデア草案をチェックしてください。

Season of Docs の Electron のテクニカルライターとして選ばれるためには、候補者は 6 月 8 日から 7 月 9 日まで実施されるテクニカルライターの応募期間中に、Google Season of Docs ウェブサイトで応募する必要があります。

応募には、3 か月間で Electron ドキュメントで何を達成する予定かを詳細に記述した文書である提案書を含める必要があります。この提案書は、プロジェクトアイデアドキュメントに記載されている開始点の 1 つを基に作成することも、完全に新しいものにすることもできます。どこから始めればよいかわからない場合は、昨年の 承認された提案書のリストを参考にご覧ください。

提案書に加えて、テクニカルライターとしてのあなたの経歴も確認します。関連する執筆経験を強調した履歴書と、テクニカルライティングのサンプル (既存のドキュメント、チュートリアル、ブログ投稿など) を含めてください。

プロジェクト提案について話し合いたい場合は、season-of-docs@electronjs.org にメールをお送りください。そこからチャットできます。

参考文献

Electron 9.0.0

·4分間の読み物

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


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 をご覧ください。
  • app.enableRendererProcessReuse をデフォルトで true に設定しました。#22336
    • これは、レンダラープロセスでロードされるネイティブ Node モジュールが N-API または コンテキストアウェア のいずれかになるという将来の要件に向けた継続的な作業です。完全な情報と提案されたタイムラインについては、この issue で詳しく説明されています。
  • JavaScript オブジェクト以外のオブジェクトを IPC 経由で送信すると、例外がスローされるようになりました。#21560
    • この動作は Electron 8.0 で非推奨となりました。Electron 9.0 では、古いシリアライズアルゴリズムが削除され、このようなシリアライズ不可能なオブジェクトを送信すると、「オブジェクトを複製できませんでした」というエラーがスローされるようになりました。

これらの変更および今後の変更に関する詳細については、計画された破壊的変更ページをご覧ください。

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 の一部の getter/setter ペアへのプロパティアクセスをサポートしました。#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) に変更します。

contextIsolation の詳細、有効化する方法、およびセキュリティ上の利点については、専用のContext Isolation ドキュメントをご覧ください。

今後の Electron リリース

·1分で読めます

Electron は一時的にメジャーリリースのペースを停止します


何が起こっているのか?

私たちのメジャーリリース周期スケジュールは Chromium のスケジュールと足並みを揃えており、Chromium プロジェクトは最近、作業スケジュールの調整によりリリースを一時停止する決定をしました。これは、Chromium の変更された周期の間、Electron も一時的に新しいメジャーリリースを一時停止することを意味します。

私たちの最良の選択は Chromium の足跡をたどることだと感じています。そのため、当面の間、Electron チームはバグ修正、セキュリティ、パフォーマンス、および安定性のためのフルタイムの作業に移行します。

この期間中、私たちのメンテナーと消費者の両方の幸福を優先させたいと考えています。そのため、フィードバックをお待ちしており、通常のリリーススケジュールに戻ることを楽しみにしています。

より多くの最新情報については、Twitter アカウントをフォローしてください。

編集 (2020-03-30): Chromium M83 をターゲットとする Electron 9 安定版は、Chromium の M82 安定版をスキップし、M83 安定版の日付を調整する発表に対応して、2020 年 5 月 19 日にリリースされます。

Electron 8.0.0

·6 分で読めます

Electron 8.0.0 がリリースされました!Chromium 80、V8 8.0、Node.js 12.13.0 へのアップグレードが含まれています。Chrome の組み込みスペルチェッカーなどが追加されました!


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

注目すべき変更点

スタックの変更

ハイライト機能

  • Chrome の組み込みスペルチェッカー機能の使用を実装しました。詳細については、#20692#21266 を参照してください。
  • IPC 通信は v8 の構造化クローンアルゴリズムを使用するようになりました。これは、既存のロジックよりも高速で、機能が豊富で、驚きが少なく、大きなバッファや複雑なオブジェクトの場合、パフォーマンスが 2 倍向上します。小さなメッセージの遅延は大きな影響を受けません。詳細については、#20214 を参照してください。

新機能と変更点の完全なリストについては、8.0.0 リリースノートをご覧ください。

破壊的変更

  • コンテキストアウェアモジュールの非推奨警告でモジュール名を表示します。#21952
    • これは、レンダラープロセスでロードされるネイティブ Node モジュールが N-API または コンテキストアウェア のいずれかになるという将来の要件に向けた継続的な作業です。完全な情報と提案されたタイムラインについては、この issue で詳しく説明されています。
  • IPC 経由で送信される値は、構造化クローンアルゴリズムを使用してシリアライズされるようになりました。#20214
  • オフスクリーンレンダリングは、この機能に取り組むメンテナーが不足しているため、現在無効になっています。Chromium のアップグレード中に破損し、その後無効になりました。#20772

これらの変更および今後の変更に関する詳細については、計画された破壊的変更ページをご覧ください。

API の変更

  • app API の変更
    • app.getApplicationNameForProtocol(url) を追加しました。#20399
    • Windows で app.showAboutPanel()app.setAboutPanelOptions(options) のサポートを追加しました。#19420
  • BrowserWindow API の変更点
    • BrowserWindow オプションの hasShadow がすべてのプラットフォームで利用可能であることを示すようにドキュメントを更新しました#20038
    • 交通信号ボタンのカスタム配置を可能にする trafficLightPosition オプションを BrowserWindow オプションに追加しました。#21781
    • アクセス可能なウィンドウタイトルを設定するための accessibleTitle オプションを BrowserWindow に追加しました#19698
    • BrowserWindow.fromWebContents() が null を返すことができるようになりました#19983
    • BrowserWindow.getMediaSourceId()BrowserWindow.moveAbove(mediaSourceId) を追加しました。#18926
    • macOS で will-move イベントのサポートを追加しました。#19641
  • 以前ドキュメント化されていなかった crashReporter.getCrashesDirectory() をドキュメント化しました。#20417
  • dialog API の変更
    • オープンダイアログでドキュメントが Windows の最近使ったドキュメントに追加されないようにするための dontAddToRecent プロパティを dialog.showOpenDialogdialog.showOpenDialogSync に追加しました。#19669
    • dialog.showSaveDialogdialog.showSaveDialogSync にプロパティのカスタマイズを追加しました。#19672
  • Notification API の変更
    • Linux/Windows ユーザーが通知タイムアウトの種類を設定できるようにする timeoutType オプションを追加しました。#20153
    • Linux 通知の重要度を設定する urgency オプションを追加しました。#20152
  • session API の変更点
    • オプションのオプションを記述するように、session.setProxy(config)session.setCertificateVerifyProc(proc) のドキュメントを更新しました。#19604
    • BrowserWindow なしでダウンロードをトリガーできるようにする session.downloadURL(url) を追加しました。#19889
    • session.preconnect(options)preconnect イベントを介した HTTP プリコネクトリソースヒントのサポートを追加しました。#18671
    • 辞書にカスタム単語を追加できるようにする session.addWordToSpellCheckerDictionary を追加しました#21297
  • moveItemToTrash が失敗した場合の処理を指定するために、macOS の shell.moveItemToTrash(fullPath[, deleteOnFail]) にオプションを追加しました。#19700
  • systemPreferences API の変更
    • macOS 向けの systemPreferences.getColor(color) のドキュメントを更新しました。#20611
    • screen メディアタイプを systemPreferences.getMediaAccessStatus() に追加しました。#20764
  • アプリが Chromium と OS のテーマ選択を上書きできるように、nativeTheme.themeSource を追加しました。#19960
  • TouchBar API の変更
    • TouchBarButton/TouchBarLabel のアクセシビリティを向上させるために、accessibilityLabel プロパティを TouchBarButton および TouchBarLabel に追加しました。#20454
    • TouchBar 関連のドキュメントを更新しました。#19444
  • tray API の変更
    • tray.displayBalloon() に新しいオプション(iconTypelargeIconnoSoundrespectQuietTime)を追加しました。#19544
    • すでに表示されているバルーン通知を削除する tray.removeBalloon() を追加しました。#19547
    • タスクバーの通知領域にフォーカスを戻す tray.focus() を追加しました。feat: add tray.focus() #19548
  • webContents API の変更点
    • webContents API で executeJavaScriptInIsolatedWorld を公開するために、contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture]) を追加しました。#21190
    • 非表示の webContents をキャプチャするメソッドを追加しました。#21679
    • 印刷ページのヘッダーとフッターのカスタマイズを有効にするためのオプションを webContents.print([options], [callback]) に追加しました。#19688
    • webContents.getAllSharedWorkers()webContents.inspectSharedWorkerById(workerId) を介して、特定の共有ワーカーを検査する機能を追加しました。#20389
    • WebContents.printToPDF() に fitToPageEnabled および scaleFactor オプションのサポートを追加しました。#20436
  • webview.printToPDF のドキュメントを更新し、戻り値の型が Uint8Array になったことを示しました。#20505

非推奨 API

以下の API は非推奨になりました

  • 次のメジャーリリースバージョンでの削除に先立ち、BrowserWindow.setVisibleOnAllWorkspaces 内の機能しない visibleOnFullScreen オプションを非推奨にしました。#21732
  • macOS 向けに systemPreferences.getColor(color)alternate-selected-control-text を非推奨にしました。#20611
  • Chromium がこの機能を削除したため、webContentswebFrame、および <webview> TagsetLayoutZoomLevelLimits を非推奨にしました。#21296
  • app.allowRendererProcessReuse のデフォルト値である false が非推奨になりました。#21287
  • リモートモジュールに依存するため、<webview>.getWebContents() を非推奨にしました。#20726

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

Electron 5.x.y は、プロジェクトの サポートポリシー に従ってサポートが終了しました。開発者およびアプリケーションは、新しいバージョンの Electron にアップグレードすることを推奨します。

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

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

今後の予定

短期的には、Electron を構成する主要なコンポーネント(Chromium、Node、V8 など)の開発に遅れないようにチームが引き続き注力することを期待できます。リリース日について約束することは慎重に避けますが、私たちの計画は、これらのコンポーネントの新しいバージョンとともに、約四半期ごとに Electron の新しいメジャーバージョンをリリースすることです。暫定的な 9.0.0 スケジュール は、Electron 9 の開発ライフサイクルにおける重要な日付を示しています。また、バージョン管理に関するドキュメント を参照して、Electron のバージョン管理に関する詳細情報を確認してください。

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

remote モジュールの非推奨 (Electron 9 以降で開始)

重大なセキュリティ上の脆弱性のため、Electron 9 以降で remote モジュール を非推奨にする計画を開始しています。この理由の詳細と、非推奨の提案されたタイムラインを含む この issue を読んでフォローできます。