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+ が必須
配下ドキュメント [必須]
サブモジュール
ファイル