株式会社renue
renueについて
renueは、AIで業務を実装する会社です
AIコンサルティングから図面AI・広告運用エージェント・コールセンターAIまで、実際に動いているサービスをご覧いただけます。renueが何をしている会社か、まずはサービス一覧からご確認ください。
リファクタリングとは
リファクタリングとは、ソフトウェアの外部的な振る舞い(機能)を変えずに、内部構造を改善するプロセスです。Martin Fowlerの定義・説明では、振る舞いを保つ小さな変更を積み重ねることが中心です。コードの可読性・保守性・拡張性を高め、将来の開発速度を維持するために行います。
AIコーディングツールはコード生成を支援する一方、人が生成コードを十分に理解しないまま変更を重ねると保守が難しくなる場合があります。本稿では、コードやシステムを理解する負担を「理解負債」「認知負債」という言葉で整理します。リファクタリングの重要性はAI時代にこそ増しています。
なぜリファクタリングが必要か
| 問題 | 放置した場合 | 改善方法 |
|---|---|---|
| 重複コード | 修正漏れ、バグの増殖 | 共通関数への抽出 |
| 長すぎる関数 | テスト困難、理解コスト増 | 単一責任の関数に分割 |
| 深いネスト | 認知負荷が高い | 早期リターン、ガード節 |
| 不明確な命名 | 意図が伝わらない | 目的を表す名前に変更 |
| 密結合 | 変更が他箇所に波及 | 依存関係の分離 |
主なリファクタリング手法
1. 関数の抽出(Extract Function)
長い関数の一部を独立した関数に切り出します。例えば「各関数50行以内」をチームの規約として定める方法がありますが、普遍的な上限ではありません。関数の抽出では、まとまりのある処理を切り出し、責任と意図が分かる単位にすることを重視します。
2. 変数・関数名のリネーム
意図不明な名前(data, tmp等)を目的を表す名前に変更。良い命名はコメントの代わりになります。
3. 条件式の簡略化
深いネストをガード節で置き換え、認知負荷を下げます。例えば「ネスト3階層以内」を規約として定め、深い条件分岐を見直す契機にできます。一律の基準ではなく、読みやすさと分岐の意味に応じて判断します。
4. ストラングラーフィグパターン
レガシーシステムの機能を少しずつ新しい実装へ移し、段階的に置き換える手法です(Martin Fowlerの解説)。Claude Code等のAIは変更やテストの作成を支援できますが、対象の切り分け・移行時の接続・回帰テストを人が確認し、段階ごとに進めます。
5. Red-Green-Refactor
TDDの基本サイクル。テストを書いて失敗させ(Red)、最小限の実装(Green)、コードを改善(Refactor)。
AI時代の新課題:理解負債と認知負債
- 理解負債:AIが生成したコードが「なぜそう動くのか」を人間が説明できない状態
- 認知負債:開発者がシステム全体を理解できなくなる問題
GitClearの2025年公表研究の要旨は、2020〜2024年の変更コード2億1,100万行を分析し、コード再利用・リファクタリングに関連づける移動行の割合が低下したと報告しています。これは同社のコード変更分類による観測で、リファクタリング全体の実施率や、AIだけが原因という因果関係を示すものではありません。コード生成の量と併せて、重複・構造改善・保守作業も確認する必要があります。
AIリファクタリングツール比較(2026年版)
| ツール | 特徴 |
|---|---|
| Claude Code | 複数ファイルの参照・編集・コマンド実行でリファクタリングを支援。与えた文脈・参照範囲を確認し、人が差分とテストを検証 |
| GitHub Copilot | インライン補完+エージェントモードでの複数ファイル編集 |
| Cursor | Agentによる複数ファイル編集。ComposerはAgentで使用するモデル名 |
| Sourcegraph | Batch Changesによる複数リポジトリの一括変更・PR管理。Agentic Batch Changesは検索・計画・段階的変更を支援 |
| Moderne | OpenRewriteのレシピを大規模コードベース・複数リポジトリで実行する自動リファクタリング |
AI活用は技術的負債の抑制や保守性の改善につながる場合があるとされています。
renueのリファクタリング実践
デモコード削除プロジェクト
本番システムに蓄積された未使用のデモ機能を、E2Eテストゲートを挟みながらバッチ単位で削除する取り組みです。Playwright MCPによる自動テストを変更の確認に用います。テストは対象範囲の回帰を調べるものであり、全ての不具合の不存在を保証するものではありません。
CI指摘自動修正スキル
リファクタリング後のCI指摘を自動修正するカスタムスキルを開発し、「指摘ゼロまで自動ループ」する仕組みを構築。人手によるレビュー対応工数の削減を目指す仕組みです。自動修正後も差分とテスト結果を確認します。
大規模コントローラーの段階的分離
肥大化したコントローラーを責任単位で分離するリファクタリングを計画的に実施。一度に全てを変更するのではなく、段階的PRで安全に進めています。
ベストプラクティス
- テストを先に書く:現在の振る舞いをテストで担保してからリファクタリング
- 小さなステップで進める:大きな変更を小さなPRに分割
- 機能追加と分離:リファクタリングPRと機能追加PRは別にする
- AIツールにルールを明文化:関数50行以内、ネスト3階層以内等の規約をCLAUDE.mdに定義
- 技術的負債の可視化:CIに欠陥スコアを組み込み定量モニタリング
よくある質問(FAQ)
Q1: リファクタリングはいつ行うべき?
新機能開発の前後に関連コードを少しずつ改善する「ボーイスカウトルール」が基本。大規模リファクタリングは、例えば四半期ごとの計画見直しで必要性を判断し、影響・リスク・開発予定に応じて実施します。四半期に1回を一律の必須頻度とするものではありません。
Q2: AIにリファクタリングを任せて大丈夫?
局所的な改善はAIに任せやすいですが、アーキテクチャレベルの変更は人間の設計意図の確認が必要です。
Q3: 技術的負債を経営層にどう説明する?
「リファクタリングしないと開発速度がX%低下」「バグ修正時間がY倍」という定量データで示します。
