メインコンテンツへ飛ぶ

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

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 を読んで経緯を知ってください。この Issue では、理由を説明し非推奨化予定のタイムラインを提案しています。
  • app.allowRendererProcessReuse の既定値を true に変更しました。 #22336 (Electron 9 でも)
    • これにより、コンテキスト未対応のネイティブモジュールがレンダラープロセスでロードされるのを防げます。
    • この Issue を読んで経緯を知ってください。この Issue では、理由を説明し非推奨化予定のタイムラインを提案しています。
  • macOS で OS のロケールが右書き言語 (アラビア語やヘブライ語など) に設定されている場合のウインドウボタンの位置を修正しました。 フレームレスウインドウのアプリは、この変化を考慮してウインドウのスタイルを作る必要があるかもしれません。 #22016

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

API の変更

  • Session: ses.isPersistent() API を呼び出すことで、与えられた session が永続的であるかどうかをチェックできるようになりました。 #22622
  • Contents: contents.getBackgroundThrottling() メソッドと contents.backgroundThrottling プロパティを追加しました。 #21036

非推奨となった API

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

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

7.x.y サポート終了

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

次回予告

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

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

remote モジュールの非推奨化作業の継続 (Electron 11 にて)

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

ネイティブ Node モジュールで Context Aware や N-API を要求するようにする最終段階 (Electron 12 にて)

編集: 元々、このブログ記事では Electron 11 でレンダラープロセスの再利用が無効になると記載してありました。 レンダラープロセスの再利用を無効にする機能は Electron 12 に延期されました。

Electron 6 以降、レンダラープロセスで読み込まれる ネイティブ Node モジュール では、N-API または Context Aware のいずれかであることを要求するように下準備の作業が行われてきました。 この変更を適用することで、セキュリティの強化、パフォーマンスの高速化、保守作業の軽減が可能になります。 この計画の最終段階は、Electron 12 でレンダラープロセスの再利用を無効にする機能を削除することです。 提案のタイムラインを含む詳細は、この Issue をご参照ください。

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

今朝 OpenJSワールド で、Electronが OpenJS財団の インキュベーションプログラムを正式に卒業し、現在OpenJS財団インパクトプロジェクトになったことを発表しました。

Electron は 2019 年 12 月にインキュベーションに参加しました。これは、モントリオールで開催された直近の OpenJS Foundation グローバルカンファレンスで発表されました。 私たちは、Impact Project として JavaScript コミュニティでより大きな役割を果たし、OpenJS Foundation とのパートナーシップを継続できることを嬉しく思います。


詳細

