本リストは、spec.md に定義された仕様に基づく残タスクです。
完了済みのPRは削除済み(git履歴で参照可)。
現在の mille check は以下を正常に動作させています:
-
✅ 内部レイヤー依存チェック (
dependency_mode) -
✅ 外部ライブラリ依存チェック (
external_mode) -
✅ メソッド呼び出しチェック (
allow_call_patterns) — 全レイヤーで定義可能 -
✅ Rust / Go / TypeScript / JavaScript / Python / Java / Kotlin / PHP サポート
-
✅
[resolve.typescript]tsconfig.json paths エイリアス解決 -
✅ cargo / npm(WASM) / go install / pip パッケージ配布
-
✅ リリース後のバージョン自動同期(
update-versionジョブ)—mille --versionがリリースタグと一致 -
✅
--format terminal / json / github-actions出力フォーマット切り替え(PR 10) -
✅
[ignore]セクション —paths/test_patterns適用(PR 12) -
✅
mille initコマンド — プロジェクトスキャンしてmille.toml自動生成(PR 11)、必須フィールドexternal_modeの生成漏れ修正済み -
✅
mille analyze— 依存グラフ可視化terminal / json / dot / svg(PR 13) -
✅
[severity]— 違反種別ごとの重大度設定 +--fail-onオプション(PR 14) -
✅
mille report external— 外部ライブラリ依存をレイヤーごとにテーブル/JSON出力(PR 15) -
✅
mille init精度改善 — 異サブプロジェクトの同名ディレクトリ分離、.venvスキャン除外、Python サブモジュールexternal_allowマッチング修正(PR #55) -
✅
mille initGo+TypeScript 対応改善 —go.modからmodule_name自動検出・生成、Go external_allow に完全パス使用、TypeScript サブパス (vitest/config→vitest) のマッチング修正(PR #56) -
✅ Java 言語サポート —
.javaファイルのパース・Internal/External 分類、[resolve.java] module_name設定、Maven/Gradle自動検出、mainレイヤー対応、E2E テスト追加(PR #57) -
✅
mille initJava/Kotlin 対応 — パッケージ宣言ベースのレイヤー検出(depth 不問)、pom.xml/build.gradle からmodule_name自動生成、**/layer/**glob 出力(PR #57) -
✅ Kotlin 言語サポート —
.ktファイルのパース(tree-sitter-kotlin)・[resolve.java]リゾルバー共用、flat/Gradle レイアウト対応、E2E テスト追加 -
✅
mille initPython namespace パッケージ修正 —src/レイアウトでfrom src.domain...を使うプロジェクトでsrcがpackage_namesに自動追加されるよう修正(PR #62) -
✅
mille initPython namespace インポートスキャン修正 —from src.domain.entity import Xがレイヤー内部依存として正しく検出されるよう修正(classify_py_importフルパス返し +resolve_to_known_dirプレフィックス照合)、src/main.py等の浅い階層ファイルがスキップされずレイヤーとして登録されるよう修正(PR #62) -
✅ ネーミング規則チェック (
name_deny/name_targets/name_allow/name_deny_ignore) — レイヤーごとに禁止キーワードを設定し、ファイル名・シンボル名・変数名・コメントに禁止キーワードが含まれる場合にNamingViolationを報告(大文字小文字区別なし・部分一致)。name_allowで false positive を抑制、name_deny_ignoreでグロブパターンにマッチするファイルを除外可能。対応言語: Rust/TypeScript/Python/Go/Java/Kotlin/PHP。severity.naming_violationで重大度設定可(PR #65) -
✅
ParsedNames構造体によるコンパイルタイムガード —Parser::parse_namesの戻り値をParsedNamesに変更し、新しいNameKind追加時に全パーサーでコンパイルエラーが発生するよう保証。PHP/Python に Variable 抽出を追加(PR #68) -
✅ C 言語サポート —
.c/.hファイルの#includeパース、"..."→ Internal /<stdlib>→ Stdlib /<other>→ External 分類、Symbol/Variable/Comment naming 抽出、E2E テスト追加(PR #69) -
✅
name_deny文字列リテラルチェック —NameKind::StringLiteral/NameTarget::StringLiteral追加、全8言語パーサーで文字列リテラル抽出、name_targetsで"string_literal"のオプトアウト可能(PR #71) -
✅
name_deny識別子チェック —NameKind::Identifier/NameTarget::Identifier追加、属性アクセスチェーン(cfg.gcp.bucketのgcp)を全8言語パーサーで抽出、name_targetsで"identifier"のオプトアウト可能(PR #73) -
✅ PHP 言語サポート —
.phpファイルのuse文パース(simple/aliased/grouped/function/const)・Internal/External/Stdlib 分類、[resolve.php] namespace設定、composer.jsonautoload.psr-4自動検出、PHP stdlib クラス(DateTime/PDO/Exception 等)の Stdlib 自動分類 -
✅ PATH 位置引数 — 全サブコマンドに
[PATH]位置引数を追加(デフォルト.)。mille check ./other/projectで任意ディレクトリを検査可能。CommonArgs+Command::common()exhaustive match で新コマンド追加時にコンパイルエラーで PATH 対応を強制(PR #75) -
✅ YAML 言語サポート — naming-only 言語として
.yaml/.ymlファイルのname_denyチェックをサポート。マッピングキー→Symbol、スカラー値→StringLiteral、コメント→Comment として抽出。tree-sitter-yaml 0.6 使用(PR #76) -
✅
mille addコマンド — 既存のmille.tomlにディレクトリをレイヤーとして追加。ターゲットをスキャンして[[layers]]を追記、重複時は--forceで置換。--nameでレイヤー名カスタマイズ可(PR #85)
以下は 設定ファイルにフィールドが存在しても、まだ動作していない 項目です(README に掲載しないよう修正済み): (現在なし)
バズりポイント: PRレビュー画面に ::error file=... が差し込まれるため、mille を使っているリポジトリのPRを見た人が「これ何?」となりやすい。CI を通じたパッシブな口コミ効果が最大。
- CLI に
--formatオプションを追加(terminal/json/github-actions) - GitHub Actions (
::error file=<path>,line=<n>::<msg>) フォーマッターの実装 - JSON フォーマッターの実装
- CI ドキュメントに GitHub Actions 設定例を追記(
docs/github-actions-usage.md)
バズりポイント: 「mille init を叩くだけで始められる」というオンボーディング体験は口コミで広まりやすい。Time-to-first-value の短縮が採用数に直結する。
-
mille initサブコマンドの追加 - 実際のインポート文を解析してレイヤーと依存関係を推論する(トポロジカルソート)
-
--output <path>/--forceフラグのサポート -
mille.toml自動生成(副作用なし純粋関数 + E2E テスト)、external_allowも実インポートから生成 -
--depth Nフラグ + 自動深度検出(深いネスト構造を正しくロールアップ)
バズりポイント: テストファイルの除外は必須ユースケース。これがないと「mille 使えない」という評価につながる。採用の障壁を下げるために優先度高。
-
check_architecture::check()でignore.pathsのグロブパターンを除外 -
check_architecture::check()でテストファイルに対して依存ルールを緩める(test_patterns) - E2E テストの追加
バズりポイント: DOT/SVG グラフはスクリーンショットとして SNS に貼りやすく、「自分のプロジェクトのアーキテクチャが可視化された」という体験は Twitter/X やブログで紹介されやすい。
-
mille analyzeサブコマンドの追加 - DOT 形式での依存グラフ出力 (
--format dot) - レイヤー間エッジの集計(ファイルレベルではなくレイヤーレベル)
- SVG 形式での自己完結グラフ画像出力 (
--format svg) - JSON 形式出力 (
--format json)
バズりポイント: warning/error の区別は段階的導入を可能にし、「既存プロジェクトへの追加しやすさ」を向上させる。採用率に寄与。
-
ViolationDetectorにSeverityConfigを渡すようにする(with_severity()コンストラクタ) -
detect()/detect_external()/detect_call_patterns()で severity を設定値から取得する -
detect_unknown()—ImportCategory::Unknownをunknown_importseverity で報告 -
--fail-on warningオプションで warning でも exit code 1 にする - E2E テストの追加(
tests/e2e_severity.rs)
-
mille report externalサブコマンドの追加 - 外部ライブラリ依存をレイヤーごとにテーブル形式で出力
-
--format json/--output <path>オプション対応
-
infrastructure::parser::java実装 (tree-sitter-java) -
infrastructure::resolver::java実装(pom.xml/build.gradle からmodule_name自動検出) - Java E2E テスト追加(flat/Maven/Gradle レイアウト、main レイヤー)
-
mille initJava/Kotlin 対応(パッケージ宣言ベース、depth 不問) - Kotlin サポート(別 PR)—
infrastructure::parser::kotlin実装 (tree-sitter-kotlin)、flat/Gradle レイアウト、E2E テスト
-
infrastructure::parser::php実装 (tree-sitter-php 0.22) — use 文 (simple/aliased/grouped/function/const)・class/function 名・コメントのパース -
infrastructure::resolver::php実装 — Internal/External/Stdlib 分類、composer.jsonPSR-4 自動検出 -
[resolve.php]設定セクション (namespace/composer_json) の追加 -
ext_to_languageに.php追加(mille initで PHP プロジェクト自動検出) - README.md 更新(言語サポート表・
[resolve.php]リファレンス・Laravel 設定例)
| 順位 | PR | 理由 |
|---|---|---|
| 1 | PR 10 (GitHub Actions) | CI経由のパッシブ口コミ。PRレビュー画面への露出が最大 |
| 2 | PR 11 (mille init) |
オンボーディング摩擦の除去。「試してみた」投稿が増える |
| 3 | PR 12 ([ignore]) |
採用障壁の除去。テストファイル除外は必須 |
| 4 | PR 13 (mille analyze) |
ビジュアルなデモ素材になる。SNS・ブログ投稿向き |
| 5 | PR 14 ([severity]) |
既存プロジェクトへの段階的導入を可能にする |
| 6 | PR 15 (report external) |
高度なユーザー向け |
| 7 | PR 16 (Java/Kotlin) | エンタープライズ層への展開 |