BLOG

Claude Code に1週間任せたら、5年もののレガシーコードが甦った話

「あのコード、誰も触りたくないよね」と社内で言われていた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. テスト整備が最初:リファクタの安全網。これがないと事故る
  2. ホットスポットから攻める:複雑度の高い関数から順に
  3. 1機能ずつ:一気に全部はトラブルの元
  4. 毎日コミット:戻れる状態を維持
  5. 同僚との合意形成:勝手にやると揉める

5年もののレガシーは、Claude Code に1週間任せれば確実に変わります。社内で誰も触らないコードを抱えているなら、ぜひ。

よくある質問

この記事に関連する質問と答えをまとめました。

Q.Claude Code でレガシーコードをどこまで甦らせられますか?
A.
本記事の実例では、5年もののPHP/jQueryコード(2万行)を1週間でモダン化。テスト追加・型注釈・命名統一などが自動的に進みました。完全な書き直しではなく「段階的改善」が現実的です。
Q.リファクタリングの優先順位は?
A.
①テストがない箇所にテスト追加、②型がない箇所に型を追加、③重複コードの解消、④命名の統一、の順が安全です。一気に大改造すると不具合が増えます。
Q.失敗事例はありますか?
A.
あります。「全部書き換えて」と曖昧に依頼するとテストが落ちる・既存機能が壊れるなどの事故が頻発。1ファイル単位、1機能単位で進めるのが安全な進め方です。