財団、その使命、財団員については、[OpenJSF ウェブサイト](https://www.notion.so/Electron-joins-the-OpenJS-Foundation- d898f12480874e56abe78f29b041fb91#0801fd7e9fa340afbcdce0510ba05f8a) で見ることができます。 OpenJS 財団は、jQuery、Node.js、webpack などの多くのオープンソース JavaScript プロジェクトをホストしています。 GoDaddy、Google、IBM、Intel、Joyent、Microsoft を含む 30 の企業やエンドユーザーメンバーによってサポートされています。

Electron は、ウェブ技術を備えたクロスプラットフォームのデスクトップアプリケーションを構築するオープンソースフレームワークです。 Electron の裏方の人物とどのように連携するのかについては、ガバナンスページ を参照してください。

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

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

Google Season of Docs 第 2 段に参加させていただき、Electron としては大変光栄です。このイニシアティブでは、オープンソース組織のメンターとテクニカルライターがペアを組み、プロジェクトのドキュメントを改善していきます。


Season of Docs とは何ですか?

Season of Docs ロゴ

Season of Docs は、テクニカルライターとオープンソースコミュニティのコラボレーションを促進し、両者の利益に貢献するプログラムです。 オープンソースのメンテナーは、ライターのテクニカルライティングの専門知識を活用して、ドキュメントの構造と内容を改善します。テクニカルライターは、指導者の指導のもとオープンソースのコミュニティへ派遣されます。 詳細は Google の Season of Docs ウェブサイト で解説しています。

このプログラムに初めて参加した弊社では、テクニカルライター 1 名をメンターとして迎え、Electron の エコシステム作業グループ と協力しドキュメントの大部分を再構築していきます。 プロジェクト全体のタイムラインについては、こちら をご覧ください。

登録方法は何ですか?

テクニカルライターとして弊社とのコラボレーションに興味がございますか? まずは、今年のプログラムのために Google の テクニカルライターガイド を把握し、用意した 2 つの プロジェクトのアイデア草稿 をご確認ください。

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

応募書類には、3 ヶ月間 Electron ドキュメントで何を成し遂げようとしているのかを詳細に記述した提案書を添付してください。 この提案書は、プロジェクトのアイデア草稿に記載した出発点のいずれかを発展させた内容か、全く新しいものにして頂いて構いません。 どこから手を付ければいいのかわかりませんか? 昨年の 受理された提案書のリスト を閲覧して、知見を得ることもできますよ。

提案書とは別に、テクニカルライターとしての経歴も審査されます。 履歴書には、テクニカルライティングのサンプル (既存のドキュメント、チュートリアル、ブログ記事など) と、加えて関連するライティング経験を強調したコピーを添付してください。

プロジェクトの提案を議論したい場合は、season-of-docs@electronjs.org までメールでお問い合わせください。そこからお話しましょう!

リファレンス

· 読むのにかかる時間 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の詳細について、特に簡単に有効にする方法とセキュリティ上の利点をコンテキスト分離文書を参照してください。

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

Electron はメジャーリリースを延期しています


何か起きているのですか?

メジャーリリースのケイデンススケジュール は Chromium のリリーススケジュールと連動しており、最近になって Chromium プロジェクトは作業スケジュール調整のために リリースを一時停止する 決定をしました。 つまり、Chromium のケイデンスが変更されている間、Electron は新しいメジャーリリースを一時的に延期します。

Chromium の歩みに合わせることが最善の選択として慎重に進めており、その間、Electron チームはバグ修正、セキュリティ、パフォーマンス、安定性に関するフルタイム作業に移行します。

この間、メンテナーと消費者両方の福利が優先されたいため、フィードバックを歓迎しますし、通常のリリーススケジュールに戻ることを楽しみにしています。

その他の更新情報については Twitter アカウント をフォローしてください。

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

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

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#7189 を参照してください。
  • IPC 通信では、v8 の構造化複製アルゴリズムが使用されるようになりました。 これは既存のロジックよりも驚くほど高速で、機能豊富で、小さくなっています。大容量バッファと複雑なオブジェクトに対するパフォーマンスは約 2 倍に向上します。 小さいメッセージに対する遅延はほとんど影響しません。 詳細は #20214 を参照してください。

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

破壊的変更

  • コンテキスト対応モジュールの非推奨警告でその名前を表示します。 #21952
    • これは、レンダラープロセスにロードされるネイティブ Node モジュールは N-APIコンテキス対応 であるという将来の要件に対応する作業の一環です。 完全な情報と提案された時系列は、この Issue で詳しく説明しています。
  • IPC を介して送信される値が構造化複製アルゴリズムでシリアライズされるように. #20214
  • オフスクリーンレンダリングの機能を管理するメンテナーがいないため、これは現在無効になっています。 Chromium のアップグレード中に動作しなくなり、その後無効になりました。 #20772

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

API の変更

  • app API の変更:
    • app.getApplicationNameForProtocol(url) を追加しました。 #20399
    • app.showAboutPanel()app.setAboutPanelOptions(options) に Windows での対応を追加しました。 #19420
  • BrowserWindow API の変更:
    • BrowserWindow オプション hasShadow が全プラットフォームで利用可能であることを注意するようにドキュメントを更新しました #20038
    • BrowserWindow オプションに trafficLightPosition オプションを追加して、信号機ボタンのカスタム位置を指定できるようにしました。 #21781
    • アクセシブルウィンドウのタイトルを設定する accessibleTitle オプションを BrowserWindow に追加しました #19698
    • BrowserWindow.fromWebContents() が null も返すようになりました #19983
    • BrowserWindow.getMediaSourceId()BrowserWindow.moveAbove(mediaSourceId) を追加しました。 #18926
    • macOS での will-move イベントの対応を追加しました。 #19641
  • 以前にドキュメント化されていなかった crashReporter.getCrashesDirectory() をドキュメント化しました。 #20417
  • dialog API の変更:
    • dontAddToRecent プロパティを dialog.showOpenDialogdialog.showOpenDialogSync に追加しました。これは開くダイアログで書類を開いても Windows の最近開いたドキュメントに追加しません。 #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
  • macOS の shell.moveItemToTrash(fullPath[, deleteOnFail]) にオプションを追加しました。これは moveItemToTrash が失敗した場合の動作を指定します。 #19700
  • systemPreferences API の変更:
    • macOS の systemPreferences.getColor(color)ドキュメントを更新しました。 #20611
    • screen メディアタイプを systemPreferences.getMediaAccessStatus() に追加しました。 #20764
  • nativeTheme.themeSource を追加しました。これはアプリが Chromium と OS のテーマ選択をオーバーライドできるようにします。 #19960
  • TouchBar API の変更:
    • accessibilityLabel プロパティを TouchBarButtonTouchBarLabel に追加しました。これにより、TouchBarButton/TouchBarLabel のアクセシビリティを改善しました。 #20454
    • TouchBar に関するドキュメントを更新しました #19444
  • tray API の変更:
    • tray.displayBalloon() に以下の新しいオプションを追加しました。iconTypelargeIconnoSoundrespectQuietTime です。 #19544
    • tray.removeBalloon() を追加しました。これは、既に表示しているバルーン通知を削除します。 #19547
    • tray.focus() を追加しました。これは、タスクバーの通知領域にフォーカスを戻します。 機能: tray.focus() の追加 #19548
  • webContents API の変更:
    • contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture]) を追加しました。これは webContents API 上での executeJavaScriptInIsolatedWorld を公開します。 #21190
    • 非表示の webContents をキャプチャするメソッドを追加しました。 #21679
    • 印刷ページのヘッダーとフッターのカスタマイズを有効にするオプションを webContents.print([options], [callback]) に追加しました。 #19688
    • webContents.getAllSharedWorkers()webContents.inspectSharedWorkerById(workerId) を介して特定の共有ワーカーをインスペクトする機能が追加されました。 #20389
    • WebContents.printToPDF() での fitToPageEnabledscaleFactor オプションの対応を追加しました。 #20436
  • webview.printToPDF のドキュメントを更新し、戻り値型が Uint8Array になったことを示しました。 #20505

