用語集
このページでは、Electron の開発で一般的に使用される用語を示します。
ASAR
ASARはAtom Shell Archive Formatの略語です。 asarアーカイブは、複数のファイルを1つにまとめるtar
ライクでシンプルなアーカイブ形式です。 Electron はASARファイルから全体を解凍せずに任意のファイルを読み出すことができます。
ASAR フォーマットは、主に Windows で大量の小さなファイルを読み込むとき (例: アプリケーションの JavaScript 依存関係ツリーを node_modules
から読み込む場合など) のパフォーマンス向上のために作成されました。
コード署名
コード署名とは、アプリ開発者によるパッケージ作成後のコード改ざんを検出するために、コードにデジタル署名を行う処理です。 Windows と macOS はどちらも独自のコード署名を実装しています。 デスクトップアプリケーションの開発者としてコードを一般公衆に頒布する予定の方は、コード署名が重要です。
詳しい情報については、コード署名 のチュートリアルをご参照ください。
コンテキストの分離
コンテキストの分離は Electron によるセキュリティ施策で、プリロードスクリプ トが特権的な Electron や Node.js の API をレンダラープロセスのウェブコンテンツに漏らさないようにします。 コンテキストの分離を有効にすると、プリロードスクリプトから API を公開するには contextBridge
API を使用するしかありません。
詳しい情報については、コンテキストの分離 のチュートリアルをご参照ください。
関連項目: プリロードスクリプト、レンダラープロセス
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 の頭文字をつなげたものです。 MAS へのアプリ登録の詳細は、Mac App Store 登録ガイド を参照してください。
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のヘッダーの場所を手動で指定する必要があります。
詳しい情報については、ネイティブ Node モジュール のチュートリアルをご参照ください。
公証
公証とは、macOS 特有のプロセスで、開発者がコード署名したアプリを アップルのサーバーに送り、自動サービスによって悪意あるコンポーネントの有無を検証してもらうものです。
関連項目: コード署名
OSR
OSR (offscreen rendering、オフスクリーンレンダリング) を使用すると、重いページをバックグラウンドで読み込みんだ後で表示することができます (かなりの高速化が期待されます)。 画面に表示することなくページをレンダリングできます。
詳しい情報については、オフスクリーンレンダリング のチュートリアルをご参照ください。
プリロードスクリプト
プリロードスクリプトは、ウェブコンテンツの読み込み開始前にレンダラープロセス内で実行されるコードです。 これらのスクリプトはレンダラーのコンテキスト内で実行されますが、Node.js の API にアクセスできるようにより多くの権限が与えられています。
process
プロセスは、実行されているプログラムのインスタンスです。 Electronでは、メインプロセスと 1つ以上のレンダラープロセスが動作しており、実際には同時に複数のプログラムが実行されていることになります。
Node.jsとElectronでは、実行中のプロセスは、process
オブジェクトをもっています。 このオブジェクトは現在のプロセスに関する情報を提供し、また制御を行う広域変数です。 広域変数であるため、require() を使用せずにいつでもアクセスできます。
メインプロセス、レンダラープロセスについても参照してください。
レンダラープロセス (renderer process)
レンダラープロセスは、アプリ内のブラウザウインドウです。 メインプロセスと違って複数存在でき、それぞれ別のプロセスとして動作します。 また、非表示にもできます。
sandbox
サンドボックスとは、Chromium から受け継いだセキュリティ機能で、レンダラープロセスを限られた権限に制限するものです。
詳しい情報については、プロセスのサンドボックス化 のチュートリアルをご参照ください。
関連項目: プロセス
Squirrel
Squirrelは、Electronアプリケーションの新しいバージョンに対する自動更新を可能にするオープンソースフレームワークです。 Squirrelについては autoUpdater APIを参照してください。
ユーザーランド
Unixコミュニティーに由来する言葉ですが、"ユーザーランド"や"ユーザースペース"は、Osカーネルの外側で動作するプログラムを意味します。 より最近では、この用語はNodeやnpmコミュニティでは、"Node core"で使用できる機能を、大きな"ユーザー"コミュニティ npmに登録して公開されたパッケージを区別されるために使用されます。
Node.jsのように、Electronはマルチプラットフォームなデスクトップアプリケーション開発に必要なすべての原始的機能を提供するスモールセットAPIを提供することに焦点を当てています。 この設計思想により、Electronは過度にルールに則りすぎたものになることなく、柔軟性を持つツールであり続けることが可能になっています。 ユーザーランドは、"core"で使用できる物の上に追加機能を提供するツールを作成したり共有したりすることを可能にします。