「あのコード、誰も触りたくないよね」と社内で言われていた5年もののレガシーコード。Claude Code に1週間まるごと向き合わせた結果、見違えるほど綺麗になりました。実際の進め方と詰まったポイントを共有します。
対象のコード
- サービス:当社の自動メール送信モジュール
- 言語:Python 3.7(古い)+ Flask
- 規模:約 12,000行(テスト無しコード)
- 履歴:5年で20人以上の手が入る、コミットログ追跡不能
- テストカバレッジ:12%(明らかに足りない)
- 問題:機能追加のたびに本番障害、修正に常に丸1日
1週間の作戦
Day 1:全体把握とテスト基盤整備
朝、Claude Code を起動し、リポジトリのトップで以下を依頼:
このプロジェクトの構造と主要な処理フローを把握し、
README にまとめてください。
特に「複雑度が高い・テスト不足の箇所」を5つピックアップして。
30分後、Claude Code は構造図・主要モジュール・複雑度ホットスポット5箇所を抽出。実際の認識は「9割は正しい、1割は微妙にずれている」という体感。
その後、Pytest 環境を整えて、リファクタの安全網となる基本テストを200件追加(カバレッジ12% → 38%)。
Day 2-3:複雑度ホットスポット解体
Day 1 で見つけたうち、最悪の関数(500行・cyclomatic複雑度85)を選んで Claude Code に:
この関数を、責務ごとに5〜8個のヘルパー関数に分解してください。
- 単体テストが書きやすい形に
- ドキュメンテーションコメントを追加
- 既存の挙動を絶対に変えない
- 変更前後で同じテストが全部通ること
1時間ぐらいで分解、テストも全部通過。これを5箇所のホットスポットに適用。
Day 4:依存関係の整理
Python 3.7 → 3.11 へのアップグレード作業。Claude Code に:
requirements.txt を 3.11 互換に整理してください。
deprecated な書き方も最新ベストプラクティスに更新。
ただし、メジャーアップデートを伴う変更は別ブランチで提案。
3時間で 3.11 互換版が完成、テストも全通過。
Day 5:パフォーマンス改善
プロファイリングデータを取得して Claude Code に分析依頼:
cProfile の結果を読んで、ボトルネックを3つ抽出。
それぞれに改善案を提案してください。
- アルゴリズム改善
- I/O最適化
- キャッシュ活用
提案を順次実装。結果:本番処理時間が 3.2倍高速化。
Day 6:テストの追加と網羅性
カバレッジを 38% → 85% まで上げるテストを Claude Code に書かせました。境界値・エラーケースまで網羅的に。
Day 7:ドキュメント整備
5日間でリファクタしたコードに対するドキュメント・API リファレンス・運用マニュアルを Claude Code が一気に書き上げ。Markdown で見やすく、実装と完全に整合した形に。
結果
| 項目 | Before | After | 差分 |
|---|---|---|---|
| コード行数 | 12,000 | 8,400 | -30% |
| テストカバレッジ | 12% | 85% | +73pt |
| cyclomatic複雑度(最大) | 85 | 14 | -83% |
| 本番処理時間 | 180ms | 56ms | -69% |
| Python バージョン | 3.7 | 3.11 | 更新 |
| ドキュメント | 無 | 完備 | — |
詰まったポイント
1. Claude Code が「触りたがらない」コード
あまりに非標準的な書き方(グローバル変数で状態管理、循環import等)の箇所では、Claude Code が「リファクタ前にまず構造変更が必要」と提案。1ステップ遠回りになるが、結果的に品質は上がりました。
2. 既存テストの古さ
テストコードも5年もので、書き方が古い・モックが壊れている等の問題が混在。テストの修正・追加・削除を Claude Code と協議しながら進めました。
3. 「動いてるから触らないで」議論
同僚から「動いてるんだから直さないでよ」という声。Claude Code が書いたテストが全部通る状態を見せて、安全性を証明することで合意形成。
1週間で得られた価値
- 修正にかかる時間:1日 → 1時間
- 新機能追加:チームの誰でもできる状態に
- 本番障害:直近2ヶ月でゼロ
- 引き継ぎ可能性:誰がいなくても回るレベル
所感
「人間のリファクタ職人を1週間専属にしたら、月に200万円ぐらいの工数」と考えると、Claude Code(Pro月額20ドル)で同じ成果が出たのは破格。
もちろん「Claude Code に丸投げ」ではなく「指示する人間が必要」だが、その指示する側の生産性が10倍以上になった感覚。レガシーコードを抱えてるチーム、1週間 Claude Code に丸ごと向き合う価値、絶対あります。
これから挑戦する人へ
- テスト整備が最初:リファクタの安全網。これがないと事故る
- ホットスポットから攻める:複雑度の高い関数から順に
- 1機能ずつ:一気に全部はトラブルの元
- 毎日コミット:戻れる状態を維持
- 同僚との合意形成:勝手にやると揉める
5年もののレガシーは、Claude Code に1週間任せれば確実に変わります。社内で誰も触らないコードを抱えているなら、ぜひ。
よくある質問
この記事に関連する質問と答えをまとめました。
