資格道場 › レッスン一覧 › ソフトウェア開発管理技術
ソフトウェア開発管理技術・4/4・13分

アジャイル開発(XP とスクラム)

ゴール

XP の主なプラクティス(ペアプログラミング・テスト駆動開発など)と、スクラムの役割・成果物・イベント・道具(バーンダウンチャート、KPT など)を見分け、科目A の選択肢から正しいものを選べるようになる。

アジャイル開発は 2023 年以降の科目A と免除試験で毎回のように 1〜2 問出ます。用語の取り違えさえ防げれば確実に取れる、得点しやすい分野です。

このレッスンで稽古する(用語チェック・過去問)

結論:アジャイルは「短く作って、見せて、直す」

アジャイル開発は、短い期間で動くものを作って顧客に見せ、その反応を見て計画を直すことを繰り返す開発の進め方の総称です。代表が XP(エクストリームプログラミング) と スクラム です。最初に全部決めて工程順に進めるウォータフォールとは反対の考え方です。

たとえるなら、XP は料理人の包丁さばきや味見の習慣、スクラムは厨房全体の回し方(誰が献立を決め、いつ打合せするか)です。

XP スクラム
中心 プログラマの作業習慣 チームの進め方
代表語 ペアプログラミング、テスト駆動開発、リファクタリング、継続的インテグレーション、計画ゲーム プロダクトオーナ、スクラムマスタ、スプリント、デイリースクラム、プロダクトバックログ

注意:「プラクティス」はアジャイル全般で使う語で、XP 専用ではありません。 過去問でも「アジャイル開発のプラクティスであるレトロスペクティブ」「アジャイル開発におけるプラクティスの一つであるバーンダウンチャート」という書き方が出ています。見分けは次の 2 点で行います。

  • 問題文が「XP(eXtreme Programming)のプラクティス」と明示しているか、選択肢がペアプログラミング・TDD・継続的インテグレーション・計画ゲームなど XP の習慣か → XP の問題
  • 「スプリント」「プロダクトオーナ」「イベント」などの語がある → スクラムの問題
ウォータフォール:順に1回だけ進む要件定義設計製造テスト顧客が動くものを見るのは最後アジャイル:短く作って、見せて、直す短く作る顧客に見せる計画を直す反応を見て直し、何度も繰り返す
ウォータフォールは工程を順に1回だけ進み、アジャイルは「短く作る→顧客に見せる→計画を直す」を何度も繰り返す。

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スプリント(1か月以内・固定長)時間①スプリントプランニング最初:何をどう作るか計画②デイリースクラム毎日・短時間:障害を共有③スプリントレビュー終わり:作ったモノを確認④スプリントレトロスペクティブ最後(レビューの後):やり方を振り返る
1 スプリントは ①プランニング→②デイリースクラム(毎日)→③レビュー→④レトロスペクティブ の順に進む。

進み具合と振り返りの道具

ベロシティは、チームが 1 スプリントで終えた作業量を、ストーリーポイントなどの相対的な尺度で表したものです。チームの「生産量の尺度」と問われたらベロシティです。

バーンダウンチャートは、縦軸が残作業量・横軸が時間のグラフで、線が右下がりに 0 へ向かいます。風呂の残り湯が減っていくのを見るイメージです。

グラフ 縦軸 形
バーンダウンチャート 残作業量 右下がりで 0 へ
バーンアップチャート 完成した成果物の量 右上がり
バスタブ曲線 故障・不具合の発生数 高→低く平ら→高
信頼度成長曲線 累積バグ数 S 字で上限に近づく

KPT は振り返りの手法で、Keep(続けること)・Problem(問題)・Try(次に試すこと) の 3 つを話し合います。タイムライン、チームレーダー、ドット投票も振り返りで使う手法ですが、この 3 区分を使うのは KPT だけです。

残作業量時間0完了(残り0)右下がりで0へ残り湯が減るイメージ
バーンダウンチャートは縦軸が残作業量・横軸が時間で、線が右下がりに 0 へ向かう。

試験での問われ方

  • XP のプラクティスはどれか:ペアプロ・TDD・リファクタリング・CI・計画ゲームが正解の候補です。インスペクション、構造化設計、ユースケースは XP ではありません。
  • 説明文の正誤:「テストを後で書く」「リファクタリングを先送りする」など、XP に反する文が誤りです。
  • スクラムの役割:並び順を決めるのはプロダクトオーナです。「障害を取り除く」「支援する」はスクラムマスタです。
  • イベントの名称と順序:「毎日」とあればデイリースクラムです。レビューの後にレトロスペクティブが来ます。
  • グラフの見分け:残作業量が右下がりならバーンダウンチャートです。
例題 1

TDD の手順 3 を選ぶ

