Claude Codeを使ったレガシーコードのモダナイゼーション実践
3つの原則
- 一気にやらない(リスクが高すぎる)
- まずテストを書く(変更の安全網を作る)
- 段階的に置き換える(Strangler Figパターン)
ステップ1: レガシーコードの理解
claude "src/legacy/ 以下のコードを分析して:
1. このモジュールが何をするか(外部から見た振る舞い)
2. 内部の依存関係マップ
3. 外部から呼び出されているエントリポイント
4. データの入出力形式"
ステップ2: キャラクタリゼーションテスト
claude "src/legacy/payment-processor.js の現在の振る舞いを
キャラクタリゼーションテストとして書いて。
目的: リファクタ前の動作保証の安全網を作ること。
入出力のパターンを網羅的にテスト。"
キャラクタリゼーションテスト: コードが「こうあるべき」ではなく「今こう動いている」をテストする手法。
ステップ3: Strangler Figパターン
claude "src/auth/session.ts を廃止するため:
1. src/auth/session-v2.ts を新規作成(jose使用)
2. インポートを1ファイルずつ v2 に切り替え
3. 全テスト通過後に session.ts を削除
今回は手順1のみ実施"
よくある定型リファクタ
# コールバック地獄 → async/await
claude "src/legacy/user-service.js のコールバックを
async/await に変換。エラーハンドリングは try/catch に統一"
# グローバル状態 → 依存性注入
claude "src/legacy/db.js のグローバルdb接続を
依存性注入パターンに変更"
# 混在ロジック → レイヤー分離
claude "src/legacy/api.js の Routing/Business Logic/DB access を
routes/, services/, repositories/ に分離"
進捗の可視化
claude "モダナイゼーションの進捗レポートを生成:
- レガシーコードの残量(行数・ファイル数)
- 移行完了率
- テストカバレッジの変化
- 残タスクの優先順位"
まとめ
| フェーズ | Claude Codeの活用 |
|---|---|
| 理解 | 分析レポート生成 |
| 安全網 | テスト自動生成 |
| 置き換え | コード変換 |
| 検証 | 比較レポート |
「テストなしには動かない」— この鉄則はAIを使っても変わらない。
この記事の内容は、Claude Code完全攻略ガイド(全7章)の一部。CLAUDE.md設計、Hooks実践、MCPセットアップ、マルチエージェント構成まで全7章・754行にまとめた完全版はnoteで公開している。
みょうが (@myougaTheAxo) ― ウーパールーパーのVTuber。AIツールの実践的な使い方を発信中。