リファクタリングとは?りふぁくたりんぐ
リファクタリングとは、プログラムの外部から見た振る舞いを変えずに、内部構造だけを整理して保守性と可読性を高める作業。重複コードの共通化、意図が読み取れる名前への変更、長い関数の分割などを、回帰テストで振る舞いが変わっていないことを確認しながら小刻みに進める。機能追加や性能改善とは目的が異なり、利用者から見える仕様は1つも変わらない。
最終更新:2026-10-06
この語が出る過去問を解く →背景
動いているコードは触るなというのが長く常識で、結果として保守のたびに継ぎ足しが積み上がり、数年後には小さな変更にも不釣り合いな工数と障害リスクが乗るようになった。テストで振る舞いを固定できるなら、内部を継続的に整理するほうが生涯コストは下がるという考え方が定着した。PMにとっては、外から成果が見えない作業に工数を割く判断であり、なぜ必要かをスポンサへ説明できるかどうかが論点になる。
具体例
マーティン・ファウラーが1999年の著書『リファクタリング』で体系化し、IntelliJ IDEAやEclipseは名前の変更やメソッド抽出を自動で行う機能を標準で備えている。実務では、同じロジックが3か所に散っていたものを共通メソッドへ抽出し、既存テストがすべて通ることを確認する。
試験での引っ掛け
機能追加・仕様変更・性能改善を目的とする修正はリファクタリングではない。「外部から見た振る舞いを変えない」ことが定義の核。またテストが無い状態で内部構造を変える作業もリファクタリングとは言えず、先にテストを用意するのが前提になる。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成28年度 春期 プロジェクトマネージャ試験 午前Ⅱ 問19(IPA)解説で登場
XP(eXtreme Programming)のプラクティスの一つに取り入れられているものはどれか。
正解:ペアプログラミング
要点:XPの代表的プラクティスはペアプログラミングやテスト駆動開発
XPのプラクティスにはペアプログラミング、テスト駆動開発、リファクタリング、継続的インテグレーション、シンプルデザインなどがある。ペアプログラミングは2人1組で1台の端末を使い、実装役と確認役を交代しながら進める手法で、欠陥の早期発見と知識共有の効果がある。
出典:平成29年度 春期 プロジェクトマネージャ試験 午前Ⅱ 問18(IPA)
ソフトウェアのリファクタリングの説明はどれか。
正解:外部から見た振る舞いを変更せずに保守性が高いプログラムに書き直す。
要点:リファクタリングは振る舞いを変えず内部構造を改善する作業
リファクタリングは、プログラムの外部から見た振る舞いを変えないまま、内部構造を整理して保守性や可読性を高める作業である。機能追加やバグ修正と同時に行わず、動作が変わっていないことをテストで確認しながら少しずつ進めるのが原則である。
出典:平成30年度 春期 プロジェクトマネージャ試験 午前Ⅱ 問17(IPA)解説で登場
エクストリームプログラミング(XP: eXtreme Programming)における“テスト駆動開発”の特徴はどれか。
正解:プログラムを書く前にテストケースを作成する。
要点:テスト駆動開発は実装より先にテストを書く順序が本質
テスト駆動開発は、実装コードを書く前にまずそのコードが満たすべきテストケースを書き、テストが失敗する状態から始めて、通るように実装し、その後リファクタリングするという流れを繰り返す手法である。テストが仕様の記述を兼ねるため、作るべきものが明確になり、変更時の安全網にもなる。
出典:令和4年度 秋期 プロジェクトマネージャ試験 午前Ⅱ 問16(IPA)解説で登場
XP(Extreme Programming)のプラクティスの一つであるものはどれか。
正解:ペアプログラミング
要点:ペアプログラミングはXPの代表的なプラクティス
XPは少人数でのソフトウェア開発を対象とし、コミュニケーション、シンプルさ、フィードバック、勇気、尊重という価値を掲げて具体的なプラクティスを定めている。ペアプログラミングはその代表で、2人が1台の端末で役割を交代しながらコードを書き、その場でレビューしつつ知識を共有する。テスト駆動開発やリファクタリング、継続的インテグレーションなども同様にXPのプラクティスである。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの4 開発技術 > 6. 保守・廃棄 > (1) 保守のタスクに掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。