# Legacy Modernizer

> レガシーコード・大規模システムを止めずに段階的に刷新する戦略を立てるスキル。ストラングラーフィグ・腐敗防止層・characterization test 等のパターンを提案する。「レガシーコードを刷新したい」「段階的にリプレースしたい」「ストラングラーパターンで移行したい」「このモノリスを分割したい」「技術的負債を返済したい」などで発動する。大規模・段階的な移行戦略を扱う。

- Skill: `ynitto/legacy-modernizer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add ynitto/legacy-modernizer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ynitto/legacy-modernizer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ynitto (https://skillmd.com/u/ynitto)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ynitto/legacy-modernizer

---


# legacy-modernizer

「動いているが触りたくない」コードを、リスクを抑えて段階的に刷新する計画を立てる。一気に書き直す（big bang rewrite）誘惑を避け、**常に動く状態を保ちながら**少しずつ置き換える。

> `code-simplifier` は1ファイル〜関数の局所的な整理。本スキルはシステム/モジュール規模の移行戦略と順序付けを扱う。

## 原則

- **big bang を避ける** — 全面書き直しは高リスク。動く現行と並走させ段階移行する
- **安全網を先に張る** — 振る舞いを変えずに済むよう、まず characterization test で現状の挙動を固定する
- **小さく可逆に** — 各ステップは小さく、いつでも戻せる単位にする
- **価値の高い所から** — 変更頻度×リスクの高い部分を優先する（全部を綺麗にしない）

## ワークフロー

### Step 1: 現状を把握し的を絞る

1. 対象コードベースを調査する（規模・依存・テスト有無・変更頻度）。広域調査は `Explore` エージェントの活用も検討
2. 痛みの所在を特定: 頻繁に壊れる/触ると怖い/性能が出ない/拡張できない箇所
3. **全部やろうとしない**。投資対効果の高いターゲットを選ぶ

### Step 2: 安全網を張る

- **characterization test**（現状の振る舞いをそのまま固定するテスト）を先に書く。「正しい」かでなく「今こう動く」を記録する
- **seam（縫い目）** を見つける/作る — テスト可能にするための差し替えポイント（依存注入・インターフェース抽出）
- テスト戦略は `test-driven-development` / `webapp-testing` と連携する

### Step 3: 移行パターンを選ぶ

[references/patterns.md](references/patterns.md) から状況に合うものを選ぶ:

| パターン | 使いどころ |
|----------|-----------|
| ストラングラーフィグ | 新旧を並走させ、機能単位で徐々に新へ振り替える |
| 腐敗防止層 (ACL) | 新コードを旧モデルの汚染から守る変換層 |
| ブランチ・バイ・アブストラクション | 抽象を挟み、裏側を差し替える（長期ブランチを避ける） |
| 並行運用（shadow / 比較実行） | 新旧両方を実行し結果を比較してから切替 |

### Step 4: 段階計画を立てる

- 移行を **小さなインクリメント**に分解する（`decomposition` 連携）。各増分は「リリース可能・可逆」
- 順序付け: 依存の少ない/価値の高いものから。リスクと工数は `estimation` で見積もる
- 切替の制御に **フィーチャーフラグ**、問題時の **ロールバック** 経路を各増分に用意する
- 各ステップに「完了の定義」と「成功の計測」（`observability-designer`）を添える

### Step 5: 文書化

移行ロードマップ（フェーズ・対象・パターン・リスク・ロールバック）を表で出力し、`mermaid-diagrammer` で新旧構成と移行フローを図化する。

## ガードレール

| 制限 | 内容 |
|------|------|
| big bang 抑制 | 全面書き直しは原則勧めない。やむを得ない場合はリスクと代替案を明示する |
| 安全網優先 | テスト無しの大改修を勧めない。characterization test を先行させる |
| 可逆性 | 各ステップにロールバック手段（フラグ・並走）を用意する |
| 範囲の現実性 | 一度に全部を対象にしない。価値の高い部分に絞って段階化する |

