scikit-learn (ルートモジュール)

基本情報 [必須]

項目 内容
モジュールパス .(リポジトリルート)
種別 機械学習ライブラリ(プロジェクトルート)
ファイル数 4(処理対象設定ファイル)
サブモジュール数 11(.circleci, .devcontainer, .github, .spin, asv_benchmarks, benchmarks, build_tools, doc, examples, maint_tools, sklearn)

概要 [必須]

scikit-learn は Python 向けの機械学習・データマイニングライブラリであり、分類、回帰、クラスタリング、次元削減、モデル選択、前処理など機械学習パイプラインの全段階を網羅する包括的なツールキットを提供する。NumPy/SciPy エコシステムの上に構築され、一貫した Estimator API(fit/predict/transform)を基盤としている。プロジェクトルートには、パッケージメタデータ・ビルドシステム設定(pyproject.toml)、開発ビルドスクリプト(Makefile)、コード品質管理(.pre-commit-config.yaml)、CI カバレッジ設定(.codecov.yml)が配置されており、プロジェクト全体の開発インフラストラクチャの中核を形成している。

設計パターン [必須]

パターン名 適用範囲 説明
Declarative Configuration pyproject.toml, .codecov.yml, .pre-commit-config.yaml 宣言的な設定ファイルによるツールチェーン・ビルド・品質管理の一元定義
Convention over Configuration Makefile 簡潔なターゲット名(dev, clean)による開発ワークフローの標準化
Plugin Architecture .pre-commit-config.yaml 外部リポジトリのフックをプラグインとして構成

アーキテクチャ [必須]

モジュール構成

scikit-learn/
├── .codecov.yml                - Codecov カバレッジ設定
├── .pre-commit-config.yaml     - pre-commit フック設定
├── Makefile                    - 開発ビルド用 Makefile
├── pyproject.toml              - プロジェクトメタデータ・ツール設定
├── .circleci/                  - CircleCI 設定
├── .devcontainer/              - Dev Container 設定
├── .github/                    - GitHub Actions/テンプレート
├── .spin/                      - spin CLI カスタムコマンド
├── asv_benchmarks/             - ASV パフォーマンスベンチマーク
├── benchmarks/                 - レガシーベンチマークスクリプト
├── build_tools/                - ビルド・CI ユーティリティ
├── doc/                        - Sphinx ドキュメントシステム
├── examples/                   - 教育用サンプルスクリプト
├── maint_tools/                - メンテナンスツール
└── sklearn/                    - コアライブラリ(機械学習アルゴリズム)

コンポーネント関連図

Mermaid形式:

graph TD
    PT[pyproject.toml] -->|ビルド定義| SK[sklearn/]
    PT -->|ツール設定| PC[.pre-commit-config.yaml]
    MF[Makefile] -->|editable install| SK
    PT -->|ビルドバックエンド| MF
    CI[CI: GitHub Actions / CircleCI] -->|カバレッジ| CC[.codecov.yml]
    CI -->|スクリプト参照| BT[build_tools/]
    DOC[doc/] -->|サンプル参照| EX[examples/]
    PT -->|テスト設定| SK

機能一覧 [必須]

機能名 説明 主要ファイル
プロジェクト定義・依存管理 パッケージメタデータ、ランタイム/オプショナル依存の一元管理 pyproject.toml
ビルドシステム Meson ベースのビルドと editable install ワークフロー pyproject.toml, Makefile
コード品質管理 リンティング、型チェック、フォーマット、スペルチェックの自動化 .pre-commit-config.yaml, pyproject.toml
カバレッジ管理 CI でのコードカバレッジ閾値制御と通知管理 .codecov.yml
テスト設定 pytest オプション、タイムアウト、スレッド安全性制御 pyproject.toml
変更ログ管理 towncrier による構造化されたリリースノート生成 pyproject.toml

公開インターフェース [必須]

クラス / 関数

名前 種別 用途
- - ルートモジュールとして直接公開するクラス/関数はない。公開 API は sklearn/ パッケージが提供

Make ターゲット

ターゲット 説明
dev Meson ビルドによる editable install(開発用)
clean ビルド成果物の削除とアンインストール

依存関係 [必須]