テスト駆動開発において典型的な三つの手順を繰り返し,目的のコードを作成するとき,手順1,手順2に続いて実施するものはどれか。ここで,目的のコードとは作成するモジュールのコードであり,テストコードとはテストツール上でモジュールを動作させる条件を指定するコードである。 手順1:今回実装する目的のコードに対するテストコードを書き,テストを実行して失敗させる。 手順2:テストの成功を主眼とした目的のコードを書き,手順1で失敗したテストを成功させる。

ア 機能を維持しつつ,目的のコードの可読性,保守性などを高めるために,リファクタリングを行う。
イ 次回に実装する目的のコードの規模を見積もるために,プランニングポーカーを行う。
ウ 目的のコードの実装が完了したかどうかを判断するために,レトロスペクティブを行う。
エ 目的のコードのテストが完了したことを確認するために,インセプションデッキを作成する。

出典:基本情報技術者試験 科目A免除 修了試験 20260614 実施分 問40

解き方と答えを見る
  1. 手順1 は「テストを書いて失敗させる」、手順2 は「テストを通すコードを書いて成功させる」。これは TDD の最初の 2 手順にあたる。
  2. TDD の 3 手順目は、テストが通る状態を保ったままコードを整える「リファクタリング」である。
  3. 選択肢アの「機能を維持しつつ、可読性・保守性を高めるためにリファクタリング」がこれにあたる。
  4. イのプランニングポーカーは見積り、ウのレトロスペクティブは振り返り、エのインセプションデッキはプロジェクト開始時の目的共有で、どれも TDD の手順ではない。

答え:ア(リファクタリング)

例題 2

スクラムイベントの順序を並べる

スクラムでは,一定の期間で区切ったスプリントを繰り返して開発を進める。各スプリントで実施するスクラムイベントの順序のうち,適切なものはどれか。 〔スクラムイベント〕 1:スプリントプランニング 2:スプリントレトロスペクティブ 3:スプリントレビュー 4:デイリースクラム

ア 1 → 4 → 2 → 3
イ 1 → 4 → 3 → 2
ウ 4 → 1 → 2 → 3
エ 4 → 1 → 3 → 2

出典:基本情報技術者試験 科目A免除 修了試験 20251214 実施分 問39

解き方と答えを見る
  1. スプリントは計画から始まる。最初は 1:スプリントプランニング。
  2. スプリントの期間中は毎日 4:デイリースクラムを行う。
  3. 期間の終わりに、作った成果物を確認する 3:スプリントレビューを行う。
  4. 最後に、チームのやり方を振り返る 2:スプリントレトロスペクティブを行う。
  5. 並びは 1 → 4 → 3 → 2 で、これは選択肢イと一致する。

答え:イ(1 → 4 → 3 → 2)

要点(試験直前に読む)

  • XP のプラクティスはペアプロ・TDD・リファクタリング・継続的インテグレーション・計画ゲーム。インスペクションや構造化設計は XP ではない。
  • 「プラクティス」はアジャイル全般の語。XP と明示されているか選択肢が XP の習慣なら XP、スプリントやプロダクトオーナがあればスクラムと判断する。
  • TDD はテストを書いて失敗させ、通るコードを書き、リファクタリングする 3 手順の繰り返し。
  • バックログの内容と並び順を決めるのはプロダクトオーナ。障害の除去や支援はスクラムマスタ。
  • イベントの順はプランニング → デイリースクラム(毎日)→ レビュー → レトロスペクティブ。スプリントは固定長。
  • バーンダウンチャートは縦軸が残作業量で右下がり。ベロシティは生産量の尺度。KPT は Keep・Problem・Try。

ひっかけ

  • 「プラクティス」という語だけで XP と決めつけない。レトロスペクティブやバーンダウンチャートも「アジャイルのプラクティス」と書かれる。
  • 「バックログ管理を支援する」「障害を取り除く」はスクラムマスタの責務で、プロダクトオーナの選択肢に紛れ込む。
  • スプリントに工程を割り当てる、期間を毎回変える、レビューを中間で行う、はすべて誤り。
  • レビュー(成果物)とレトロスペクティブ(やり方)の順序を逆にした選択肢に注意。
  • 縦軸が「完成した量」で右上がりのグラフはバーンアップ。バーンダウンは「残作業量」で右下がり。

用語(21)

