Electron

Electronアプリ開発入門:環境構築・基本コード・ビルド手順

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

開発環境のセットアップ

このセクションでは、Node.js と npm のインストールから、Electron アプリの雛形を作成できる開発ツール(Electron Forge・electron‑builder)まで の一連の手順を解説します。正しく環境構築できれば、以降のコーディングやビルドがスムーズに進む基盤が整います。

Node.js と npm のインストール

Node.js は公式サイトから LTS 版(2024‑06 時点では v20 系列)を取得します。npm は同梱されているので別途インストールは不要です。

※ バージョンは執筆時点の最新 LTS を想定しています。 将来的に Node.js の LTS が変更された場合は、公式サイトで最新版を取得してください。

Electron Forge と electron‑builder の導入

Electron Forge は開発サーバー・パッケージングまでを一本化した CLI、electron‑builder は Windows・macOS・Linux 向けインストーラ生成に特化しています。両者を併用すると 開発フローと配布フローの双方が最適化 されます。

開発支援ツールとして Electron Forge を導入

import コマンドは既存プロジェクトに対しても安全に実行でき、デフォルトのテンプレートが生成されます。

ビルド・コード署名用に electron‑builder を追加

動作確認

npm run start でデフォルトウィンドウが起動すれば、セットアップは完了です。


プロジェクト構成と基本コード

この章では メインプロセス/レンダラープロセスの役割 と、最小構成で動くサンプルコードを紹介します。実際に手元で動かしながら、各ファイルが何を担うか感覚的に掴んでください。

メインプロセスとレンダラープロセスの役割

  • メインプロセスは Node.js のフル API が利用でき、ウィンドウ管理・OS 連携・バックエンド処理を担当します。
  • レンダラープロセスは Chromium 上で動くブラウザ環境で、UI 描画やユーザー操作のハンドリングを行います。

ポイントcontextIsolation がデフォルト true になることが Electron 30(2026 年予定)以降で正式化されるため、安全な API ブリッジは必ず preload.js 経由で提供 してください。

ファイル構成例

以下は 推奨ディレクトリレイアウト と各ファイルの概要です。パスやアイコン参照はプロジェクト固有になるため、実装時に自分の環境に合わせて修正してください。

src/main.js ― ウィンドウ生成と IPC 設定

src/preload.js ― 安全な API ブリッジ

src/renderer.js ― UI ロジック

public/index.html ― 最小 UI

環境依存の注意
- icontray.png のパスは 開発マシンのディレクトリ構成 に合わせて修正してください。
- Windows と macOS ではアイコン形式が異なる(.ico vs .icns)ため、ビルド設定でそれぞれ指定する必要があります。


開発効率向上とデバッグ手法

本節では ライブリロードDevTools の活用方法 を中心に、開発サイクルを高速化するテクニックを紹介します。コードの変更が即座にウィンドウに反映されれば、フィードバックループが短縮され生産性が向上します。

ライブリロード(electron-reload)の設定

electron-reload を導入すると、ソースファイル保存時に自動でウィンドウが再読み込みされます。開発環境だけで有効化 することを推奨します。

続いて src/main.js の冒頭に以下コードを追加してください(インデントはそのままで構いません)。

ポイントprocess.env.NODE_ENV が未設定の場合は npm run start 実行時に自動で development が付与されますが、明示的に .env ファイルで管理すると安心です。

DevTools の活用とコンソールデバッグ

  • 自動起動:開発モードでは win.webContents.openDevTools({ mode: 'detach' }) により、ウィンドウとは別タブで DevTools が表示されます。
  • ソースマップ:TypeScript や Babel を使用する場合は webpack/esbuilddevtool: 'source-map' 設定を忘れずに。これにより、トランスパイル後でも元コードがデバッグ可能です。
  • メインプロセスのログpreload.js 内で console.log した内容は DevTools の「Main」タブに出力されます。レンダラ側と混同しないよう、適切なタグ付け(例: [PRELOAD] message)を推奨します。

プラットフォーム固有機能とセキュリティベストプラクティス

デスクトップアプリは OS のネイティブ API を活用できる一方で、Web 技術由来の脆弱性対策が不可欠です。この章では ファイル操作・通知・Tray といった代表的な機能実装例と、コンテキスト分離・CSP・サンドボックス の設定方法を解説します。

ファイルシステム・通知・Tray の使用例

以下のコードは Windows/macOS/Linux 全てで動作することを想定しています。パスやアイコンはプロジェクトに合わせて変更してください。

コンテキスト分離・CSP・サンドボックスの設定

設定項目 推奨コード例 効果
コンテキスト分離 webPreferences: { contextIsolation: true, preload: … } メインとレンダラを完全に切り離し、XSS 被害を局所化
Content Security Policy (CSP) <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'"> 外部スクリプトやインラインコードの実行を防止
サンドボックス(Electron 30 以降推奨) webPreferences: { sandbox: true } Chromium のサンドボックスでプロセスを隔離し、権限昇格リスク低減

注意点:ネイティブモジュールがサンドボックスに非対応の場合は nodeIntegrationInWorker など代替手段を検討してください。2026 年版では sandbox: true がデフォルトになる可能性があります。


ビルド・配布・自動アップデート

アプリ完成後は electron‑builder を用いて各 OS 向けインストーラを生成し、さらに GitHub Releases と連携した 自動更新機構(electron-updater) を組み込みます。以下の手順で CI/CD パイプラインまで構築できます。

