用語集
このページでは、Electron 開発で一般的に使用される用語を定義しています。
ASAR
ASAR は Atom Shell Archive Format の略です。 asar アーカイブは、ファイルを単一ファイルに連結する単純な tar
に似た形式です。Electron は、ファイルを完全に解凍することなく、そこから任意のファイルを読み取ることができます。
ASAR 形式は、主に、大量の小規模ファイルの読み取り(例:node_modules
からアプリケーションの JavaScript 依存関係ツリーを読み込む場合)時の Windows でのパフォーマンス向上を目的として作成されました。
コード署名
コード署名とは、アプリケーション開発者がコードにデジタル署名して、パッケージ化後に改ざんされていないことを保証するプロセスです。Windows と macOS の両方で独自のコード署名バージョンが実装されています。デスクトップアプリケーション開発者として、一般公開用に配布する予定であれば、コードに署名することが重要です。
詳細については、コード署名 チュートリアルを参照してください。
コンテキスト分離
コンテキスト分離は、Electron のセキュリティ対策であり、プリロードスクリプトが、レンダラープロセス内のウェブコンテンツに特権的な Electron または Node.js API を漏洩させないようにします。コンテキスト分離を有効にすると、プリロードスクリプトから API を公開する唯一の方法は、contextBridge
API を通じてです。
詳細については、コンテキスト分離 チュートリアルを参照してください。
CRT
C ランタイムライブラリ (CRT) は、ISO C99 標準ライブラリを組み込んだ C++ 標準ライブラリの一部です。CRT を実装する Visual C++ ライブラリは、ネイティブコード開発と、ネイティブコードとマネージコードの混合、および .NET 開発用の純粋なマネージコードの両方をサポートしています。
DMG
Apple ディスクイメージは、macOS で使用されるパッケージング形式です。DMG ファイルは、アプリケーション「インストーラー」の配布によく使用されます。
IME
入力メソッドエディター。キーボードにない文字や記号を入力できるようにするプログラムです。たとえば、ラテンキーボードのユーザーが中国語、日本語、韓国語、インドの文字を入力できるようにします。
IDL
インターフェース記述言語。Java、C++、JavaScript などでインターフェースを生成するために使用できる形式で、関数シグネチャとデータ型を記述します。
IPC
IPC はプロセス間通信の略です。Electron は IPC を使用して、メインプロセスとレンダラープロセスの間でシリアライズされた JSON メッセージを送信します。
メインプロセス
通常 main.js
という名前のファイルであるメインプロセスは、すべての Electron アプリケーションのエントリポイントです。アプリケーションのライフサイクル(起動から終了まで)を制御します。また、メニュー、メニューバー、ドック、トレイなどのネイティブ要素も管理します。メインプロセスは、アプリケーション内の各新しいレンダラープロセスの作成を担当します。Node API が完全に組み込まれています。
各アプリケーションのメインプロセスファイルは、package.json
の main
プロパティで指定されています。これにより、electron .
は起動時に実行するファイルが分かります。
Chromium では、このプロセスは「ブラウザプロセス」と呼ばれています。レンダラープロセスとの混乱を避けるために、Electron では名前が変更されています。
MAS
Apple の Mac App Store の略語です。アプリを MAS に提出する方法の詳細については、Mac App Store 提出ガイド を参照してください。
Mojo
プロセス内またはプロセス間で通信するための IPC システムであり、Chrome はメモリ圧力などに応じて作業を個別のプロセスに分割するかどうかを決定できるため重要です。
https://chromium.googlesource.com/chromium/src/+/main/mojo/README.md を参照してください。
参照:IPC
MSI
Windows では、MSI パッケージは、Windows インストーラー(Microsoft インストーラーとも呼ばれる)サービスによってアプリケーションのインストールと構成に使用されます。
詳細については、Microsoft のドキュメント を参照してください。
ネイティブモジュール
ネイティブモジュール(Node.js ではアドオン とも呼ばれます)は、C または C++ で記述されたモジュールであり、require()
関数を使用して Node.js または Electron にロードし、通常の Node.js モジュールのように使用できます。主に、Node.js で実行されている JavaScript と C/C++ ライブラリ間のインターフェースを提供するために使用されます。
Electron はネイティブ Node モジュールをサポートしていますが、Electron はシステムにインストールされている Node バイナリとは異なる V8 バージョンを使用する可能性が非常に高いため、ネイティブモジュールのビルド時に Electron のヘッダーの場所を手動で指定する必要があります。
詳細については、ネイティブ Node モジュール チュートリアルを参照してください。
ノータリゼーション
ノータリゼーションは、macOS 固有のプロセスであり、開発者はコードに署名されたアプリケーションを Apple サーバーに送信して、自動化されたサービスを通じて悪意のあるコンポーネントについて検証できます。
参照:コード署名
OSR
OSR(オフスクリーンレンダリング)は、重いページをバックグラウンドでロードしてから表示するために使用できます(はるかに高速になります)。画面に表示せずにページをレンダリングできます。
詳細については、オフスクリーンレンダリング チュートリアルを参照してください。
プリロードスクリプト
プリロードスクリプトには、ウェブコンテンツの読み込みが始まる前にレンダラープロセスで実行されるコードが含まれています。これらのスクリプトはレンダラーコンテキスト内で実行されますが、Node.js API にアクセスできるため、より多くの権限が付与されます。
プロセス
メイン プロセスと 1 つまたは複数の レンダラー プロセスを使用する Electron アプリケーションは、実際には複数のプログラムを同時に実行しています。
Node.js と Electron では、実行中の各プロセスに process
オブジェクトがあります。このオブジェクトはグローバルであり、現在のプロセスに関する情報と、現在のプロセスの制御を提供します。グローバルなので、require()
を使用せずにアプリケーションから常に利用できます。
レンダラープロセス
レンダラープロセスは、アプリケーション内のブラウザウィンドウです。メインプロセスとは異なり、複数存在することができ、それぞれが別々のプロセスで実行されます。非表示にすることもできます。
サンドボックス
サンドボックスは、Chromium から継承されたセキュリティ機能であり、レンダラープロセスの権限を制限されたセットに制限します。
詳細については、プロセスのサンドボックス化 チュートリアルを参照してください。
参照:プロセス
Squirrel
Squirrel は、新しいバージョンがリリースされると Electron アプリケーションを自動的に更新できるようにするオープンソースフレームワークです。Squirrel の使用方法については、autoUpdater API を参照してください。
ユーザーランド
この用語は Unix コミュニティで生まれました。「ユーザーランド」または「ユーザー空間」は、オペレーティングシステムカーネルの外側で実行されるプログラムを指していました。最近では、Node と npm コミュニティで、「Node コア」で利用可能な機能と、はるかに大きな「ユーザー」コミュニティによって npm レジストリに公開されたパッケージを区別するためにこの用語が普及しています。
Node と同様に、Electron は、マルチプラットフォームデスクトップアプリケーションを開発するために必要なすべてのプリミティブを提供する小さな API セットに焦点を当てています。この設計思想により、Electron は、使用方法について過度に指示することなく、柔軟なツールであり続けることができます。「コア」で利用できる機能の上に追加の機能を提供するツールを作成および共有できます。
ユーティリティプロセス
ユーティリティプロセスはメインプロセスの子プロセスであり、メインプロセスで実行できない信頼されていないサービスを実行できます。Chromiumでは、このプロセスを使用してネットワークI/O、オーディオ/ビデオ処理、デバイス入力などを実行します。Electronでは、UtilityProcess APIを使用してこのプロセスを作成できます。
V8
V8はGoogleのオープンソースJavaScriptエンジンです。C++で記述されており、Google Chromeで使用されています。V8はスタンドアロンで実行することも、任意のC++アプリケーションに埋め込むこともできます。
ElectronはChromiumの一部としてV8をビルドし、その後、Nodeのビルド時にそのV8を指し示します。
V8のバージョン番号は常にGoogle Chromeのバージョン番号に対応しています。Chrome 59にはV8 5.9、Chrome 58にはV8 5.8などが含まれています。
webview
webview
タグは、Electronアプリに「ゲスト」コンテンツ(外部ウェブページなど)を埋め込むために使用されます。これらはiframe
と似ていますが、各webviewが別々のプロセスで実行される点が異なります。ウェブページと同じ権限を持たず、アプリと埋め込まれたコンテンツ間のすべてのインタラクションは非同期になります。これにより、埋め込まれたコンテンツからアプリを安全に保護します。