⚙️ 自動化

コードリファクタリングアシスタント

Cowork でコードを分析・リファクタリングし、コード品質と保守性を向上させます

★★★ 上級 20-30 min 2025年1月11日

概要

コードは時間が経つにつれて肥大化します。Cowork は、コード構造の分析、問題の特定、リファクタリング提案、さらにはコードの直接書き換えまで支援できます。

ユースケース

  • レガシーコードの現代化
  • 重複コードの排除
  • パフォーマンスボトルネックの最適化
  • コードの可読性向上
  • 型アノテーションの追加
  • 大きな関数/コンポーネントの分割

手順

ステップ 1: 分析するコードを指定

~/Projects/myapp/src/ ディレクトリのコードを分析して、リファクタリングが必要な箇所を見つけてください

または特定のファイルを対象に:

~/Projects/myapp/src/utils.js を分析してください - このファイルは大きすぎてリファクタリングが必要です

ステップ 2: 分析レポートを取得

Claude が詳細なコード分析レポートを生成します:

## コード分析レポート: utils.js

### ファイル概要
- コード行数: 1,247 行
- 関数数: 42
- 複雑度評価: 高

### 発見された問題

1. **重複コード** (重要度: 高)
   - formatDate() と formatTime() は 80% 類似したコードを共有
   - validateEmail() と validatePhone() にロジックの重複あり

2. **長すぎる関数** (重要度: 中)
   - processUserData() は 156 行あり、分割を推奨

3. **一貫性のない命名**
   - camelCase と snake_case が混在

4. **型アノテーションの欠如**
   - TypeScript または JSDoc の追加を推奨

### リファクタリング優先度
1. 共通の日付処理関数を抽出
2. processUserData() を分割
3. 命名規則を統一

ステップ 3: リファクタリングを実行

実行するリファクタリングを選択します:

最初のリファクタリングを実行してください:
- 共通の日付処理関数を抽出
- 新しい dateUtils.js ファイルを作成
- 元のファイルの参照を更新

ステップ 4: レビューと確認

Claude がリファクタリング後のコード変更を表示します:

// 新しいファイル: dateUtils.js
+ export function formatDateTime(date, options) {
+   const { format = 'YYYY-MM-DD', includeTime = false } = options;
+   // ...統一された日付処理ロジック
+ }

// 変更: utils.js
- function formatDate(date) {
-   // 156 行の重複コード
- }
+ import { formatDateTime } from './dateUtils';
+ export const formatDate = (date) => formatDateTime(date, { format: 'YYYY-MM-DD' });

確認後、Claude がこれらの変更を適用します。

警告: リファクタリングの前に、コードが Git にコミットされていることを確認してください。Cowork はコードファイルを変更するため、新しいブランチでリファクタリングを行うことをお勧めします。

よくあるリファクタリングパターン

関数の抽出

このコードには非常に長い if-else ブロックがあります。独立した関数に抽出してください

マジックナンバーの排除

コード内のすべてのマジックナンバーを見つけて、意味のある定数に置き換えてください

型の追加

この JavaScript ファイルに TypeScript の型宣言を追加してください

React コンポーネントの最適化

この React コンポーネントを分析してください:
- 不要な再レンダリングはあるか
- 状態管理は適切か
- より小さなコンポーネントに分割できるか

パフォーマンス最適化

このコードのパフォーマンス問題を分析してください。特にループとデータベースクエリ

ヒント: リファクタリング中に既存のテストケースを保持するか、新しいコード用のテストを生成するよう Claude に依頼してください。

サポートされている言語

言語 サポートレベル
JavaScript/TypeScript フルサポート
Python フルサポート
Java フルサポート
Go 良好なサポート
Rust 良好なサポート
C/C++ 良好なサポート
その他 基本サポート

よくある質問

Q: コードを壊してしまいませんか?

A: Claude は最初にすべての変更をレビュー用に表示し、確認後にのみ実行します。まず Git で現在の状態を保存することをお勧めします。

Q: 大規模なプロジェクトを処理できますか?

A: はい!大規模なプロジェクトでは、すべてのファイルを一度に処理するのではなく、モジュールごとに段階的にリファクタリングすることをお勧めします。

Q: リファクタリング後の機能の一貫性は保証されますか?

A: Claude はリファクタリングが等価変換であることを保証するよう努めますが、確認のためリファクタリング後にテストケースを実行することをお勧めします。

実例

「3 年前のプロジェクトを引き継ぎましたが、コードがめちゃくちゃでした。Cowork を使って 2 日かけて段階的にリファクタリングし、コード品質が大幅に向上しました。それ以来、保守がずっと楽になりました。」— フロントエンド開発者