# Evaluate Mmi

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

- Skill: `wfukatsu-architecture-redesign-agent/evaluate-mmi` (Agent Skill)
- Install (CLI): `npx skillmds add wfukatsu-architecture-redesign-agent/evaluate-mmi`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wfukatsu-architecture-redesign-agent/evaluate-mmi/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: wfukatsu (https://skillmd.com/u/wfukatsu-architecture-redesign-agent)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/wfukatsu-architecture-redesign-agent/evaluate-mmi

---


# 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 | 未成熟 | モノリス分解の計画策定から |

## 前提条件

以下のファイルが存在すること：

**推奨（/analyze-system の出力）:**
- `reports/01_analysis/system-overview.md` - システム概要
- `reports/01_analysis/ubiquitous-language.md` - ユビキタス言語

**必須:**
- 対象コードベースへのアクセス

## 出力先

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

```
reports/02_evaluation/
├── mmi-overview.md        # Step 3完了時
├── mmi-by-module.md       # Step 3完了時（各モジュール詳細評価）
└── mmi-improvement-plan.md # Step 4完了時
```

## 実行プロンプト

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

### Step 0: 前提条件の検証

**重要**: 実行前に必ず前提条件を確認してください。

```
推奨ファイルの確認:
├── reports/01_analysis/system-overview.md      [推奨] ← /analyze-system
└── reports/01_analysis/ubiquitous-language.md  [推奨] ← /analyze-system

必須:
└── 対象コードベースへのアクセス              [必須]
```

**エラーハンドリング:**
- 推奨ファイルが存在しない場合 → 警告を表示してコードベースから直接分析
- 対象コードベースにアクセスできない場合 → エラー終了

### 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でメソッド数、行数をカウント
```

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

## エラーハンドリング

- コードが解析不能な場合 → 対応言語を確認し、手動解析を提案
- モジュール境界が不明確 → パッケージ構造から推論（精度低下を警告）
- 評価対象が大規模すぎる場合 → サンプリング評価を提案
- 前提となる分析結果がない場合 → `/analyze-system` の先行実行を案内

## 関連スキル

| スキル | 用途 |
|-------|-----|
| `/mmi-analyzer` | MMI自動定量評価（代替/補完） |
| `/ddd-evaluation` | DDD評価（並行実施） |
| `/integrate-evaluations` | 評価統合（次ステップ） |
| `/analyze-system` | システム分析（入力） |

