戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2023年 49


問題文

リファクタリングの説明として、適切なものはどれか。

選択肢

ソフトウェアが提供する機能仕様を変えずに、内部構造を改善すること(正解)
ソフトウェアの動作などを解析して、その仕様を明らかにすること
ソフトウェアの不具合を修正し、仕様どおりに動くようにすること
利用者の要望などを基に、ソフトウェアに新しい機能を加える修正をすること

🔒 解説は解答すると表示されます

リファクタリングの説明【ITパスポート 解説】

正解の理由

選択肢のうち、ソフトウェアが提供する機能仕様を変えずに、内部構造を改善することを述べているのが正解です。問題の選択肢である はまさにこれを表しています。
ここでのポイントは「機能(外から見える動作)は変えない」ことです。リファクタリング(refactoring:既存のコードの内部構造を改善する作業)は、動作や仕様を変えずに、可読性や保守性(あとで直したり拡張したりしやすくすること)を高めるために行います。動作の変更は行わないため、ユーザーにとっての機能は同じままです。
※用語補足:内部構造とは、ソースコードの書き方やモジュールの設計、関数の分割など「見えない設計部分」のことです。

解法ステップ

  1. 問題文のキーワードに注目します。「機能仕様を変えずに」「内部構造を改善する」などの表現を探します。
  2. 各選択肢の意味を確認します。似ている用語(解析、修正、追加)との違いを整理します。
  3. 「仕様を変えないで内部を改善する」=リファクタリングであると一致する選択肢を選びます。
  4. 残りの選択肢が別の技術用語(リバースエンジニアリング、バグ修正、機能追加)を表すことを確認して除外します。
このように、キーワードの照合で正解が導けます。

選択肢別の誤答解説

  • : 正しいです。機能は同じままで、コードの構造や設計を改善する作業を指します(リファクタリング)。
  • イ: ソフトウェアの動作などを解析して仕様を明らかにするという説明は、リバースエンジニアリング(reverse engineering:既存ソフトから設計や仕様を逆に取り出す作業)に当たります。リファクタリングとは目的が異なります。
  • ウ: 不具合を修正して仕様どおりに動くようにするのはバグ修正(デバッグ、bug fix)です。これは「動作を正しくする」ことが目的で、リファクタリングとは別作業です。
  • エ: 利用者の要望に基づいて新しい機能を加えるのは機能追加(feature addition)または拡張開発です。これもリファクタリングとは異なり、仕様や外部の動作が変わります。

よくある誤解

  1. 「リファクタリングはバグ修正と同じ」は誤りです。バグ修正は動作を正す作業で、リファクタリングは動作を変えず内部を整理する作業です。
  2. 「リファクタリングで必ず機能や性能が良くなる」は誤りです。可読性や保守性は上がりやすいですが、性能が必ず上がるわけではありません。場合によっては微調整が必要です。
  3. 「リファクタリングは時間の無駄だ」は誤りです。短期的には手間でも、将来の手直しや機能追加が楽になり、長期的にはコスト削減につながります。

補足コラム

  • いつリファクタリングするか:新機能追加前、バグ修正前後、コードが読みにくくなったときなど。リスクを下げるために小さな単位で頻繁に行うのが一般的です。
  • テストの重要性:リファクタリングは「動作を変えない」ことが前提なので、自動テスト(単体テスト unit tests、結合テスト integration tests など)で動作確認できる体制があると安全に行えます。
  • 代表的なリファクタリング手法:関数の抽出(長い処理を小さな関数に分ける)、冗長なコードの削除、変数名や関数名の改善(意味のある名前にする)、重複コードの共通化など。
  • 簡単な例(イメージ)
    before(重複あり)
    def calc_area_circle(r):
        return 3.14 * r * r
    
    def calc_area_sphere_surface(r):
        return 3.14 * r * r * 4
    
    after(共通処理を抽出)
    PI = 3.14
    
    def area_circle(r):
        return PI * r * r
    
    def area_sphere_surface(r):
        return area_circle(r) * 4
    
    動作は変わらず、重複が減り読みやすくなっています(これがリファクタリングの一例です)。

FAQ

Q1. リファクタリングとリライト(全面書き換え)は同じですか?
A1. 異なります。リファクタリングは段階的に内部を改善する作業で、動作を維持します。リライトは設計を根本的に書き直すことで、動作や仕様を変更することもあります。
Q2. テストが無くてもリファクタリングできますか?
A2. できますがリスクが高いです。テストがあれば動作が保たれていることを自動で確認でき、安全に進められます。
Q3. リファクタリングで性能が落ちることはありますか?
A3. 場合によってはあります。可読性や保守性を優先して行った結果、性能に影響することもあるため、性能に関わる部分は注意深く行い、測定(ベンチマーク)を行うと良いです。

関連キーワード: リファクタリング、リバースエンジニアリング、バグ修正、機能追加、コードの可読性、自動テスト、リファクタリング手法
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について