アジャイル開発 あじゃいるかいはつ
短い期間で動くものを作って見せ、反応を見て計画を直すことを繰り返す開発の進め方の総称。
⚠ ウォータフォール:工程を順に一度だけ進める。工程を各スプリントに割り当てる選択肢はウォータフォール的な考え方で誤り。
XP eXtreme Programming(エクストリームプログラミング)
ペアプログラミングやテスト駆動開発など、プログラマの作業習慣を軸にしたアジャイル手法。
⚠ スクラムはチームの進め方(役割・イベント・バックログ)が軸。「プラクティス」という語はアジャイル全般で使うので決め手にならない。問題文に XP と明示されているか、選択肢がペアプロ・TDD・CI・計画ゲームなら XP、スプリント・プロダクトオーナ・イベントならスクラムと判断する。
ペアプログラミング ぺあぷろぐらみんぐ
2 人で 1 つのプログラムを書き、役割を交替しながらその場で相談・チェックし合う方法。
⚠ 2 人でメインとサブを分担する分業や、プログラマと利用者で試作を見るプロトタイピングとは違う。
テスト駆動開発 てすとくどうかいはつ(TDD: Test-Driven Development)
先にテストを書いて失敗させ、通す最小限のコードを書き、リファクタリングする手順を繰り返す開発方法。
⚠ コードを書いた後でテストケースを作るのは TDD ではない。
リファクタリング りふぁくたりんぐ
プログラムの動きを変えずに、内部の構造を読みやすく保守しやすく整えること。
⚠ 機能追加やバグ修正とは別物。「次のイテレーションまでしない」は誤り。
継続的インテグレーション けいぞくてきいんてぐれーしょん(CI: Continuous Integration)
各自のコードを頻繁に結合し、そのたびにテストを繰り返すこと。
計画ゲーム けいかくげーむ
XP で、顧客と開発者が次に作る機能と見積りを話し合って決めるプラクティス。
⚠ 相互チェックで品質を上げるのはペアプログラミング。
スクラム すくらむ
固定長のスプリントを繰り返し、3 つの役割と決まったイベントでチームを回すアジャイル手法。
⚠ XP(作業習慣が軸)と混同しない。
プロダクトオーナ ぷろだくとおーな
プロダクトバックログアイテムを作り、内容と優先順位(並び順)を決める役割。
⚠ スクラムマスタは障害の除去やチーム・バックログ管理の「支援」をする。「決める」のがプロダクトオーナ。
スクラムマスタ すくらむますた
チームの進捗を妨げる問題を取り除き、自律的に動けるよう支援する役割。
⚠ バックログの並び順を決めるのはプロダクトオーナ。
プロダクトバックログ ぷろだくとばっくろぐ
プロダクトに必要な機能や改善を優先順位付きで並べた一覧で、プロダクトに 1 つ置き、継続的に更新する。
⚠ 最初に全部確定させる、チームごとに作る、プロダクトゴールを含めない、はいずれも誤り。
スプリント すぷりんと
1 か月以内の固定長の開発期間で、毎回リリース判断できるインクリメントを作る単位。
⚠ 生産量の尺度はベロシティ。スプリントは期間。
スプリントゴール すぷりんとごーる
そのスプリントで達成する目標で、リリース判断できるインクリメントを作るために設定する。
デイリースクラム でいりーすくらむ
開発者が毎日同じ時間と場所で短く集まり、進捗・今日の予定・障害を共有するイベント。
⚠ プランニング・レビュー・レトロスペクティブはスプリントごとに 1 回で、毎日は行わない。
スプリントレビュー すぷりんとれびゅー
スプリントの終わりに、作った成果物を関係者に見せて確認するイベント。
⚠ レトロスペクティブは「やり方」の振り返りで、レビューの後に行う。
スプリントレトロスペクティブ すぷりんとれとろすぺくてぃぶ
スプリントの最後に、チームの進め方を振り返って改善策を決めるイベント。
⚠ 成果物を確認するのはスプリントレビュー。
ベロシティ べろしてぃ
チームが 1 スプリントで終えた作業量を、ストーリーポイントなどで相対的に表した尺度。
⚠ スプリント(期間)、バックログ(作業一覧)、レトロスペクティブ(振り返り)と混同しない。
バーンダウンチャート ばーんだうんちゃーと
縦軸に残作業量、横軸に時間を取り、残作業が 0 に向かって減っていく様子で進捗を見るグラフ。
⚠ 右上がりのバーンアップチャート、バスタブ曲線、信頼度成長曲線と軸と形で見分ける。
KPT Keep・Problem・Try(けぷと)
続けること・問題だったこと・次に試すことの 3 つで振り返る手法。
⚠ タイムライン・チームレーダー・ドット投票も振り返りの手法だが、この 3 区分を使うのは KPT。
プランニングポーカー ぷらんにんぐぽーかー
メンバーが見積りの数字が書かれたカードを同時に出し合い、作業規模を見積もる手法。
⚠ TDD の手順ではない。
インセプションデッキ いんせぷしょんでっき
プロジェクトの開始時に、目的や方針をチームと関係者で共有するための資料。
⚠ テスト完了の確認には使わない。

このレッスンの過去問

このレッスンで稽古する