非推奨となった API

これらの API は非推奨になりました。

  • BrowserWindow.setVisibleOnAllWorkspaces で機能していない visibleOnFullScreen オプションを非推奨にしました。これは次のメジャーリリースバージョンで削除します。 #21732
  • macOS の systemPreferences.getColor(color) での alternate-selected-control-text を非推奨にしました。 #20611
  • Chromium がこの機能を削除したため、webContentswebFrame<webview>setLayoutZoomLevelLimits を非推奨にしました。 #21296
  • app.allowRendererProcessReuse の省略値 false を非推奨にしました。 #21287
  • remote モジュールに依存するため、<webview>.getWebContents() を非推奨にしました。 #20726

5.x.y サポート終了

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

App のフィードバックプログラム

テストには引き続き アプリフィードバックプログラム を使用します。 このプログラムに参加するプロジェクトは、そのアプリで Electron ベータ版をテストします。見返りとして、発見した新しいバグは安定版リリースのために優先します。 参加や詳細については、当プログラムに関するブログ記事を確認してください

次回予告

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

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

remote モジュールの非推奨化 (Electron 9 から)

深刻なセキュリティ面の問題のため、Electron 9 から remote モジュール の非推奨化計画を始めています。 この Issue を読んで経緯を知ってください。この Issue では、理由を説明し非推奨化予定のタイムラインを提案しています。

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

モントリオールの Node + JS Interactiveで、OpenJS 財団 が Electron を財団のインキュベーションプログラムに受け入れたことを発表しました。 財団は、プロジェクトをホストし維持する中立的な組織を提供し、コミュニティ全体の利益のために共同で活動に資金を提供することにより、JavaScript エコシステムとウェブ技術の健全な成長を支援することを約束します。

OpenJS 財団は、jQuery、Node.js、webpack などの多くのオープンソース JavaScript プロジェクトをホストしています。 GoDaddy、Google、IBM、Intel、Joyent、Microsoft を含む 30 の企業やエンドユーザーメンバーによってサポートされています。 Electron は、ウェブ技術を備えたクロスプラットフォームのデスクトップアプリケーションを構築するオープンソースフレームワークです。

