平成29年度 秋期59マネジメント系

基本情報 平成29年度 秋期 問59:マネジメント系に関する問題

ソフトウェア開発の活動のうち, アジャイル開発においても重視されているリフ ァクタリングはどれか。

  • aソフトウェアの品質を高めるために, 2 人のプログラマが協力して, 一つのプ ログラムをコーディジグする。
  • bソフトウェアの保守性を高めるために, 外部仕様を変更することなく, プログ ラムの内部構造を変更する。正答
  • c動作するソフトウェエアを迅速に開発するために, テストケースを先に設定して から, プログラムをコーディングする。
  • d利用者からのフィードバックを得るために, 提供予定のソフトウェアの試作品 を早期に作成する。
正答:Bソフトウェアの保守性を高めるために, 外部仕様を変更することなく, プログ ラムの内部構造を変更する。

AI解説(初心者・標準・上級)

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは b です。

リファクタリング=「動作は変えずに、中身の構造をきれいにする」作業。

部屋の模様替えで例えると、「部屋にあるモノ(機能)はそのまま」「配置や収納方法だけ整理して使いやすくする」というイメージ。

コードでは、変数名を分かりやすくしたり、長い関数を小分けにしたり、重複を統合したり。外から見ると動作は変わらないけど、保守しやすくなります。

👉 覚え方:リファクタリング=中身の整理整頓(動作はそのまま)

ほかの選択肢:a 2人で書く=ペアプログラミング/c テスト先=TDD/d 試作品=プロトタイピング

標準試験対策の基準レベル

なぜこれが正解か

正解は bリファクタリング(refactoring)は、ソフトウェアの外部仕様(振る舞い)を変えずに、内部構造を改善する活動。可読性・保守性・拡張性の向上が目的で、テストで動作不変を保証しながら進める。Martin Fowlerの著書『Refactoring』(1999)で体系化、XP・アジャイル開発の中核技法として定着。

各選択肢の解説

  • a 2人で1つのコードを協力作成:ペアプログラミング。XP(エクストリームプログラミング)の代表的プラクティス。
  • b 外部仕様変更なし・内部構造変更:リファクタリング → 正解。
  • c テストケース先・後でコーディング:TDD(テスト駆動開発)。Red-Green-Refactorサイクル。
  • d 利用者フィードバック用の試作品:プロトタイピング

覚え方・ひっかけ注意

リファクタリングの大原則は 外側から見て動作が変わらない。これを保証するため、事前に自動テストを十分に整備することが前提条件。テストなしでのリファクタリングは「ただのコード書き直し」で危険。TDD のRefactorステップがリファクタリングそのもの、と理解。

上級誤答論破・背景理論まで深掘り

理論的背景

リファクタリングはMartin Fowlerが1999年に体系化した。「コードの臭い(code smell)」を検出し、対応する「リファクタリング技法」を適用する手順論で、約60〜70の標準技法がカタログ化されている。

主要なコードの臭い

  • 重複コード(Duplicated Code):DRY原則違反。
  • 長すぎるメソッド(Long Method):単一責任原則違反、可読性低下。
  • 巨大クラス(Large Class):責務過多、God Class。
  • 長すぎる引数リスト(Long Parameter List):Introduce Parameter Object等で改善。
  • データクラス(Data Class):振る舞いを持たない貧血モデル。
  • switch文の濫用(Switch Statements):ポリモーフィズムで置換。
  • 散弾銃手術(Shotgun Surgery):1つの変更が複数箇所に波及。

代表的リファクタリング技法

  • Extract Method:長いメソッドから処理を抽出。
  • Inline Method:呼び出しが冗長な場合に展開。
  • Rename Variable/Method:意図を明確化。
  • Extract Class:神クラスを分割。
  • Move Method:責務を持つクラスへ移動。
  • Replace Conditional with Polymorphism:switch→継承。
  • Introduce Parameter Object:引数群をオブジェクト化。

アジャイルでの位置づけ

  • TDD のRefactorフェーズ:Red(失敗テスト)→Green(最小コードで合格)→Refactor(構造改善)の3段サイクル。
  • 継続的リファクタリング:機能追加と並行して常時改善(ボーイスカウト・ルール:来た時より綺麗に)。
  • 技術的負債(technical debt)の返済:Ward Cunninghamの比喩。リファクタリングは利息支払い+元本返済。

IDE/ツール支援

  • IntelliJ IDEA, Eclipse, Visual Studio:抽出・名前変更・移動等の自動リファクタリング機能。
  • SonarQube:コードの臭いを静的解析で自動検出。
  • GitHub Copilot, Cursor:AI支援によるリファクタリング提案。

試験での位置づけ

FE「ソフトウェア開発・アジャイル」分野で頻出。XP(リファクタリング、TDD、ペアプロ、継続的インテグレーション、計画ゲーム等)の主要プラクティスの定義が中心。応用情報・PM・SAではアジャイル開発の運用、スケーリング(SAFe、LeSS、Scrum@Scale)まで踏み込む。

選択肢の発展補足

cのTDDはKent Beckが提唱、リファクタリングと表裏一体の関係。aのペアプログラミングモブプログラミング(3人以上)へ発展、リモートワーク時代はMobsterやVSCode Live Share等のツール支援。dのプロトタイピング画面モックアップ(Figma、Sketch)から動作プロトタイプ(CodePen、StackBlitz)まで段階的に進化、要件定義段階の重要技法。

出典・引用について

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成29年度 秋期59/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

マネジメント系の他の過去問

56
マネジメント系
58
マネジメント系
59
マネジメント系
55
マネジメント系
57
マネジメント系

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビなら基本情報の過去問を解きながら学べます。