リファクタリング 【refactoring】
概要
リファクタリング(refactoring)とは、ソフトウェア開発で、プログラムの動作や振る舞いを変えることなく、内部の設計や構造を見直し、コードを書き換えたり書き直したりすること。保守性を向上させ将来な開発効率を向上させるために行われる。解説 規模の大きなプログラムを長期間に渡って開発し続けていると、急な仕様変更や機能追加でその場しのぎの継ぎ接ぎが行われた箇所や、柔軟性や拡張性に乏しい設計や構造、無駄な重複、意図の読み取りにくい難解・煩雑な箇所が増えてくる。
そのような場合に、そのまま開発を続行するのではなく、一度立ち止まって既存のコードを見直し、開発者にとって理解のしやすい構造や設計に改める作業をリファクタリングという。機能の追加や不具合の改善などは行わず、内部構造の改善に徹し、あくまで外部から見た振る舞いは変えないのが原則である。
リファクタリングによって開発の進捗そのものは変わらないため、一見、工数が増えて工期が遅れるだけの無駄な作業のように感じられるが、内部がひどく混乱したプログラムの場合、そのままコードの追加・修正を続けるよりも、見通しを良くして作業を再開する方が開発効率や速度が向上し、新規コードの品質向上や新たなバグの抑制を期待できる。
リファクタリングによって挙動が変化したり品質が低下することがないよう入念にテストする必要があり、小刻みにテストを実施できる環境作りが重要となる。また、リファクタリングに失敗しても元の状態に戻すことができるよう、バージョン管理システムなどで変更履歴の把握や管理を適切に行う必要がある。
(2024.3.9更新)
「リファクタリング」の関連用語
他の用語辞典による「リファクタリング」の解説 (外部サイト)
資格試験などの「リファクタリング」の出題履歴
▼ ITパスポート試験
【令5 問49】 リファクタリングの説明として、適切なものはどれか。
【令3 問48】 既存のプログラムを、外側から見たソフトウェアの動きを変えずに内部構造を改善する活動として、最も適切なものはどれか。
▼ 基本情報技術者試験
【令7修6 問40】 エクストリームプログラミング(XP)におけるリファクタリングの説明はどれか。
【令7修1 問40】 ソフトウェアのリファクタリングの説明はどれか。
【令6修7 問40】 エクストリームプログラミング(XP)におけるリファクタリングの説明はどれか。
【令6修1 問40】 ソフトウェア開発の活動のうち,アジャイル開発においても重視されているリファクタリングはどれか。
【令5修6 問40】 エクストリームプログラミング(XP)におけるリファクタリングの説明はどれか。
【令2修6 問49】 ソフトウェア開発の活動のうち,アジャイル開発においても重視されているリファクタリングはどれか。
【令1修7 問50】 エクストリームプログラミング(XP)におけるリファクタリングの説明はどれか。
【平30修12 問50】 ソフトウェア開発の活動のうち,アジャイル開発においても重視されているリファクタリングはどれか。
【平29春 問50】 ソフトウェア開発の活動のうち,アジャイル開発においても重視されているリファクタリングはどれか。
【平26春 問50】 ソフトウェア開発の活動のうち,リファクタリングはどれか。