これは Electron にとって心躍る決定であり、オープンソースプロジェクトとして次の段階へ進化したと考えています。


開発者にとっての意義

Electron が OpenJS 財団に参加しても、Electron の作成、リリース、使用方法は変わりません。Electron を使用してアプリケーションを構築する開発者に直接影響を与えることはありません。 Electron は 2013 年に GitHub で作成されましたが、現在は多くの組織や個人によって管理されています。 2019 年、Electron はガバナンス構造を体系化し、プロジェクト全体に影響を与える決定方法の形式化に多額の投資を行いました。 複数の組織と開発者が Electron に投資し、協力することで、プロジェクトがより強くなると信じています。

Electron を単一企業体の所有から引き上げ、ウェブや JavaScript エコシステムのサポートに焦点を当てた中立的な基盤に移行することで、オープンソースプロジェクトとして次の段階へ成熟します。

詳細

財団、その使命、財団員については、[OpenJSF ウェブサイト](https://www.notion.so/Electron-joins-the-OpenJS-Foundation- d898f12480874e56abe78f29b041fb91#0801fd7e9fa340afbcdce0510ba05f8a) で見ることができます。 Electron の OpenJSF インキュベーションプログラムへの受け入れに関する詳細と引用については、公式プレスリリースをご覧ください。 Electron の裏方の人物とどのように連携するのかについては、ガバナンスページ を参照してください。

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

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

Chrome に高レベルの重大な脆弱性が発見されました。Electron を含む Chromium ベースのすべてのソフトウェアに影響します。

この脆弱性は CVE-2019-13720 と命名されています。 詳細は Chrome ブログ記事 を参照してください。

Chrome でこの脆弱性が悪用されているという報告があります。なるべく早く Electron を更新することを強く推奨します。


影響範囲

これはサードパーティや信頼できない JavaScript を実行する恐れのある Electron アプリケーションに影響します。

緩和策

影響を受けるアプリは、パッチを当てたバージョンの Electron にアップグレードする必要があります。

以下の通り、この脆弱性に対する修正を含む新しいバージョンの Electron を公開しました。

Electron 7.0.1 は、公表前に上流からの修正を自動的に含めました。 Electron 8 も同様に影響を受けません。 Electron 5 にこの脆弱性は存在しなかったため、そのバージョンも影響ありません。

詳細情報

この脆弱性は Kaspersky 研究所の Anton Ivanov と Alexey Kulaev によって発見され、Chrome チームに報告されました。 その Chrome ブログ記事は こちら です。

Electron アプリを堅牢に保つベストプラクティスの詳細は、セキュリティチュートリアル を参照してください。

Electron の脆弱性を報告する場合は、security@electronjs.org にメールでご連絡お願いします。

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

Electron 7.0.0 がリリースされました! これには Chromium 78、V8 7.8、Node.js 12.8.1 へのアップグレードが入っています。 Arm 64 版 Windows リリース、より高速な IPC メソッド、新しい nativeTheme API などを追加しました。


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

注目すべき変更

  • 累積的更新:

    累積Electron 6 でのバージョンElectron 7 でのバージョン新機能
    Chromium76.0.3809.14678.0.3905.177, 78
    V87.67.87.7, 7.8
    Node.js12.4.012.8.112.5, 12.6, 12.7, 12.8, 12.8.1
  • Arm (64 bit) 版 Windows リリースを追加しました。 #18591#20112

  • リクエスト/レスポンス式の非同期 IPC 向けに ipcRenderer.invoke()ipcMain.handle() を追加しました。 これらは remote モジュールよりも強く推奨されます。 詳細はこちらの "Electron の 'remote' モジュールは有害と考えられる" ブログ記事を参照してください。 #18449

  • OS のテーマや配色の変更を読み取って対応する nativeTheme API を追加しました。 #19758#20486

  • 新しい TypeScript 定義ファイル ジェネレータ に移行ました。 出力結果の定義ファイルがより正確になりました。TypeScript でのビルドに失敗するようになった場合は、これが原因である可能性が高いです。 #18103

変更の完全なリストは、7.0.0 リリースノート を参照してください。

破壊的変更

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

  • 非推奨だった API の削除:
    • Promise を使用するようになった関数のコールバックベース版。 #17907
    • Tray.setHighlightMode() (macOS)。 #18981
    • app.enableMixedSandbox() #17894
    • app.getApplicationMenu()
    • app.setApplicationMenu()
    • powerMonitor.querySystemIdleState()
    • powerMonitor.querySystemIdleTime()
    • webFrame.setIsolatedWorldContentSecurityPolicy()
    • webFrame.setIsolatedWorldHumanReadableName()
    • webFrame.setIsolatedWorldSecurityOrigin() #18159
  • Session.clearAuthCache() はクリアしたキャッシュエントリをフィルタリングできなくなりました。 #17970
  • macOS のネイティブインターフェース (メニュー、ダイアログなど) が、ユーザーのマシンのダークモード設定に自動で合わせるようになりました。 #19226
  • electron モジュールが @electron/get を使用するように更新しました。 Node の最小対応バージョンが Node 8 になりました。 #18413
  • ファイル electron.asar は無くなりました。 このファイルが存在することに依存しているすべてのパッケージスクリプトは更新する必要があります。 #18577

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

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

App のフィードバックプログラム

テストには引き続き アプリフィードバックプログラム を使用します。 このプログラムに参加するプロジェクトは、そのアプリで Electron ベータ版をテストします。見返りとして、発見した新しいバグは安定版リリースのために優先します。 参加や詳細については、プログラムに関するブログ記事を確認してください

次回予告

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

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

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

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


新機能

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

Electron の機能の多くは、Chromium、Node.js、V8 といったコアコンポーネントによって提供されています。 Electron では、これらのプロジェクトが最新のものになるように維持し、JavaScript の新機能、パフォーマンスの向上、セキュリティ修正をユーザーに提供しています。 これらの各パッケージについて、Electron 6 ではメジャーバージョンを更新しています。

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

Promise 化

Electron 6.0 でも 5.0 から始まった近代化 イニシアチブ を継続し、Promise のサポート改善を行っています。

これらの関数は 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).appElectron Helper (Plugin).app