electron‑builder でインストーラー作成

package.json にビルド設定を追記し、npm run dist で出力します。バージョン番号やアプリ ID はプロジェクト固有に変更してください。

パス・アイコン注意build/icon.*.ico, .icns)をプロジェクトルートに置くか、build.icon オプションで明示的に指定してください。

コード署名とパッケージング

コード署名は Windows の SmartScreenmacOS の Gatekeeper を回避するために必須です。以下は一般的な手順です。

  1. 証明書取得(例: DigiCert、Apple Developer)
  2. 環境変数設定(CI 環境でも安全に使用できるように CSC_LINKAPPLE_CERTIFICATE などを設定)

  1. package.json に署名情報を書き込む(環境変数置換を活用)

  1. 再度 npm run dist → 署名済みインストーラーが生成されます。

GitHub Releases と electron‑updater による自動更新

依存パッケージの追加

重要:2026 年版で API が autoUpdater.checkForUpdatesAndNotify() のみになる可能性があります。最新ドキュメントを必ず確認してください。

メインプロセスに更新ロジックを組み込む

GitHub Actions で自動リリース

.github/workflows/release.yml の抜粋です。GH_TOKENrepo 権限を持つ Personal Access Token をシークレットに登録してください。

自動更新の前提条件
- publish セクションが github に設定されていること(package.jsonbuild.publish
- GitHub Release のアセット名が latest.yml 形式で生成されること(electron‑builder が自動で行います)


2026 年版 Electron の主要変更点と互換性チェック

本章では 予測情報に基づく将来の変更点 をまとめ、既存コードをスムーズに移行させるための チェックリスト を提示します。実際に 2026 年版がリリースされたら、公式リリースノートと比較しながら各項目を検証してください。

※ この記事執筆時点では「Electron v28(2026 年リリース予定)」はベータ段階です。正式リリース前に API が変更される可能性があります。

変更点 概要 移行時の注意点
Node.js 20 の標準搭載 ランタイムが Node 20 系列へ更新。fs/promises がデフォルトで有効化。 古い require('fs') はそのままで動作しますが、非推奨 API(例: fs.existsSync の代替)を見直すと将来の互換性が向上します。
Chromium 124 へのアップグレード 新しい Web 標準(CSS Grid Level 2、WebGPU デフォルト有効化)を利用可能に。 WebGPU を使わない場合は特別な設定不要です。旧ブラウザ向けポリフィルは削除してコードサイズを削減できます。
contextIsolation がデフォルト true セキュリティ強化のため、デフォルトでコンテキスト分離が有効になる予定(Electron 30 以降)。 既存プロジェクトは preload.js 経由で提供する API を必ず contextBridge.exposeInMainWorld に置き換えてください。
サンドボックスモードの標準化(macOS・Linux) webPreferences.sandbox: true が推奨設定に。 ネイティブモジュールがサンドボックス非対応の場合は、ビルド時に nodeIntegrationInWorker で代替できるか検証してください。
electron‑updater の API 統一 autoUpdater.checkForUpdates() が Promise を返す形へ統一され、コールバック方式が廃止予定。 既存のコールバック実装は await autoUpdater.checkForUpdatesAndNotify(); に書き換えるだけで対応可能です。

互換性チェックリスト(2026 年版移行前に必ず実施)

  1. Node/Electron バージョン確認
    bash
    npm list electron # 推奨: ^28.0.0 以降
    node -v # 推奨: >=20.x
  2. コンテキスト分離の明示的設定
    webPreferences.contextIsolationtrue であることを確認。false のままだと起動エラーになる可能性があります。
  3. 非推奨 API 探索
  4. 公式リリースノート「Deprecated APIs」セクションから対象関数を抽出し、代替コードに置き換える。
  5. ビルドツールのバージョン更新
    electron-builder@electron-forge/cliv24 以上(2026 年版は最低でも v28 系列が必要になる可能性)であることを確認。
  6. テストと CI の実行
  7. npm test(Jest / Mocha 等)で単体テストを走らせ、プラットフォームごとの GitHub Actions でビルド・テストが成功するか検証。

まとめ:上記チェックリストを自動化スクリプトに組み込むと、将来のメジャーアップデートでも手作業が最小限で済みます。


まとめ

  • 開発環境は Node.js LTS(v20 系列)+ Electron Forge + electron‑builder の組み合わせで構築。
  • プロジェクト構成src/public/ に分離し、preload.js で安全なブリッジを提供することがベストプラクティス。
  • 開発効率向上のために electron-reload と DevTools の活用を推奨。
  • セキュリティ対策はコンテキスト分離、CSP、サンドボックス設定を必ず行う。
  • ビルド・配布は electron‑builder でマルチプラットフォームインストーラを生成し、コード署名と GitHub Releases を組み合わせて自動更新機構(electron-updater)を実装。
  • 2026 年版への移行は公式リリースノートを確認しつつ、上記チェックリストで互換性を検証すればスムーズに対応可能です。

次のステップ:本記事のサンプルコードをローカルで動かしたら、独自機能(例: データベース連携、WebGPU 描画)を追加し、CI/CD パイプラインまで整備してみてください。実践的に経験すれば、プロダクションレベルの Electron アプリ開発が身につきます。


本稿は 2024‑06 時点の情報に基づいています。最新バージョンや API の変更は公式ドキュメントで随時確認してください。

スポンサードリンク

-Electron