用語集
このページでは、Electron の開発で一般的に使用される用語を示します。
ASAR
ASARはAtom Shell Archive Formatの略語です。 asarアーカイブは、複数のファイルを1つにまとめるtar
ライクでシンプルなアーカイブ形式です。 Electron はASARファイルから全体を解凍せずに任意のファイルを読み出すことができます。
ASAR フォーマットは、主に Windows で大量の小さなファイルを読み込むとき (例: アプリケーションの JavaScript 依存関係ツリーを node_modules
から読み込む場合など) のパフォーマンス向上のために作成されました。
コード署名
コード署名とは、アプリ開発者によるパッケージ作成後のコード改ざんを検出するために、コードにデジタル署名を行う処理です。 Windows と macOS はどちらも独自のコード署名を実装しています。 デスクトップアプリケーションの開発者としてコードを一般公衆に頒布する予定の方は、コード署名が重要です。
For more information, read the Code Signing tutorial.
コンテキストの分離
コンテキストの分離は Electron によるセキュリティ施策で、プリロードスクリプトが特権的な Electron や Node.js の API をレンダラープロセスのウェブコンテンツに漏らさないようにします。 コンテキストの分離を有効にすると、プリロードスクリプトから API を公開するには contextBridge
API を使用するしかありません。
For more information, read the Context Isolation tutorial.
関連項目: プリロードスクリプト、レンダラープロセス
CRT
C ランタイム ライブラリ (CRT, C Run-time Library) は ISO C99 標準ライブラリが組み込まれている C++ 標準ライブラリの一部です。 ネイティブコード開発、ネイティブコードと管理コードの混在した開発、.Netの純粋な管理コードをサポートするCRTを実装するVisual C++ライブラリ
DMG
Apple Disk Image (DMG) はmacOSで使用されるパッケージング形式です。 DMGファイルはインストーラーアプリケーションを配布するために使用されます。
IME
Input Method Editorの略で、日本では「かな漢字変換システム」を指します。 日本のユーザにとっては何を今更という説明になりますが、漢字などキーボード上に存在しない文字や記号を入力するためのツールです。 日本語、中国語、韓国語に限らず、インドの言語などもIMEを使用することでアルファベット(ローマ字)から入力することができます。
IDL
Interface description language、インターフェイス記述言語のことです。 Java、C++、JavaScript などのインターフェース生成に使用できるフォーマットで、関数のシグネチャやデータ型を記述します。
IPC
IPC は Inter-Process Communication、プロセス間通信の略です。 Electron では IPC を、メインプロセスとレンダラープロセスの間でのシリアライズした JSON メッセージの送信に使用します。
メインプロセス、レンダラープロセスについても参照してください。
メインプロセス (main process)
メインプロセスは通常 main.js
というファイル名で配置され、Electron アプリのエントリポイントになります。 これはアプリが開始してから終了するまでを制御します。 また、メニュー、メニューバー、ドック、タスクトレイなどのネイティブ要素の管理も担当します。 メインプロセスは、アプリ内のレンダラプロセスの作成も担います。 完全な Node API を使用できます。
各アプリのメインプロセスファイルは、package.json
の main
プロパティに指定します。 electron .
はここから起動時に実行するファイルを取得します。
Chromium では、このプロセスを "ブラウザプロセス" と呼びます。 レンダラープロセスとの混同を避けるため、Electron では名前を変更しています。
MAS
Apple の Mac App Store の頭文字をつなげたものです。 For details on submitting your app to the MAS, see the Mac App Store Submission Guide.
Mojo
プロセス内またはプロセス間で通信するための IPC システムです。これが重要なのは、Chrome がメモリの圧迫などに応じて作業を別プロセスに分割できるかどうかを判断しているためです。
(参照: https://chromium.googlesource.com/chromium/src/+/main/mojo/README.md )
関連項目: IPC
MSI
Windows では、アプリケーションのインストールと設定のために Windows Installer (別称 Microsoft Installer) サービスが MSI パッケージを使用します。
詳しい情報は Microsoft のドキュメント に記載されています。
ネイティブモジュール (native module)
ネイティブ モジュールはNode.js ではアドオン とも呼ばれ、requireによってNode.jsやElectronへ読み込むことの出来る、C またはC++で書かれたモジュールです。通常のNode.jsモジュールと同様に使用することが出来ます。 主に、Node.jsで実行されているJavaScript と C/C++ のライブラリ間のインタフェースを提供するために使用されます。
Electronは、ネイティブのNodeモジュールをサポートしていますが、システム上にインストールされたNodeとは異なるV8バージョンを使用しているので、ネイティブモジュールでビルドする時、Electronのヘッダーの場所を手動で指定する必要があります。
For more information, read the Native Node Modules tutorial.
公証
公証とは、macOS 特有のプロセスで、開発者がコード署名したアプリをアップルのサーバーに送り、自動サービスによって悪意あるコンポーネントの有無を検証してもらうものです。
関連項目: コード署名
OSR
OSR (offscreen rendering、オフスクリーンレンダリング) を使用すると、重いページをバックグラウンドで読み込みんだ後で表示することができます (かなりの高速化が期待されます)。 画面に表示することなくページをレンダリングできます。
For more information, read the Offscreen Rendering tutorial.
プリロードスクリプト
プリロードスクリプトは、ウェブコンテンツの読み込み開始前にレンダラープロセス内で実行されるコードです。 これらのスクリプトはレンダラーのコンテキスト内で実行されますが、Node.js の API にアクセスできるようにより多くの権限が与えられています。
process
プロセスは、実行されているプログラムのインスタンスです。 Electronでは、メインプロセスと 1つ以上のレンダラープロセスが動作しており、実際には同時に複数のプログラムが実行されていることになります。
Node.jsとElectronでは、実行中のプロセスは、process
オブジェクトをもっています。 このオブジェクトは現在のプロセスに関する情報を提供し、また制御を行う広域変数です。 広域変数であるため、require() を使用せずにいつでもアクセスできます。
メインプロセス、レンダラープロセスについても参照してください。
レンダラープロセス (renderer process)
レンダラープロセスは、アプリ内のブラウザウインドウです。 メインプロセスと違って複数存在でき、それぞれ別のプロセスとして動作します。 また、非表示にもできます。
sandbox
サンドボックスとは、Chromium から受け継いだセキュリティ機能で、レンダラープロセスを限られた権限に制限するものです。
For more information, read the Process Sandboxing tutorial.
関連項目: プロセス
Squirrel
Squirrelは、Electronアプリケーションの新しいバージョンに対する自動更新を可能にするオープンソースフレームワークです。 See the autoUpdater API for info about getting started with Squirrel.
ユーザーランド
Unixコミュニティーに由来する言葉ですが、"ユーザーランド"や"ユーザースペース"は、Osカーネルの外側で動作するプログラムを意味します。 より最近では、この用語はNodeやnpmコミュニティでは、"Node core"で使用できる機能を、大きな"ユーザー"コミュニティ npmに登録して公開されたパッケージを区別されるために使用されます。
Node.jsのように、Electronはマルチプラットフォームなデスクトップアプリケーション開発に必要なすべての原始的機能を提供するスモールセットAPIを提供することに焦点を当てています。 この設計思想により、Electronは過度にルールに則りすぎたものになることなく、柔軟性を持つツールであり続けることが可能になっています。 ユーザーランドは、"core"で使用できる物の上に追加機能を提供するツールを作成したり共有したりすることを可能にします。
ユーティリティプロセス
ユーティリティプロセスは、メインプロセスの子プロセスで、メインプロセスでは実行できないような信頼できないサービスを実行できます。 Chromium はこのプロセスを使用して、ネットワーク I/O、音声/映像処理、デバイス入力などを扱います。 In Electron, you can create this process using UtilityProcess API.
V8
V8 は Google のオープンソース JavaScript エンジンです。 C++ で書かれており、Google Chrome で使用されています。 V8 はスタンドアローンで実行することも、任意の C++ アプリケーションに組み込むこともできます。
Electron は V8 を Chromium の一部としてビルドし、それからNodeをビルドする際に NodeがV8を指すようにします。
V8 のバージョンは必ず Google Chrome のバージョンに対応しています。 例えば Chrome 59 には V8 5.9 が入っており、Chrome 58 には V8 5.8 が入っています。
webview
webview
タグは、Electron アプリに 'ゲスト' コンテンツ (外部のウェブページなど) を埋め込むために使用します。 これらは iframe
に似ていますが、それぞれの webview が別のプロセスで実行されるという点が異なります。 あなたのウェブページとは同じ権限はもっておらず、アプリと埋め込まれたコンテンツのやりとりは非同期的な物になります。 アプリはこれにより埋め込みコンテンツから安全を保たれます。