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

Maintainer Summit 2022 概要

·5 分で読めます

先月、Electron のメンテナーグループがカナダのバンクーバーに集まり、2023 年以降のプロジェクトの方向性について話し合いました。会議室で 4 日間にわたり、コアメンテナーと招待された協力者が、新しいイニシアチブ、メンテナンスの課題、プロジェクトの全体的な健全性について議論しました。

集合写真!@groundwater によって撮影されました。

今後も、チームは Chromium の定期的な迅速なアップグレード、バグの修正、Electron のセキュリティとパフォーマンスの向上に引き続き全力で取り組んでいきます。また、コミュニティと共有したいエキサイティングなプロジェクトもいくつか進行中です!

革新的な新しい API

Electron プロジェクトにおける合意が必要な主要な API 提案は、Request for Comments (RFC) プロセスを経て、API ワーキンググループのメンバーによってレビューされます。

今年は、Electron アプリの機能に新しい次元を解き放つ可能性を秘めた、2 つの主要な提案を推進してきました。これらの提案は非常に実験的ですが、期待できることを少しだけご紹介します!

新しいネイティブアドオンの機能強化 (C API)

この提案は、Electron の内部リソースとインターフェイスする独自のネイティブ Node アドオンを、Node 自身の Node-API と同様に、アプリ開発者が記述できるようにする、Electron C API の新しいレイヤーを概説します。提案された新しい API の詳細については、こちらをご覧ください。

例: Chromium リソースによるアプリの強化

多くの Electron アプリは、バニラ (未変更) の Electron ではアクセスできない Chromium の内部構造と直接やり取りするために、独自のフォークを維持しています。これらのリソースを C API レイヤーで公開することで、このコードは Electron と並んでネイティブモジュールとして存在できるため、アプリ開発者のメンテナンス負担を軽減できる可能性があります。

Chromium の UI レイヤーの公開 (Views API)

内部的には、ツールバー、タブ、ボタンなど、Chrome のユーザーインターフェイス (UI) のウェブサイト以外の部分は、Views と呼ばれるフレームワークで構築されています。Views API の提案では、このフレームワークの一部を Electron の JavaScript クラスとして導入し、最終的には開発者が Electron アプリケーションに非 Web UI 要素を作成できるようにすることを目標としています。これにより、アプリが Web コンテンツをハックする必要がなくなります。

この新しい API セットを可能にするための基盤が現在進行中です。近い将来に期待できる最初の変更点をいくつかご紹介します。

例: WebContentsView を使用したウィンドウモデルのリファクタリング

最初に計画されている変更点は、Chrome の WebContentsView を Electron の API サーフェスに公開することです。これは、既存の BrowserView API (名前にもかかわらず、Chromium Views とは関係のない Electron 固有のコードです) の後継となります。WebContentsView が公開されることで、Web コンテンツを表示できる再利用可能な View オブジェクトが提供され、BrowserWindow クラスを純粋な JavaScript にして、さらにコードの複雑さを解消する道が開かれます。

この変更によってアプリ開発者に多くの新機能が提供されるわけではありませんが、これは内部の多くのコードを削除する大規模なリファクタリングであり、Chromium のアップグレードを簡素化し、メジャーバージョン間で新しいバグが発生するリスクを軽減します。

アプリで BrowserView を使用している Electron 開発者の皆様: ご心配なく!既存の BrowserView クラスを WebContentsView のシムにして、新しい API への移行時にバッファを提供することを計画しています。

参照: electron/electron#35658

例: ScrollView を使用したスクロール可能な Web コンテンツ

Stack の仲間たちが、Chromium ScrollView コンポーネントを Electron の API に公開するイニシアチブを推進してきました。この新しい API を使用すると、すべての子 View コンポーネントを水平または垂直にスクロール可能にすることができます。

この新しい API は単一の小さな機能を実現するものですが、チームの最終的な目標は、より複雑な非 HTML インターフェイスを構築するためのツールキットとして使用できる、ユーティリティ View コンポーネントのセットを構築することです。

参加する

これらの API 提案のいずれかに興味がある Electron アプリ開発者ですか?RFC をさらに受け入れる準備はまだ整っていませんが、今後の詳細についてはご期待ください!

Electron Forge v6 の安定版リリース

フレームワークの開始以来、Electron のビルドツールエコシステムは、主にコミュニティ主導であり、多くの小さな単目的パッケージ (例: electron-winstaller、electron-packager、electron-notarize、electron-osx-sign) で構成されてきました。これらのツールはうまく機能しますが、ユーザーが機能するビルドパイプラインを組み立てるのは大変です。

Electron 開発者にとってより使いやすいエクスペリエンスを構築するために、この既存のツールをすべて単一のインターフェイスにまとめたオールインワンソリューションである Electron Forge を構築しました。Forge は 2017 年から開発されてきましたが、このプロジェクトはここ数年間休眠状態でした。しかし、Electron のビルドツールの状態に関するコミュニティからのフィードバックを受けて、Forge の次世代安定版メジャーバージョンのリリースに懸命に取り組んでいます。

Electron Forge 6 には、ファーストクラスの TypeScript および Webpack サポート、および開発者が独自のプラグインやインストーラーを作成できる拡張可能な API が付属しています。

ご期待ください: 近日発表

Forgeを使ったプロジェクトの構築や、Forgeの拡張可能なサードパーティAPIを使ったテンプレートやプラグインの構築に興味がある方は、今月中に予定されているForge v6の安定版リリースに関する公式発表にご期待ください!

次は?

上記の他に、チームは常に、アプリ開発者とエンドユーザーにとってElectronのエクスペリエンスを向上させるための、多くの実験的なプロジェクトを検討しています。 アップデーターツール、APIレビュープロセス、ドキュメントの強化も、私たちが実験していることの一部です。近い将来、さらに多くのニュースをお届けできることを願っています!