Refactoring
システム開発・個人開発の全工程(企画〜設計〜実装〜運用〜マネタイズ)をカバーするClaude Code用スキル集
npx -y skills add tdyzzsp47/claude-skills --skill refactoringAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
外部から見た振る舞いを変えずにコードの内部構造を改善するスキル。技術的負債の可視化・優先順位付け・計画的返済も含み、開発速度の維持・回復を目的として使う。
SKILL.md
7.3 KB, as published. Nobody here has run it
リファクタリング・技術的負債管理
目的
- コードの可読性・変更容易性を高め、バグの発生率と修正コストを下げる
- 技術的負債を「見えないコスト」から「管理できるバックログ」に変える
- 機能開発のスピードを中長期で維持する
使うタイミング
- ボーイスカウトルール: 今触っているファイルを、来た時より少し綺麗にして去る
- 道ならし: 機能追加の前に「まず変更しやすくしてから変更する」
- 3回ルール: 同じ場所で3回つまずいたら投資対効果が十分と判断する
- 負債返済スプリント: 開発の2割ルールで定期的に計画に組み込む
- 新機能追加・バグ修正と同じPR/コミットに混ぜない
進め方
- テスト確認: 対象コードにテストがあるか確認する([[testing]])。なければ先に特性テスト(characterization test: 現状の振る舞いをそのまま固定するテスト)を書く
- スコープ確定: 今回触る範囲を小さく区切る。「クラス全体」ではなく「このメソッド群」まで絞る
- 現状計測: 変更前の複雑度・重複率・テストカバレッジを記録する
- 小さいステップで実施: 1変更ごとにテスト実行→グリーン確認→コミット。いつでも中断・巻き戻しできる状態を保つ
- 効果計測: 変更後の複雑度・重複率・変更所要時間を計測し比較する
- 負債登録簿を更新: 返済したものをクローズし、発見した新たな負債を登録する
主要リファクタリングカタログ
| 手法 | 適用場面 |
|---|---|
| 名前変更(変数・関数・クラス) | 意図が伝わらない命名 |
| 関数抽出 | 1関数が複数の責務を持つ、20行超の関数 |
| 重複の除去 | 同じロジックが3箇所以上(ただし早すぎる共通化に注意) |
| 早期return | ネストした条件分岐の平坦化 |
| ポリモーフィズム導入 | 型チェックのswitch/if-elseが複数箇所に散在 |
| クラス分割 | 1クラスが複数の責務を持つ(フィールド数・メソッド数が多い) |
技術的負債の管理
負債の種類と対応方針
- 意図的な負債: 期限前に意識して借りる。必ずその場で登録簿に記録してから借りる
- 偶発的な負債: 設計の理解不足や時間的圧力で生まれる。発見時に登録
- 陳腐化による負債: ライブラリ・言語バージョンの古さ。定期棚卸しで検出
優先度の付け方
「利子」= 放置し続けると毎スプリント払い続けるコストで判断する。
- 高: バグ頻発・レビュー時間増大・新人が触れない → 早期に返済
- 中: コードの理解に時間がかかる → 道ならしとして返済
- 低: 美的な問題 → ボーイスカウトルールで少しずつ
返済の組み込み方
- 2割ルール: スプリント容量の20%を技術的負債返済に割り当てる
- 道ならし返済: 機能Aを追加する前に、関連する負債Bを先に返済してからPRを出す(別PR)
- 返済専用スプリント: 利子が大きい高優先度負債が溜まった場合に設ける
大規模リファクタリング
- ビッグバンを避ける: 数週間続くブランチは作らない
- ストラングラーフィグパターン: 新実装と旧実装を並行稼働させ、段階的に新に切り替える
- フィーチャーフラグ: 切り替えをコードで制御し、問題時は即ロールバック
成果物テンプレート
技術的負債登録簿
# 技術的負債登録簿
最終更新: YYYY-MM-DD
| ID | 負債の内容 | 発生理由 | 利子(困りごと) | 返済コスト見積もり | 優先度 | 状態 |
|----|-----------|---------|----------------|------------------|--------|------|
| TD-001 | UserServiceが認証・通知・課金を全て持つ | MVP時の速度優先 | 変更時に影響範囲が読めずレビューに2時間かかる | L(3d) | 高 | 未着手 |
| TD-002 | 注文計算ロジックが3箇所に重複 | 担当者がコードを知らずコピー | バグ修正時に3箇所直さないといけない | S(0.5d) | 中 | 対応中 |
| TD-003 | テストDBのセットアップが手動 | CI構築を後回しにした | 新メンバーのオンボーディングに1日かかる | M(1d) | 中 | 未着手 |
凡例: コスト S=半日以内 / M=1〜2日 / L=3〜5日 / XL=1週間超
チェックリスト
- リファクタリング前にテストがグリーンであることを確認した
- 特性テストを書いた(テストがなかった場合)
- スコープを小さく区切った
- 機能追加・バグ修正と同じコミットに混ぜていない
- ステップごとにテストを実行した
- 変更前後の複雑度・重複率を記録した
- 技術的負債登録簿を更新した(返済完了・新規発見)
アンチパターン
- ビッグバンリファクタリング: 数週間ブランチが返ってこない。コンフリクト地獄になる
- 機能追加との混在PR: レビュアーが振る舞いの変化を見分けられなくなる
- テストなしで着手: 振る舞いを壊したことに気づけない
- 趣味的な書き換え: 動いているコードを好みで書き換えても利子は減らない
- 「いつか直す」と言って記録すらしない: 負債が見えなくなり、利子だけ払い続ける
モデル委譲ガイド
共通原則は [[orchestration]] を参照。
| 役割 | タスク例 |
|---|---|
| 司令塔(メインモデル) | リファクタリング戦略の策定・優先順位の判断・負債登録簿のレビュー・PR分割の決定 |
| Opus相当 | 大規模リファクタリングの設計(ストラングラーフィグ計画・クラス責務の再設計・アーキテクチャ変更を伴う分割) |
| Sonnet相当 | 機械的なリファクタリング実施(名前変更・関数抽出・重複除去)・特性テストの作成・負債登録簿の初期作成 |
| Haiku相当 | 重複コードの検出・複雑度の高い箇所のリストアップ・コードメトリクスの収集 |
関連スキル
- [[testing]] — 特性テスト・リファクタリング後の回帰確認
- [[code-review]] — リファクタリングPRのレビュー観点
- [[architecture-design]] — 大規模リファクタリング時の設計判断
- [[implementation]] — リファクタリングと機能実装の切り分け
- [[git-workflow]] — 小さいステップのコミット戦略・ブランチ管理
- [[performance-optimization]] — パフォーマンス改善目的のリファクタリング
- [[debugging]] — バグの温床となっている技術的負債の特定
- [[orchestration]] — モデル委譲の共通原則
Gives 1 of the 12 instructions most refactoring skills give
Counted across 521 of the 525 authors here whose files we hold, read 2026-08-06
- run tests after each changehere, and in 59 of 521, across 56 files
- write tests before refactoringin 27 of 521, across 24 files
- preserve external behaviorin 26 of 521, across 22 files
- remove dead codein 25 of 521, across 24 files
- make small incremental changesin 20 of 521, across 17 files
- break the implementation into tiny commitsin 18 of 521, across 5 files
- ask the user about alternative optionsin 17 of 521, across 4 files
- create a GitHub issue with the planin 17 of 521, across 4 files
- explore the repository to verify assertionsin 17 of 521, across 4 files
- interview the user about the refactorin 16 of 521, across 3 files
- check the codebase for test coveragein 16 of 521, across 3 files
- refactor one thing at a timein 16 of 521, across 12 files
Said here and by no other author read
- record metrics before and after changes
- register intentional debt before taking it
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.