アジャイル開発(XP とスクラム)
XP の主なプラクティス(ペアプログラミング・テスト駆動開発など)と、スクラムの役割・成果物・イベント・道具(バーンダウンチャート、KPT など)を見分け、科目A の選択肢から正しいものを選べるようになる。
アジャイル開発は 2023 年以降の科目A と免除試験で毎回のように 1〜2 問出ます。用語の取り違えさえ防げれば確実に取れる、得点しやすい分野です。
このレッスンで稽古する(用語チェック・過去問)結論:アジャイルは「短く作って、見せて、直す」
アジャイル開発は、短い期間で動くものを作って顧客に見せ、その反応を見て計画を直すことを繰り返す開発の進め方の総称です。代表が XP(エクストリームプログラミング) と スクラム です。最初に全部決めて工程順に進めるウォータフォールとは反対の考え方です。
たとえるなら、XP は料理人の包丁さばきや味見の習慣、スクラムは厨房全体の回し方(誰が献立を決め、いつ打合せするか)です。
| XP | スクラム | |
|---|---|---|
| 中心 | プログラマの作業習慣 | チームの進め方 |
| 代表語 | ペアプログラミング、テスト駆動開発、リファクタリング、継続的インテグレーション、計画ゲーム | プロダクトオーナ、スクラムマスタ、スプリント、デイリースクラム、プロダクトバックログ |
注意:「プラクティス」はアジャイル全般で使う語で、XP 専用ではありません。 過去問でも「アジャイル開発のプラクティスであるレトロスペクティブ」「アジャイル開発におけるプラクティスの一つであるバーンダウンチャート」という書き方が出ています。見分けは次の 2 点で行います。
- 問題文が「XP(eXtreme Programming)のプラクティス」と明示しているか、選択肢がペアプログラミング・TDD・継続的インテグレーション・計画ゲームなど XP の習慣か → XP の問題
- 「スプリント」「プロダクトオーナ」「イベント」などの語がある → スクラムの問題
XP のプラクティス(最頻出)
XP のプラクティス(実践する習慣)は、品質を落とさずに速く変更し続けるためのものです。試験で正解になるのは、ほぼ次の表の中から選ばれます。
| プラクティス | 中身 |
|---|---|
| ペアプログラミング | 2 人で 1 つのプログラムを書き、役割を交替しながらその場でチェックし合う |
| テスト駆動開発(TDD) | コードより先にテストを書く |
| リファクタリング | 動きを変えずにコードの中身を読みやすく整える。後回しにせず随時行う |
| 継続的インテグレーション(CI) | コードの結合とテストを頻繁に繰り返す |
| 計画ゲーム | 顧客と開発者で、次に作る機能と見積りを決める |
| コーディング標準 | 書き方のルールをチームでそろえる |
XP ではないものとしてよく混ぜられるのが、インスペクション(会議形式の正式なレビュー)、構造化設計、ユースケースの活用です。どれも開発で使う手法ですが、XP が提唱するプラクティスではありません。
「XP の説明として適切なもの」を選ぶ問題では、XP の精神に反する文が誤りの選択肢になります。
- テストケースを後で作る → 誤り(XP はテストが先)
- 次のイテレーションまでリファクタリングしない → 誤り(随時行う)
- 顧客が単体テストの仕様に責任をもつ → 誤り(顧客が受け持つのは受入れテスト。単体テストはプログラマが書く)
- 結合とテストを継続的に繰り返す → 正しい(継続的インテグレーション)
ペアプログラミングの定義
2 人が 1 つのプログラムを一緒に書き、その場で相談・レビューしながら進める方法です。狙いは品質の向上と知識の共有です。片方が書き、もう片方が見てチェックし、役割を交替します。
| 選択肢の言い方 | 判定 |
|---|---|
| 2 人で 1 つのプログラムを、相談・レビューしながら開発 | ○ |
| 2 人でメインとサブを分担して開発 | ×(分業でありペアではない) |
| 2 人が交互に休憩しながら長時間連続で開発 | ×(XP は無理な長時間労働を避ける) |
| プログラマと利用者が試作画面を見ながら開発 | ×(プロトタイピングの説明) |
「相互に役割を交替し、チェックし合う」とあれば、答えはペアプログラミングです。
テスト駆動開発(TDD)の 3 手順
TDD は ①失敗するテストを書く → ②テストを通す最小限のコードを書く → ③リファクタリングする を繰り返します。③では、テストが通る状態を保ったまま、読みやすさや保守性を高めます。
手順を問う問題では、③の代わりにプランニングポーカー(見積り)、レトロスペクティブ(振り返り)、インセプションデッキ(プロジェクトの目的を最初に共有する資料)といった、別のアジャイル用語が並びます。
スクラムの 3 つの役割
スクラムチームはプロダクトオーナ・スクラムマスタ・開発者の 3 役で構成されます。試験で一番問われるのは「バックログの中身と並び順を決めるのは誰か」で、答えはプロダクトオーナです。
| 役割 | 責任 | 見分けのキーワード |
|---|---|---|
| プロダクトオーナ | 何を作るかを決める。プロダクトバックログアイテムを作り、優先順位を付ける | 内容・並び順・価値の最大化 |
| スクラムマスタ | チームを支える。進捗を妨げる問題を取り除く、自律的に協働できるよう支援、バックログ管理を支援 | 障害の除去・支援・コーチ |
| 開発者 | スプリントで実際にインクリメント(動く成果物)を作る | 作る人 |
ひっかけ:「顧客」はスクラムの役割ではありません。また「バックログ管理を支援する」はスクラムマスタの仕事です。プロダクトオーナは自分で決める側です。
プロダクトバックログとスプリントのルール
プロダクトバックログは、プロダクトに必要な機能や改善を優先順位付きで並べた一覧です。正しい扱いは次の 3 点です。
- 1 つのプロダクトに 1 つ(チームが複数でもチームごとには作らない)
- 継続的に更新する(最初に全部を確定させない)
- 目指す姿であるプロダクトゴールを含む
スプリントは 1 か月以内の固定長の開発期間で、毎回リリース判断できるインクリメントを作ります。そのために毎回スプリントゴールを設定します。
| 選択肢の言い方 | 判定 |
|---|---|
| 1 回目は要件定義、2 回目は設計…と工程を割り当てる | ×(ウォータフォールの考え方) |
| スプリントレビューを期間の中間で行う | ×(終わりに行う) |
| 難易度に応じて毎回期間を変える | ×(期間は固定) |
| リリース判断できるインクリメントのためにスプリントゴールを設定 | ○ |
スクラムイベントの名称と順序
スプリントの中では 4 つのイベント(決まった会議)を行います。名前と中身の対応、そして順序が問われます。
| イベント | いつ | 何をする |
|---|---|---|
| スプリントプランニング | 最初 | このスプリントで何をどう作るか計画する |
| デイリースクラム | 毎日・同じ時間と場所・短時間 | 昨日やったこと、今日やること、障害を共有する |
| スプリントレビュー | 終わり | 作った成果物を関係者に見せて確認する |
| スプリントレトロスペクティブ | 最後(レビューの後) | チームの進め方を振り返り、改善策を決める |
順序は プランニング → デイリースクラム(毎日)→ レビュー → レトロスペクティブ です。レビューは「モノ」の確認、レトロスペクティブは「やり方」の振り返りと覚えると、順番も区別も迷いません。
進み具合と振り返りの道具
ベロシティは、チームが 1 スプリントで終えた作業量を、ストーリーポイントなどの相対的な尺度で表したものです。チームの「生産量の尺度」と問われたらベロシティです。
バーンダウンチャートは、縦軸が残作業量・横軸が時間のグラフで、線が右下がりに 0 へ向かいます。風呂の残り湯が減っていくのを見るイメージです。
| グラフ | 縦軸 | 形 |
|---|---|---|
| バーンダウンチャート | 残作業量 | 右下がりで 0 へ |
| バーンアップチャート | 完成した成果物の量 | 右上がり |
| バスタブ曲線 | 故障・不具合の発生数 | 高→低く平ら→高 |
| 信頼度成長曲線 | 累積バグ数 | S 字で上限に近づく |
KPT は振り返りの手法で、Keep(続けること)・Problem(問題)・Try(次に試すこと) の 3 つを話し合います。タイムライン、チームレーダー、ドット投票も振り返りで使う手法ですが、この 3 区分を使うのは KPT だけです。
試験での問われ方
- XP のプラクティスはどれか:ペアプロ・TDD・リファクタリング・CI・計画ゲームが正解の候補です。インスペクション、構造化設計、ユースケースは XP ではありません。
- 説明文の正誤:「テストを後で書く」「リファクタリングを先送りする」など、XP に反する文が誤りです。
- スクラムの役割:並び順を決めるのはプロダクトオーナです。「障害を取り除く」「支援する」はスクラムマスタです。
- イベントの名称と順序:「毎日」とあればデイリースクラムです。レビューの後にレトロスペクティブが来ます。
- グラフの見分け:残作業量が右下がりならバーンダウンチャートです。
TDD の手順 3 を選ぶ
ア 機能を維持しつつ,目的のコードの可読性,保守性などを高めるために,リファクタリングを行う。
イ 次回に実装する目的のコードの規模を見積もるために,プランニングポーカーを行う。
ウ 目的のコードの実装が完了したかどうかを判断するために,レトロスペクティブを行う。
エ 目的のコードのテストが完了したことを確認するために,インセプションデッキを作成する。
出典:基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問40
解き方と答えを見る
- 手順1 は「テストを書いて失敗させる」、手順2 は「テストを通すコードを書いて成功させる」。これは TDD の最初の 2 手順にあたる。
- TDD の 3 手順目は、テストが通る状態を保ったままコードを整える「リファクタリング」である。
- 選択肢アの「機能を維持しつつ、可読性・保守性を高めるためにリファクタリング」がこれにあたる。
- イのプランニングポーカーは見積り、ウのレトロスペクティブは振り返り、エのインセプションデッキはプロジェクト開始時の目的共有で、どれも TDD の手順ではない。
答え:ア(リファクタリング)
スクラムイベントの順序を並べる
ア 1 → 4 → 2 → 3
イ 1 → 4 → 3 → 2
ウ 4 → 1 → 2 → 3
エ 4 → 1 → 3 → 2
出典:基本情報技術者試験 科目A免除 修了試験 20251214 実施分 問39
解き方と答えを見る
- スプリントは計画から始まる。最初は 1:スプリントプランニング。
- スプリントの期間中は毎日 4:デイリースクラムを行う。
- 期間の終わりに、作った成果物を確認する 3:スプリントレビューを行う。
- 最後に、チームのやり方を振り返る 2:スプリントレトロスペクティブを行う。
- 並びは 1 → 4 → 3 → 2 で、これは選択肢イと一致する。
答え:イ(1 → 4 → 3 → 2)
要点(試験直前に読む)
- XP のプラクティスはペアプロ・TDD・リファクタリング・継続的インテグレーション・計画ゲーム。インスペクションや構造化設計は XP ではない。
- 「プラクティス」はアジャイル全般の語。XP と明示されているか選択肢が XP の習慣なら XP、スプリントやプロダクトオーナがあればスクラムと判断する。
- TDD はテストを書いて失敗させ、通るコードを書き、リファクタリングする 3 手順の繰り返し。
- バックログの内容と並び順を決めるのはプロダクトオーナ。障害の除去や支援はスクラムマスタ。
- イベントの順はプランニング → デイリースクラム(毎日)→ レビュー → レトロスペクティブ。スプリントは固定長。
- バーンダウンチャートは縦軸が残作業量で右下がり。ベロシティは生産量の尺度。KPT は Keep・Problem・Try。
ひっかけ
- 「プラクティス」という語だけで XP と決めつけない。レトロスペクティブやバーンダウンチャートも「アジャイルのプラクティス」と書かれる。
- 「バックログ管理を支援する」「障害を取り除く」はスクラムマスタの責務で、プロダクトオーナの選択肢に紛れ込む。
- スプリントに工程を割り当てる、期間を毎回変える、レビューを中間で行う、はすべて誤り。
- レビュー(成果物)とレトロスペクティブ(やり方)の順序を逆にした選択肢に注意。
- 縦軸が「完成した量」で右上がりのグラフはバーンアップ。バーンダウンは「残作業量」で右下がり。
用語(21)
短い期間で動くものを作って見せ、反応を見て計画を直すことを繰り返す開発の進め方の総称。
⚠ ウォータフォール:工程を順に一度だけ進める。工程を各スプリントに割り当てる選択肢はウォータフォール的な考え方で誤り。
ペアプログラミングやテスト駆動開発など、プログラマの作業習慣を軸にしたアジャイル手法。
⚠ スクラムはチームの進め方(役割・イベント・バックログ)が軸。「プラクティス」という語はアジャイル全般で使うので決め手にならない。問題文に XP と明示されているか、選択肢がペアプロ・TDD・CI・計画ゲームなら XP、スプリント・プロダクトオーナ・イベントならスクラムと判断する。
2 人で 1 つのプログラムを書き、役割を交替しながらその場で相談・チェックし合う方法。
⚠ 2 人でメインとサブを分担する分業や、プログラマと利用者で試作を見るプロトタイピングとは違う。
先にテストを書いて失敗させ、通す最小限のコードを書き、リファクタリングする手順を繰り返す開発方法。
⚠ コードを書いた後でテストケースを作るのは TDD ではない。
プログラムの動きを変えずに、内部の構造を読みやすく保守しやすく整えること。
⚠ 機能追加やバグ修正とは別物。「次のイテレーションまでしない」は誤り。
各自のコードを頻繁に結合し、そのたびにテストを繰り返すこと。
XP で、顧客と開発者が次に作る機能と見積りを話し合って決めるプラクティス。
⚠ 相互チェックで品質を上げるのはペアプログラミング。
固定長のスプリントを繰り返し、3 つの役割と決まったイベントでチームを回すアジャイル手法。
⚠ XP(作業習慣が軸)と混同しない。
プロダクトバックログアイテムを作り、内容と優先順位(並び順)を決める役割。
⚠ スクラムマスタは障害の除去やチーム・バックログ管理の「支援」をする。「決める」のがプロダクトオーナ。
チームの進捗を妨げる問題を取り除き、自律的に動けるよう支援する役割。
⚠ バックログの並び順を決めるのはプロダクトオーナ。
プロダクトに必要な機能や改善を優先順位付きで並べた一覧で、プロダクトに 1 つ置き、継続的に更新する。
⚠ 最初に全部確定させる、チームごとに作る、プロダクトゴールを含めない、はいずれも誤り。
1 か月以内の固定長の開発期間で、毎回リリース判断できるインクリメントを作る単位。
⚠ 生産量の尺度はベロシティ。スプリントは期間。
そのスプリントで達成する目標で、リリース判断できるインクリメントを作るために設定する。
開発者が毎日同じ時間と場所で短く集まり、進捗・今日の予定・障害を共有するイベント。
⚠ プランニング・レビュー・レトロスペクティブはスプリントごとに 1 回で、毎日は行わない。
スプリントの終わりに、作った成果物を関係者に見せて確認するイベント。
⚠ レトロスペクティブは「やり方」の振り返りで、レビューの後に行う。
スプリントの最後に、チームの進め方を振り返って改善策を決めるイベント。
⚠ 成果物を確認するのはスプリントレビュー。
チームが 1 スプリントで終えた作業量を、ストーリーポイントなどで相対的に表した尺度。
⚠ スプリント(期間)、バックログ(作業一覧)、レトロスペクティブ(振り返り)と混同しない。
縦軸に残作業量、横軸に時間を取り、残作業が 0 に向かって減っていく様子で進捗を見るグラフ。
⚠ 右上がりのバーンアップチャート、バスタブ曲線、信頼度成長曲線と軸と形で見分ける。
続けること・問題だったこと・次に試すことの 3 つで振り返る手法。
⚠ タイムライン・チームレーダー・ドット投票も振り返りの手法だが、この 3 区分を使うのは KPT。
メンバーが見積りの数字が書かれたカードを同時に出し合い、作業規模を見積もる手法。
⚠ TDD の手順ではない。
プロジェクトの開始時に、目的や方針をチームと関係者で共有するための資料。
⚠ テスト完了の確認には使わない。
このレッスンの過去問
- XP(エクストリームプログラミング)のプラクティス令和元年度 秋期 基本情報技術者試験 午前 問50
- ペアプログラミングの定義基本情報技術者試験 科目A免除 修了試験 20251214 実施分 問40
- テスト駆動開発の手順(リファクタリング)基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問40
- スクラムの役割(プロダクトオーナ等)令和7年度 基本情報技術者試験 科目A 公開問題 問13
- スクラムのプロダクトバックログの扱い基本情報技術者試験 科目A免除 修了試験 20260726 実施分 問39
- スクラムのスプリントのルール(スプリントゴール)基本情報技術者試験 科目A免除 修了試験 20250126 実施分 問39
- スクラムイベントの名称と内容(デイリースクラム等)令和6年度 基本情報技術者試験 科目A 公開問題 問12
- バーンダウンチャートの読み方令和8年度 基本情報技術者試験 科目A 公開問題 問12
- レトロスペクティブの手法(KPT)基本情報技術者試験 科目A免除 修了試験 20260726 実施分 問40