electron(ルートモジュール)
基本情報
| 項目 |
内容 |
| モジュールパス |
.(プロジェクトルート) |
| 種別 |
Electron フレームワーク プロジェクトルート |
| ファイル数 |
11(直下の設定ファイル) |
| サブモジュール数 |
8(default_app, docs, lib, npm, script, shell, spec, typings) |
概要
Electron フレームワークのプロジェクトルートモジュールである。Chromium と Node.js を統合してクロスプラットフォームデスクトップアプリケーションを構築するためのフレームワーク全体を包含する。ルートディレクトリには TypeScript コンパイラー設定(ベースおよび用途別の5つの tsconfig)、コードフォーマッター設定(oxfmt)、リンター設定(oxlint、markdownlint-cli2)、パッケージマネージャー設定(Yarn 4)などのプロジェクト横断的な設定ファイルが配置されている。サブモジュールとして、C++ ネイティブ実装(shell)、TypeScript ランタイムライブラリ(lib)、テストスイート(spec)、npm 配布(npm)、ビルドスクリプト(script)、デフォルトアプリケーション(default_app)、ドキュメント(docs)、内部型定義(typings)を持ち、これらが一体となって Electron フレームワークを構成する。
設計パターン
| パターン名 |
適用範囲 |
説明 |
| Inheritance / Extends |
tsconfig.*.json |
ベース tsconfig.json から用途別設定への継承による設定の再利用と差分管理 |
| Shared Configuration |
.oxlintrc.json, .oxfmtrc.json |
ox ツールチェインで ignorePatterns を共通化し、一貫したフォーマット・リントポリシーを適用 |
| Process Isolation |
.oxlintrc.json の overrides |
no-restricted-imports ルールによりブラウザ/レンダラー/共通モジュール間のインポートを制約し、Electron のマルチプロセスアーキテクチャをコンパイル時に保証 |
| Separation of Concerns |
設定ファイル全般 |
フォーマット(oxfmt)、リント(oxlint)、Markdown リント(markdownlint-cli2)、ビルド(tsconfig)、パッケージ管理(yarn)を独立した設定ファイルで管理 |
アーキテクチャ
モジュール構成
electron/
├── default_app/ - Electron デフォルトアプリケーション(ウェルカム画面)
├── docs/ - ドキュメント・スキーマ定義(API 履歴バリデーション)
├── lib/ - TypeScript ランタイムライブラリ(全プロセスタイプの JS 層)
├── npm/ - npm パッケージ配布(バイナリダウンロード・CLI ランチャー)
├── script/ - ビルド・検証ユーティリティ群
├── shell/ - C++ ネイティブ実装基盤(Chromium/Node.js 統合)
├── spec/ - テストスイート(Mocha + Chai BDD テスト)
├── typings/ - 内部 TypeScript 型定義
├── .autofix.markdownlint-cli2.jsonc - Markdown 自動修正設定
├── .lint-roller.json - lint-roller(Markdown TS チェック)設定
├── .markdownlint-cli2.jsonc - Markdown リンター設定
├── .oxfmtrc.json - oxfmt コードフォーマッター設定
├── .oxlintrc.json - oxlint リンター設定
├── .yarnrc.yml - Yarn 4 パッケージマネージャー設定
├── tsconfig.json - TypeScript ベース設定
├── tsconfig.default_app.json - TypeScript 設定(default_app 用)
├── tsconfig.electron.json - TypeScript 設定(Electron コアライブラリ用)
├── tsconfig.script.json - TypeScript 設定(ビルドスクリプト用)
└── tsconfig.spec.json - TypeScript 設定(テスト用)
コンポーネント関連図
Mermaid形式:
graph TB
subgraph _sg0[""設定ファイル""]
tsconfig[tsconfig.json<br/>ベース設定]
tsconfig_electron[tsconfig.electron.json]
tsconfig_default[tsconfig.default_app.json]
tsconfig_script[tsconfig.script.json]
tsconfig_spec[tsconfig.spec.json]
oxlint[.oxlintrc.json<br/>リンター]
oxfmt[.oxfmtrc.json<br/>フォーマッター]
mdlint[.markdownlint-cli2.jsonc<br/>MD リンター]
yarn[.yarnrc.yml<br/>パッケージ管理]
end
subgraph _sg1[""コアモジュール""]
shell[shell/<br/>C++ ネイティブ実装]
lib[lib/<br/>TS ランタイム]
end
subgraph _sg2[""周辺モジュール""]
default_app[default_app/<br/>デフォルト画面]
docs[docs/<br/>ドキュメント]
npm_mod[npm/<br/>バイナリ配布]
script_mod[script/<br/>ビルドスクリプト]
spec_mod[spec/<br/>テストスイート]
typings[typings/<br/>内部型定義]
end
tsconfig --> tsconfig_electron
tsconfig --> tsconfig_default
tsconfig --> tsconfig_script
tsconfig --> tsconfig_spec
tsconfig_electron --> lib
tsconfig_default --> default_app
tsconfig_script --> script_mod
tsconfig_spec --> spec_mod
shell <--> lib
lib --> npm_mod
typings --> lib
typings --> default_app
oxlint --> lib
oxfmt --> lib
mdlint --> docs
機能一覧
| 機能名 |
説明 |
主要ファイル |
| TypeScript ビルド設定 |
用途別の TypeScript コンパイラー設定の階層管理 |
tsconfig.json, tsconfig.electron.json, tsconfig.default_app.json, tsconfig.script.json, tsconfig.spec.json |
| コード品質管理 |
JavaScript / TypeScript のリンティングとフォーマッティング |
.oxlintrc.json, .oxfmtrc.json |
| Markdown 品質管理 |
Markdown ドキュメントのリンティングと自動修正 |
.markdownlint-cli2.jsonc, .autofix.markdownlint-cli2.jsonc, .lint-roller.json |
| パッケージ管理 |
Yarn 4 による依存パッケージの管理とセキュリティ制御 |
.yarnrc.yml |
| プロセス分離の静的保証 |
リンタールールによるメイン/レンダラー/共通モジュール間のインポート制約 |
.oxlintrc.json (overrides) |
| C++ ネイティブ実装 |
Chromium / Node.js 統合のネイティブ実装 |
shell/ |
| TypeScript ランタイム |
全プロセスタイプの JavaScript ランタイム実装 |
lib/ |
| テスト |
Electron API・機能の統合テスト |
spec/ |
| npm 配布 |
Electron バイナリの npm パッケージ配布 |
npm/ |
| デフォルトアプリケーション |
引数なし起動時のウェルカム画面 |
default_app/ |
| ビルドスクリプト |
ビルド・検証・パッケージングユーティリティ |
script/ |
| ドキュメント |
API 履歴スキーマ定義 |
docs/ |
| 内部型定義 |
Electron 内部 API の TypeScript 型定義 |
typings/ |
公開インターフェース
クラス / 関数
| 名前 |
種別 |
用途 |
| tsconfig.json |
設定 |
すべての派生 tsconfig から extends で参照されるベース設定 |
| .oxlintrc.json |
設定 |
oxlint CLI から読み込まれるプロジェクト全体のリントルール定義 |
| .oxfmtrc.json |
設定 |
oxfmt CLI から読み込まれるプロジェクト全体のフォーマットルール定義 |
| .yarnrc.yml |
設定 |
Yarn 4 から読み込まれるパッケージ管理ポリシー定義 |
依存関係
外部依存(このモジュールが依存する外部パッケージ)
| パッケージ |
主要クラス |
用途 |
| oxlint |
- |
JavaScript / TypeScript リンター |
| oxfmt |
- |
JavaScript / TypeScript フォーマッター |
| markdownlint-cli2 |
- |
Markdown リンター |
| @electron/lint-roller |
markdownlint 設定、カスタムルール、markdown-ts-check |
Electron 固有の lint 設定とカスタムルール提供 |
| Yarn 4 (Berry) |
- |
パッケージマネージャー |
| TypeScript |
tsc |
TypeScript コンパイラー |
外部依存(このモジュールが依存する内部モジュール)
| 依存先モジュール |
主要クラス |
用途 |
| lib |
全プロセスモジュール |
tsconfig.electron.json のコンパイル対象、oxlint/oxfmt のフォーマット・リント対象 |
| default_app |
main.ts, default_app.ts |
tsconfig.default_app.json のコンパイル対象 |
| script |
ビルドスクリプト群 |
tsconfig.script.json の型チェック対象 |
| spec |
テストスペック群 |
tsconfig.spec.json のコンパイル対象 |
| typings |
internal-ambient.d.ts, internal-electron.d.ts |
tsconfig の include で参照される内部型定義 |
| shell |
C++ ソースコード |
lib/ と連携する C++ ネイティブ実装(設定ファイルからの直接依存はなし) |
| docs |
api-history.schema.json |
markdownlint でのドキュメント検証対象 |
| npm |
cli.js, index.js, install.js |
パッケージ配布(設定ファイルからの直接依存はなし) |
内部依存(このモジュールに依存するもの)
| 依存元モジュール |
主要ファイル |
用途 |
| lib/ |
全 TypeScript ファイル |
tsconfig.json の paths エイリアス(@electron/internal/*)、oxlint/oxfmt のルール適用 |
| default_app/ |
全 TypeScript ファイル |
tsconfig.json のベース設定継承 |
| script/ |
全 TypeScript ファイル |
tsconfig.json のベース設定継承 |
| spec/ |
全 TypeScript/JavaScript ファイル |
tsconfig.json のベース設定継承 |
| shell/ |
C++ ソースコード |
oxlint の ignorePatterns で除外対象として参照 |
データフロー
Mermaid形式:
flowchart LR
Dev[開発者の<br/>コード変更] --> Fmt[oxfmt<br/>フォーマット]
Fmt --> Lint[oxlint<br/>リント]
Lint --> TSC[tsc<br/>型チェック]
Dev --> MDLint[markdownlint<br/>MD リント]
Dev --> Yarn[yarn<br/>依存管理]
Fmt --> |".oxfmtrc.json"| Code[フォーマット済み<br/>コード]
Lint --> |".oxlintrc.json"| Result[lint 結果]
TSC --> |"tsconfig.*.json"| TsGen[ts-gen/<br/>コンパイル出力]
セキュリティ考慮
| 観点 |
対策状況 |
詳細 |
| プロセス分離 |
あり |
.oxlintrc.json の no-restricted-imports overrides により、browser/renderer/common 間の不正なモジュールインポートをコンパイル時に検出 |
| サプライチェーン攻撃対策 |
あり |
.yarnrc.yml の enableScripts: false(ライフサイクルスクリプト無効化)と npmMinimalAgeGate: 10080(7日間の公開待機) |
| コード品質 |
あり |
.oxlintrc.json の no-eval, no-new-func ルールにより、動的コード実行パターンを禁止 |
| 厳格な型チェック |
あり |
tsconfig.json の strict: true により、null 安全性・暗黙の any 禁止等を全サブ設定に適用 |
技術的負債・既知の問題
| 種別 |
内容 |
影響範囲 |
優先度 |
| 設定重複 |
.oxlintrc.json と .oxfmtrc.json の ignorePatterns が部分的に重複しており、メンテナンス時に不整合が生じるリスクがある |
設定ファイル 2 件 |
低 |
| JSON with Comments |
tsconfig.json に末尾カンマ(trailing comma)が含まれており、厳密な JSON パーサーではエラーになる(TypeScript コンパイラーは許容する) |
tsconfig.json |
低 |
| experimentalDecorators |
tsconfig.json で experimentalDecorators: true が有効化されているが、TC39 標準のデコレータとの将来的な互換性に注意が必要 |
TypeScript ビルド全般 |
低 |
拡張ポイント
| 変更内容 |
修正対象ファイル |
手順・注意点 |
| 新しい TypeScript ビルドターゲット追加 |
新規 tsconfig.*.json |
1. tsconfig.json を extends する新規ファイル作成 2. rootDir と include を指定 3. ビルドスクリプトに追加 |
| 新しい lint ルール追加 |
.oxlintrc.json |
rules セクションにルールを追加。overrides でファイルパターン別の調整が必要な場合は overrides にも追加 |
| 新しいプロセスタイプのモジュール追加 |
.oxlintrc.json, lib/ |
1. lib/ に新ディレクトリ作成 2. .oxlintrc.json の overrides に no-restricted-imports 設定を追加 |
| Markdown 許可 HTML 要素の追加 |
.markdownlint-cli2.jsonc |
config.no-inline-html.allowed_elements 配列に要素を追加 |
| パッケージ依存の workaround 追加 |
.yarnrc.yml |
packageExtensions に対象パッケージの依存補完を追加 |
注意点・特記事項
- 設計上の制約: tsconfig.json がすべての派生設定のベースとなるため、ベース設定の変更はプロジェクト全体に波及する。特に
paths(@electron/internal/*, @node/*)はビルドシステムと密接に関連しており、変更時は GN ビルドシステム側の webpack 設定との整合性も確認が必要
- パフォーマンス: tsconfig.script.json では
skipLibCheck: true で型定義チェックをスキップしており、スクリプトの型チェック速度を優先している。他の tsconfig では skipLibCheck を使用していないため、型定義の問題はそちらで検出される
- 互換性: Yarn 4(Berry)を使用しており、Yarn 1(Classic)との互換性はない。
.yarnrc.yml の yarnPath で固定された Yarn 4.12.0 がプロジェクト全体で使用される
配下ドキュメント
サブモジュール
ファイル