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.ymlyarnPath で固定された Yarn 4.12.0 がプロジェクト全体で使用される

配下ドキュメント

サブモジュール

  • default_app.md - Electron デフォルトアプリケーション(ウェルカム画面)
  • docs.md - ドキュメント・スキーマ定義(API 履歴バリデーション)
  • lib.md - TypeScript ランタイムライブラリ(全プロセスタイプの JS 層)
  • npm.md - npm パッケージ配布(バイナリダウンロード・CLI ランチャー)
  • script.md - ビルド・検証ユーティリティ群
  • shell.md - C++ ネイティブ実装基盤(Chromium / Node.js 統合)
  • spec.md - テストスイート(Mocha + Chai BDD テスト)
  • typings.md - 内部 TypeScript 型定義

ファイル