0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claudeでレガシーコードを安全にリファクタリングする|AI実務ノート 編集部

Last updated at Posted at 2026-01-03

1. 結論(この記事で得られること)

この記事では、Claudeを使ってレガシーコードを安全にリファクタリングする実務的な手法を解説します。

得られるもの:

  • Claude活用によるリファクタリング工数の50%削減
  • 仕様の暗黙知を明示化するプロンプト戦略
  • テストコードがない状態からの段階的な安全化手順
  • レビュー観点をAIで補強する具体的フロー

私も5年前、「動いてるコードに触るな」と言われて放置されたPHP4時代のコードを、結局3ヶ月かけて書き直した苦い経験があります。今ならClaudeを使えば、その半分の時間で、しかも安全にリファクタできます。

2. 前提(環境・読者層)

想定読者

  • レガシーコードのメンテナンスを任されたエンジニア(2年目〜)
  • テストコードがない or 少ない環境で開発している方
  • リファクタリングのリスクを減らしたい方

必要な環境

  • Claude 3.5 Sonnet(API or Pro版)
  • 対象言語:問わない(本記事ではJavaScript/TypeScript例)
  • Git環境(コミット粒度を細かく刻む前提)

注意事項

  • AIの出力を無批判に適用するのは危険です
  • 必ず差分レビュー・段階的適用・テスト実行を挟みます

3. Before:よくあるつまずきポイント

3-1. 「全部書き直したい衝動」に駆られる

// レガシーコード例
function calc(a, b, c) {
  var result = 0;
  if (c == 1) {
    result = a + b;
  } else if (c == 2) {
    result = a - b;
  } else if (c == 3) {
    result = a * b;
  } else {
    result = a / b;
  }
  return result;
}

「これ全部Classにして型付けて…」と思うけど、どこで使われてるか分からない。grep で100箇所ヒットして絶望。

3-2. 仕様が口頭伝承しかない

  • 「c=0の時は割り算」が仕様なのか、バグなのか分からない
  • 「昔の担当者が辞めた」パターン
  • ドキュメントはExcelの設計書(最終更新2015年)

3-3. テストがない、または形骸化している

// 形骸化したテスト
test('calc test', () => {
  expect(calc(1, 2, 1)).toBe(3); // これしかない
});

c=2,3,4 の挙動が不明。でもこのテストは通ってる。

4. After:基本的な解決パターン

4-1. 段階的リファクタリングの鉄則

① 理解 → AIで仕様を明示化

② 保護 → 既存挙動を網羅するテストを生成

③ 分離 → 小さく分割(1機能=1commit)

④ 置換 → 段階的に新コードへ

⑤ 削除 → 旧コードを安全に除去

4-2. Claudeを使った基本フロー

# プロンプト例1:仕様の明示化
 
以下のコードの仕様を、**暗黙の前提も含めて**ドキュメント化してください。
 
・引数の取りうる値の範囲
・エッジケース(0除算、null、undefinedなど)
・戻り値の型と例外の有無
 
"""
[対象コード]
"""

Claude の出力例:

## 仕様分析
 
**calc関数の責務**
- 2つの数値に対して四則演算を行う
- 第3引数で演算種別を指定(1:加算, 2:減算, 3:乗算, それ以外:除算)
 
**暗黙の仕様(推定)**
- c=0 でも除算が実行される(仕様かバグか要確認)
- b=0 の時の0除算チェックなし(実行時エラーの可能性)
- 型チェックなし(文字列が渡されると意図しない挙動)
 
**リスク箇所**
- `c == 1` は厳密等価ではない("1" でもtrueになる)

これだけで仕様レビュー会議の叩き台ができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?