Hardened Runtime を有効にするためには、書き込みと実行が可能なメモリや異なるチーム ID で署名されたコードの読み込みなどを制限するために、特別なコード署名権限を Helper に付与する必要がありました。

Chromium の Helper アプリに 3 つの新しい種別を 追加しました。1 つはレンダラー用 (Electron Helper (Renderer).app)、1 つは GPU プロセス用 (Electron Helper (GPU).app)、1 つはプラグイン用 (Electron Helper (Plugin).app) です。

electron-osx-sign で Electron アプリのコード署名を行っている方は、ビルドロジックを変更しなくても構いません。 カスタムスクリプトでアプリをコード署名する場合は、3 つの新しい Helper アプリケーションを正しくコード署名しているかどうか確認する必要があります。

これらの新しいヘルパーと共にアプリケーションを正しくパッケージするには、 electron-packager@14.0.4 以上を使用する必要があります。 electron-builder を使用している方は、この Issue を確認して、これらの新しいヘルパーのサポート状況を確認してください。

破壊的変更

  • これは、レンダラープロセスにロードされるネイティブ Node モジュールは N-APIコンテキス対応 であるという将来の要件に対応する作業の、下地づくりとして始めています。 この変更を行う理由は、パフォーマンス高速化、セキュリティ強化、保守作業を軽減するためです。 提案された時系列を含む詳細は、この Issue を読んでください。 この変更は Electron v11 で完了する予定です。

  • net.IncomingMessage ヘッダは、Node.js の動作、特に set-cookie の値や重複するヘッダの処理方法が厳密に一致するように 少し変更 されました。 #17517.

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

  • アプリで app.getPath('log') を使用する前に、新しい関数 app.setAppLogPath() を呼び出して明示的にログパスを設定しなければならないようになりました。 #17841

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

サポートポリシー に基づき、3.x.y は役目を終えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。

App のフィードバックプログラム

テストには引き続き アプリフィードバックプログラム を使用します。 このプログラムに参加するプロジェクトは、そのアプリで Electron ベータ版をテストします。見返りとして、発見した新しいバグは安定版リリースのために優先します。 参加や詳細については、当プログラムに関するブログ記事を確認してください

次回予告

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

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