外部依存(このモジュールが依存する外部パッケージ

パッケージ 主要用途 バージョン
numpy 数値計算基盤 >=1.24.1(ランタイム), >=2(ビルド)
scipy 科学計算 >=1.10.0
joblib 並列処理 >=1.4.0
narwhals DataFrame互換ライブラリ >=2.0.1
threadpoolctl スレッドプール制御 >=3.5.0
meson-python ビルドバックエンド >=0.17.1
cython C 拡張コンパイル >=3.1.2
ruff リンティング/フォーマット v0.12.2
mypy 型チェック v1.15.0
cython-lint Cython リント v0.18.0
prettier SCSS/JS フォーマット v2.7.1
codespell スペルチェック v2.4.1
pytest テストフレームワーク >=7.1.2
towncrier 変更ログ管理 >=24.8.0
sphinx ドキュメント生成 >=7.3.7

外部依存(このモジュールが依存する内部モジュール

依存先モジュール 主要ファイル 用途
sklearn sklearn/_min_dependencies.py ruff バージョン同期、依存バージョン管理
build_tools build_tools/codespell_ignore_words.txt codespell 無視単語リスト
doc doc/whats_new/upcoming_changes/ towncrier フラグメント格納
.spin .spin/cmds.py spin CLI カスタムコマンド

内部依存(このモジュールに依存するもの)[最重要]

依存元モジュール 主要ファイル 用途
sklearn/ sklearn/ 全体 pyproject.toml で定義されたビルド設定・依存関係に従ってビルドされる
build_tools/ build_tools/update_environments_and_lock_files.py pyproject.toml の依存情報を参照
.github/ .github/workflows/*.yml CI ワークフローが pyproject.toml のテスト設定を参照
doc/ doc/conf.py ドキュメントビルドが pyproject.toml のメタデータを参照
asv_benchmarks/ asv_benchmarks/asv.conf.json ベンチマーク環境がプロジェクトルートのビルド設定を使用

データフロー [必須]

Mermaid形式:

flowchart LR
    Dev[開発者] --> PC[.pre-commit-config.yaml]
    PC --> Lint[ruff/mypy/cython-lint]
    Lint --> QC[品質チェック結果]

    Dev --> MF[Makefile dev]
    MF --> PIP[pip + meson-python]
    PT[pyproject.toml] --> PIP
    PIP --> Build[sklearn ビルド完了]

    CI[CI] --> Test[pytest]
    PT --> Test
    Test --> Cov[カバレッジアップロード]
    Cov --> CC[.codecov.yml 評価]

セキュリティ考慮 [必須]

観点 対策状況 詳細
サプライチェーン 軽減策あり .pre-commit-config.yaml で全フックの rev(コミットハッシュ相当)を固定。pyproject.toml で依存バージョン下限を指定
ビルド時セキュリティ 標準的 meson-python による標準ビルドプロセス。--no-build-isolation は開発環境のみ
CI シークレット管理 分離 .codecov.yml にトークンは含まれず、CI シークレットで別途管理
コード品質 自動化済み ruff(セキュリティルール含む)、mypy による型安全性チェック

技術的負債・既知の問題 [必須]

種別 内容 影響範囲 優先度
同期管理 ruff バージョンが .pre-commit-config.yaml, pyproject.toml, sklearn/_min_dependencies.py の3箇所で管理されており、更新忘れのリスクがある 開発ツール全体
ハードコード .codecov.yml の after_n_builds: 7 が CI ジョブ数と手動同期が必要 CI/カバレッジ
towncrier バージョン pyproject.toml の towncrier.filename がリリースバージョンごとに手動更新が必要(現在 v1.9.rst) リリース管理
TODO .pre-commit-config.yaml 内に cython-lint の double-quote-cython-strings フック追加の TODO がある コード品質

拡張ポイント [必須]

変更内容 修正対象ファイル 手順・注意点
新しい依存パッケージ追加 pyproject.toml [project.dependencies] または [project.optional-dependencies] に追加。sklearn/_min_dependencies.py とも同期が必要
Python バージョンサポート変更 pyproject.toml requires-python と classifiers を同時に更新
新しい pre-commit フック追加 .pre-commit-config.yaml repos セクションに新リポジトリを追加。rev を固定すること
CI ジョブ数変更 .codecov.yml after_n_builds の値を実際のジョブ数に合わせて更新
新しいリンタールール追加 pyproject.toml [tool.ruff.lint] の extend-select に追加。必要に応じて per-file-ignores も設定
ビルドターゲット追加 Makefile 新しいターゲットを追加し、all ターゲットのヘルプメッセージも更新

注意点・特記事項 [必須]

  • 設計上の制約: pyproject.toml が PEP 621 準拠のため、一部の設定は pyproject.toml に集約できず各ツール独自の設定ファイル(.codecov.yml 等)に分散している
  • パフォーマンス: Makefile の dev ターゲットは --no-build-isolation を使用するため、事前にビルド依存がインストールされている必要がある。初回ビルドは Cython コンパイルにより時間がかかる
  • 互換性: build-system.requires の numpy>=2 はビルド時 ABI 互換性のため。ランタイムでは numpy>=1.24.1 で動作する。Python 3.11+ が必須

配下ドキュメント [必須]

サブモジュール

  • .circleci.md - CircleCI パイプライン設定
  • .devcontainer.md - VS Code Dev Container 開発環境設定
  • .github.md - GitHub Actions ワークフロー・Issue テンプレート
  • .spin.md - spin CLI カスタムコマンド
  • asv_benchmarks.md - ASV パフォーマンスベンチマーク設定
  • build_tools.md - ビルド・CI ユーティリティスクリプト
  • doc.md - Sphinx ドキュメントビルドシステム
  • examples.md - 教育用サンプルスクリプト集(約280ファイル)
  • maint_tools.md - メンテナンスツール

ファイル