システムアーキテクト 2017年 午前2 問10
問題文
ハードウェアの経験が豊富なプログラマAと、経験の少ないプログラマBがペアプログラミングの手法を利用して組込みシステムの開発を進める。ペアプログラミングによる開発の進め方として、適切なものはどれか。
選択肢
ア:Aがデバイスドライバの開発を担当し、Bがアプリケーションの開発を担当する。
イ:Aがプロジェクトマネージャとして、プロジェクトの調整役になる。
ウ:AとBがエディタの画面を共有し、Bが記述したコードに対してAが助言する。(正解)
エ:ハードウェアとソフトウェアの切分けをシミユレーションで検証してから、AとBとで分担して開発する。
🔒 解説は解答すると表示されます
ペアプログラミング【午前2解説】
正解の理由
ペアプログラミングは二人が一台の作業環境を共有して、片方が「ドライバ(コードを書く役)」を担当し、もう片方が「ナビゲータ(設計や検討、レビューを行う役)」として即時に助言・チェックを行いながら開発を進める協調開発手法です。選択肢の中でこの定義に合致するのは、エディタの画面を共有してBが記述したコードに対してAが助言することを示す ウ です。組込み開発ではハードウェア知識のあるAがナビゲータとして助言し、Bのコーディングを支援するという形が典型的で、知識伝承と品質向上の両方に寄与します。
解法ステップ
- ペアプログラミングの定義(同一作業環境の共有、ドライバとナビゲータ)を思い出す。
- 各選択肢が「二人で同じ作業環境を共有して共同でコードを書き進める」ことを示しているか確認する。
- 共同作業で即時の助言・レビューが行われるか、単なる役割分担・管理業務かを判定する。
- その結果、即時助言と画面共有を示す選択肢を正解とする。
選択肢別の誤答解説
-
ア: Aがデバイスドライバ、Bがアプリと担当分担する案
- これは役割分担による並行開発で、二人が同一画面で協働するペアプログラミングの定義に当てはまりません。知識伝承や設計合意は得られにくく、インタフェースの不整合が起きやすい点が欠点です。
-
イ: Aがプロジェクトマネージャとして調整役になる案
- プロジェクト管理業務の割当であり、ペアプログラミングの「二人で一つのプログラムを作る」共同作業とは異なります。マネージャ業務は別の有効手法ですがペアプログラミングではありません。
-
ウ: エディタ画面を共有し、Bが書くコードに対してAが助言する案(正答)
- 画面共有・即時助言・レビューという要素が揃っており、ペアプログラミングの本質を満たします。特にAのハードウェア知識を即座に活かせるため、組込み系では有効です。
-
エ: ハード/ソフトを切分けてシミュレーション後に分担する案
- 事前検証としては有益ですが、分担して並行開発する点でペアプログラミングとは異なります。分担後の連携不足や知識の偏在が生じる可能性があります。
よくある誤解
- ペアプログラミングは「単に経験者が教えるだけ」の作業ではない。役割(ドライバ/ナビゲータ)を意図的に運用し、相互検討を行うことが重要です。
- 「常に二人が同じコードを同時に書き続ける」わけではない。ロールチェンジ(ドライバとナビゲータの交代)や、場面によってはナビゲータが主導する時間帯がある点を忘れがちです。
- リモート環境でもペアプログラミングは成立する。画面共有や共同編集ツールを用いることで、オンサイトと同様の効果を得られます。
補足コラム
組込みシステム開発でのペアプログラミング活用ポイント:
- ハード知識のあるメンバーは、初めはナビゲータ役を担うと良い。ハード依存の設計判断やタイミング制約のチェックが的確に行えます。
- ロールチェンジは定期的に行い、知識の水平展開と疲労軽減を図る(例:30〜60分で交代)。
- リモートペアリングには低遅延な画面共有、共同編集できるIDEや仮想デバッガの併用が有効です。
- コード品質以外に、仕様の早期合意、テスト観点の共有、バグ早期発見といった副次効果が期待できます。
FAQ
Q: ペアプログラミングは必ず二人で同じコードを書く必要がありますか?
A: 基本的な形は二人で同一作業空間を共有して一つのコードを作ることですが、状況によって役割を交代したり、短時間だけ観察的に参加する形、リモートで画面を共有する形など柔軟な実装があります。重要なのは「共同で設計・レビュー・実装を行う」点です。
A: 基本的な形は二人で同一作業空間を共有して一つのコードを作ることですが、状況によって役割を交代したり、短時間だけ観察的に参加する形、リモートで画面を共有する形など柔軟な実装があります。重要なのは「共同で設計・レビュー・実装を行う」点です。
Q: 経験差が大きい場合でも有効ですか?
A: 有効です。経験者がナビゲータとして助言することで知識伝承が進みます。ただし、教える側が一方的に作業を引き受けないよう、受講者(学習者)が能動的にドライバ役を経験する機会を設けることが大切です。
A: 有効です。経験者がナビゲータとして助言することで知識伝承が進みます。ただし、教える側が一方的に作業を引き受けないよう、受講者(学習者)が能動的にドライバ役を経験する機会を設けることが大切です。
Q: 組込みの低レベル開発(デバイスドライバ等)でも使えるでしょうか?
A: 使えます。ハード側の知見が即座に反映されるため、設計ミスやタイミング問題を早期に発見できます。ただしハードが必須の実機検証が必要な場面では、エミュレータやシミュレータを併用すると効率的です。
A: 使えます。ハード側の知見が即座に反映されるため、設計ミスやタイミング問題を早期に発見できます。ただしハードが必須の実機検証が必要な場面では、エミュレータやシミュレータを併用すると効率的です。
関連キーワード: ペアプログラミング、ドライバとナビゲータ、共同開発、コードレビュー、リモートペアリング

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

