基本情報技術者 2018年 春期 午前(科目A) 問50
問題文
エクストリームプログラミング(XP: eXtreme Programming)のプラクティスのうち、プログラム開発において、相互に役割を交替し、チェックし合うことによって、コミュニケーションを円滑にし、プログラムの品質向上を図るものはどれか。
選択肢
ア:計画ゲーム
イ:コーディング標準
ウ:テスト駆動開発
エ:ペアプログラミング(正解)
🔒 解説は解答すると表示されます
ペアプログラミング【午前解説】
正解の理由
設問のキーワード「相互に役割を交替し、チェックし合う」は、ペアプログラミングの特徴を直接表しています。ペアプログラミングでは2人が「ドライバー(コードを入力する人)」と「ナビゲータ(設計、レビュー、次の手順を考える人)」を分担し、定期的に役割を交替します。これにより即時のレビューが行われバグが早期に発見され、知識共有とコミュニケーションも促進されます。したがって選択肢の中ではペアプログラミングが最も適切です。
解法ステップ
- 設問文を丁寧に読む:「相互に役割を交替」「チェックし合う」などのキーワードを抽出する。
- 各選択肢をXPのプラクティスの定義と照らし合わせる(計画ゲーム=計画、コーディング標準=規約、TDD=テスト先行、ペアプログラミング=共同作業)。
- 「役割の交替」や「互いにチェックする」という記述と一致するものを選ぶ。
- 余裕があれば他選択肢の定義も確認して消去法で確信を強める。
選択肢別の誤答解説
- ア: 計画ゲーム
計画ゲームはXPのイテレーション計画やリリース計画を行うプラクティスで、役割交替やリアルタイムのコードチェックを示すものではありません。 - イ: コーディング標準
コーディング標準はコードの書き方やスタイルを統一するための規約であり、相互の役割交替やペアでのチェックを主題としません。 - ウ: テスト駆動開発
TDDは「テストを先に書き、テストを通すコードを書く」開発手法で、テスト中心の開発サイクルが特徴ですが、役割を交替して互いにチェックする行為そのものを定義するものではありません。 - エ: ペアプログラミング
エが正解です。ペアプログラミングは2人で交替しながらコーディングとレビューを行い、設問の記述と一致します。
よくある誤解
- ペアプログラミングは単に「2人で同時にタイピングすること」だと誤解されがちですが、本質は役割分担と交替によるレビューと意思決定の共有です。
- 「テスト駆動開発(TDD)」と混同しやすいですが、TDDはテストを先に書く開発手法であり、役割の交替やリアルタイムの相互レビューを必須としません。
- 「生産性が下がる」と考える人がいますが、短期的には手戻りが減らない場面もありますが、長期的にはバグ削減と知識伝播で効率向上します。
補足コラム
- ペアプログラミングのメリットにはバグの早期発見、知識の共有、設計の質向上、チーム間のコミュニケーション改善が含まれます。
- デメリットはマンパワーの集中(短期的コスト上昇)やペア間の相性・疲労などですが、適切なローテーションや休憩で緩和できます。
- リモート環境ではスクリーン共有やリモートIDE、ペアプログラミング専用のツール(共同編集、音声)を使うことで効果を維持できます。
- XPではペアプログラミングは他のプラクティス(TDD、継続的インテグレーション、リファクタリング等)と組み合わせることで最大効果を発揮します。
FAQ
Q. ペアプログラミングは常に2人で行うべきですか?
A. すべての作業で常時行う必要はありません。複雑な設計やレビューが重要な箇所、知識移転が必要な時に特に有効です。
A. すべての作業で常時行う必要はありません。複雑な設計やレビューが重要な箇所、知識移転が必要な時に特に有効です。
Q. ペアプログラミングで役割交替の目安は?
A. タスクや集中力に応じて短時間(30分〜1時間)ごと、もしくは特定のマイルストーンごとに交替するのが一般的です。
A. タスクや集中力に応じて短時間(30分〜1時間)ごと、もしくは特定のマイルストーンごとに交替するのが一般的です。
Q. ペアプログラミングとコードレビューの違いは?
A. ペアプログラミングはリアルタイムの共同作業と即時レビュー、コードレビューは作業後の非同期レビューです。双方を併用するとさらに品質が向上します。
A. ペアプログラミングはリアルタイムの共同作業と即時レビュー、コードレビューは作業後の非同期レビューです。双方を併用するとさらに品質が向上します。
関連キーワード: アジャイル開発、XP、ペアプログラミング、ドライバー/ナビゲータ、テスト駆動開発、コーディング標準、計画ゲーム、コードレビュー、継続的インテグレーション、品質保証

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

