メインコンテンツへ飛ぶ

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

Apple Silicon ハードウェアが下半期にリリース予定です。 新ハードウェアで Electron アプリを動作させるにはどうすればよいでしょうか?


Electron 11.0.0-beta.1 のリリースに伴い、Electron チームでは Apple が下半期に出荷予定の新 Apple Silicon ハードウェア上で動作する Electron ビルドを頒布しています。 npm install electron@beta で最新のベータ版を入手するか、 releases website から直接ダウンロードできます。

どのように動作するのですか?

Electron 11 では、Intel Mac と Apple Silicon Mac で別々のバージョンの Electron がリリースされます。 これに先立ち、既に darwin-x64mas-x64 の 2 つのアーティファクトがリリースされました。 後者には Mac App Store との互換性があります。 上記のアーティファクトの Apple Silicon に相当する、darwin-arm64mas-arm64 の 2 つのアーティファクトもリリースしています。

必要事項は何ですか?

x64 (Intel Mac) 用 と arm64 (Apple Silicon) 用、2 つのバージョンのアプリを頒布する必要があります。 electron-packagerelectron-rebuildelectron-forge はすでにこの arm64 アーキテクチャターゲットをサポートしていす。 これらのパッケージの最新バージョンを実行している限り、 ターゲットアーキテクチャを arm64に更新すると、アプリが完璧に動作するはずです。

将来的には、 arm64x64 アプリを単一のユニバーサルバイナリにマージできるパッケージをリリースしますが、このバイナリは巨大になるため、おそらくユーザーへのリリースには適していません。

更新: このパッケージは現在 @electron/universal で利用できます。 パッケージ化された x64 と arm64 の 2 つのアプリを、1 つのバイナリへ統合するために使用できます。

潜在的な問題

ネイティブモジュール

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

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

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

どのようにテストするのですか?

現在、Apple Silicon アプリケーションは、このブログ記事を書いている時点では市販されていない Apple Silicon ハードウェア上でしか動作しません。 開発者移行キット をお持ちの場合、そのマシン上でアプリケーションをテストできます。 さもなくば、アプリケーションの動作テストには、製品版の 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 Sillicon の新技術の恩恵を受けられなくなります。
  • パフォーマンスが 大幅に 低下するって言いましたよね?

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

コミュニティの絆とオープンソースの1ヶ月間のお祝いのために私たちに参加してください。


Hacktoberfest と Discord のバナー

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

Electronの Outreach ワーキンググループ は、 公式コミュニティ Discord サーバーの立ち上げを発表することを楽しみにしています!

なぜ新しいDiscordサーバーなのか?

Atom テキスト エディタののバックボーンとして、Electron フレームワークに関するコミュニティでのディスカッションは、Atom の Slack ワークスペースの1チャネルで行われていました。 時間が経ち、2つのプロジェクトが分離していくにつれて、AtomワークスペースとElectronプロジェクトとの関連性は低下し、Slackチャンネルへのメンテナンの参加者も同様に低下しました。

これまで、招待を受け取るのに苦労したと多く人からの報告を受けました。コアメンテナンス担当者のほとんどがチャンネルを頻繁に行なっていたにもかかわらず、より広範なコミュニティをAtom Slackワークスペースにリダイレクトしていました。

この新しいサーバーは、Electron に関する最新情報を得ることができる、コミュニティの中心的な議論の場となるようにしています。

ぜひお越しください!

今のところ、サーバーのメンバーシップは数人のメンターが協力して立ち上げていますが、皆さんとお話しできることをとても楽しみにしています。 助けを求めたり、Electron の最新情報を得たり、他の開発者と交流したりできます。 サーバーにアクセスできる便利な 招待リンク をご用意しました!

Hacktoberfest 2020

大規模で長期間実行されているオープンソースプロジェクトとして、Electronはコミュニティからの貢献なしにはほとんど成功しませんでした。 コードの提出からバグレポート、ドキュメントの変更まで様々です。 だからこそ、Hacktoberfest に参加することで、あらゆるスキルレベルの開発者たちがより広いコミュニティでプロジェクトに参加できるようになることが重要だと考えています。

寄せ集め物

今年は、あなたにすべてを与えるより広いプロジェクトを持っていません。しかし、Electron JavaScript エコシステム全体に貢献する機会に焦点を当てたいと思います。

私達のさまざまリポジトリで hacktoberfest のタグのある課題をみてください。メインの electron/electron リポジトリ、electron/electronjs.org ウェブサイト、electron/fiddle、それに electron-userland/electron-forgeもあります。

P.S. 特に冒険したい方向けに、help wanted タグが付けられた Issue のバックログも用意しています。

つまづきましたか? 一緒にチャットしてみましょう!

さらに、私たちの Discord サーバーのグランドオープンが、今年最大のオープンソースソフトウェアの祭典と重なったのも偶然ではありません。 Hacktoberfest の PR に協力してもらうためにも、#hacktoberfest チャンネルをチェックしてみましょう。 見逃した方のために、招待リンクをこちらに再びご用意しました!

· 読むのにかかる時間 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 にメールでご連絡お願いします。