Agent skill

evaluate-mmi

MMI評価エージェント - Modularity Maturity Indexによるモジュール成熟度評価(Cohesion/Coupling/Independence/Reusability)。/evaluate-mmi [対象パス] で呼び出し。

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/evaluate-mmi

SKILL.md

Modularity Maturity Index (MMI) Evaluator Agent

既存システムのモジュール成熟度を4つの観点から評価し、改善計画を策定するエージェントです。

概要

Modularity Maturity Index (MMI) は、ソフトウェアアーキテクチャのモジュール性を定量的に評価する指標です。

評価軸

評価軸 重み 評価観点
Cohesion(凝集度) 30% 単一責務性、機能の集中度
Coupling(結合度) 30% モジュール間依存、疎結合性
Independence(独立性) 20% デプロイ独立性、変更独立性
Reusability(再利用性) 20% 汎用性、他コンテキストでの活用可能性

MMI計算式

MMI = (0.3 × Cohesion + 0.3 × Coupling + 0.2 × Independence + 0.2 × Reusability) / 5 × 100

成熟度レンジ

スコア 成熟度レベル 説明
80-100 高成熟 マイクロサービス化の準備完了
60-80 中成熟 一部改善でマイクロサービス化可能
40-60 低中成熟 大幅なリファクタリングが必要
0-40 未成熟 モノリス分解の計画策定から

出力先ディレクトリ

評価結果は reports/02_evaluation/ に出力します。 重要: 各ステップ完了時に即座にファイルを出力してください。

reports/02_evaluation/
├── mmi-overview.md        # Step 3完了時
├── mmi-by-module.md       # Step 2完了時(各モジュール評価後)
└── mmi-improvement-plan.md # Step 4完了時

実行プロンプト

あなたはソフトウェアアーキテクチャの評価専門家です。以下の手順でMMI評価を実行してください。

Step 1: モジュール抽出

対象システムからモジュールを特定します。モジュールの粒度は以下を基準に:

  • パッケージ/名前空間単位 - 中規模システム向け
  • クラス/ファイル単位 - 小規模システム向け
  • サービス/コンポーネント単位 - 大規模システム向け
# Serenaツールでモジュール構造を把握
mcp__serena__list_dir で全体構造を確認
mcp__serena__get_symbols_overview で各モジュールの内容を把握

Step 2: 各軸の評価

Cohesion(凝集度)評価

スコア 基準
5 完全単一責務。1つの明確な目的のみ
4 ほぼ単一責務。関連性の高い機能のみ
3 複数責務だが関連性あり
2 複数の無関係な責務が混在
1 責務が不明瞭、雑多な機能の寄せ集め
0 責務の概念なし、スパゲッティコード

評価ポイント:

  • クラス/ファイルの行数(大きすぎないか)
  • メソッド数(多すぎないか)
  • 関連性のない機能の混在
  • 命名の一貫性
# 評価コマンド例
mcp__serena__find_symbol でクラスサイズを確認
Grep で責務の分散を確認

Coupling(結合度)評価

スコア 基準
5 完全独立。外部依存なし
4 最小限の依存。インターフェース経由のみ
3 適度な依存。一方向の依存関係
2 多数の依存。双方向依存あり
1 強結合。循環依存あり
0 密結合。分離不可能

評価ポイント:

  • import/require文の数
  • 外部モジュールへの直接参照
  • 循環依存の有無
  • グローバル状態の使用
# 評価コマンド例
mcp__serena__find_referencing_symbols で依存関係を分析
Grep で import/require をカウント

Independence(独立性)評価

スコア 基準
5 完全独立デプロイ可能
4 ほぼ独立。設定変更のみで分離可能
3 条件付き独立。一部共有リソースあり
2 部分依存。他モジュールとの協調必要
1 強依存。同時デプロイ必須
0 分離不可能。一体化

評価ポイント:

  • 共有データベースの使用
  • 共有ライブラリへの依存
  • 設定ファイルの共有
  • 同期的な呼び出し

Reusability(再利用性)評価

スコア 基準
5 汎用ライブラリとして利用可能
4 他プロジェクトで再利用可能
3 同プロジェクト内で再利用可能
2 限定的な再利用のみ可能
1 再利用困難。ハードコード多数
0 再利用不可能

評価ポイント:

  • ハードコードされた値
  • 環境依存のコード
  • インターフェースの抽象度
  • ドキュメントの有無

Step 3: スコア集計

各モジュールについてスコアを計算:

javascript
function calculateMMI(cohesion, coupling, independence, reusability) {
    return ((0.3 * cohesion + 0.3 * coupling + 0.2 * independence + 0.2 * reusability) / 5) * 100;
}

このステップ完了時に出力:

  • reports/02_evaluation/mmi-by-module.md - 各モジュールの詳細評価
  • reports/02_evaluation/mmi-overview.md - 評価概要サマリー

Step 4: 改善計画策定

MMIスコアに基づき、改善施策を優先度付けして提案:

  1. 即時改善(Quick Wins) - 低コストで効果大
  2. 短期改善(1-3ヶ月) - 計画的なリファクタリング
  3. 中期改善(3-6ヶ月) - アーキテクチャ変更
  4. 長期改善(6ヶ月以上) - 大規模再構築

このステップ完了時に出力: reports/02_evaluation/mmi-improvement-plan.md

出力フォーマット

1. mmi_overview.md

MMI評価概要(エグゼクティブサマリー、スコア分布、軸別平均スコア、主要課題、推奨アクション)

2. mmi_by_module.md

モジュール別MMIスコア(スコア一覧、各モジュール詳細評価、改善提案)

3. mmi_improvement_plan.md

MMI改善計画(改善目標、ロードマップ、施策詳細、依存関係図、モニタリング計画)

評価のベストプラクティス

Do's

  • 客観的な基準でスコアリング
  • 根拠を明記する
  • 改善可能性を考慮
  • ビジネス価値と照らし合わせる

Don'ts

  • 主観的な印象で評価しない
  • 極端なスコア(0や5)を安易につけない
  • 改善不可能な課題にフォーカスしすぎない
  • 技術的負債を過小評価しない

ツール活用

依存関係分析

mcp__serena__find_referencing_symbols を使用

コード複雑度確認

Grepでメソッド数、行数をカウント

循環依存検出

依存グラフを構築し、サイクルを検出

Didn't find tool you were looking for?

Be as detailed as possible for better results