教科書一覧へ

アジャイル開発とXPのプラクティス

頻出約 21 分開発プロセス・手法

概要

このユニットでは、変化に柔軟に対応する反復・適応型の開発思想「アジャイル開発」を概観し、要求を記述するユーザーストーリーと、代表的方法論であるXP(エクストリームプログラミング)の具体的プラクティス(テスト駆動開発・ペアプログラミング・リファクタリング)を学ぶ。古典的なウォーターフォール型の課題に応える現代的な開発の考え方として、ITパスポートでも頻出する重要分野である。

用語7

アジャイル

短い反復で開発を繰り返し、変化に柔軟に対応する適応型の開発の考え方。

アジャイルは「俊敏な」という意味で、短い期間(イテレーション)ごとに設計・実装・テストを繰り返し、動くソフトウェアを少しずつ作り上げていく開発思想です。仕様変更を前提とし、利用者と協調しながら優先度の高い機能から作ります。 試験では、工程を一度きりで順に進めるウォーターフォール型との対比が問われます。アジャイルは仕様変更に強く、早期から動くものを確認できる一方、全体計画を最初に固めにくい点が特徴です。XPやスクラムを包含する上位の考え方である点も押さえましょう。

たとえ完成図を一度に描くのではなく、毎週少しずつ料理を試食しながら味を調整していくイメージ。途中で「やっぱり辛めに」と言われてもすぐ対応できます。

記憶フックアジャイルといえば短い反復で変化に柔軟に対応する開発思想

要求の整理

計画

設計と実装

テスト

動くソフトを確認

ユーザーストーリー

利用者の視点で必要な機能を簡潔に記述した、アジャイルの要求の単位。

ユーザーストーリーは、「誰が・何を・なぜ」したいのかを利用者の言葉で短く書いた要求の記述です。詳細な仕様書ではなく、会話のきっかけとなる簡潔なメモとして扱い、優先度を付けて開発の単位にします。 試験では、アジャイルにおける要求記述の基本単位であり、利用者の価値を中心に据える点が問われます。膨大な仕様書を最初に固める従来型とは異なり、必要なときに詳細を詰めていく柔軟さが特徴です。

たとえ付箋に「お客さんとして、注文履歴を見たい。なぜなら再注文を楽にしたいから」と一言で書くようなもの。細かい仕様は後で会話して決めます。

記憶フックユーザーストーリーといえば利用者視点で機能を簡潔に書く要求の単位

XP

少人数で反復しながら高品質を目指すアジャイルの代表的方法論の略称。

XPはエクストリームプログラミング(Extreme Programming)の略で、アジャイル開発を代表する方法論の一つです。少人数のチームで短い反復を行い、テスト駆動開発・ペアプログラミング・リファクタリングなどのプラクティスを徹底して、変化に強く高品質なソフトウェアを作ります。 試験では、XPがアジャイルの具体的な実践方法であり、複数のプラクティスを束ねる枠組みである点が問われます。価値(初版で定義されたコミュニケーション・シンプルさ・フィードバック・勇気の4つ。後に「尊重」を加えて5つとされた)を重視する点も特徴です。

たとえ「良いと分かっている習慣を極端なまでに徹底する」流派。テストもレビューも『毎回・常に』やるという、基本を極限まで突き詰めた進め方です。

記憶フックXPといえばエクストリームプログラミングの略でプラクティスを束ねるアジャイル方法論

エクストリームプログラミング

XPの正式名称。プラクティスを徹底するアジャイルの代表的方法論。

エクストリームプログラミング(Extreme Programming)は略称XPの正式名称で、同一の概念を指します。よいとされる開発習慣を「極端(extreme)」なまでに徹底することからこの名が付きました。 試験では、XPとエクストリームプログラミングが同じものを指す点、そしてテスト駆動開発・ペアプログラミング・リファクタリングといったプラクティスの総称である点が問われます。略称と正式名称を結び付けて覚えておきましょう。

たとえ「XP」というニックネームの正式なフルネームが「エクストリームプログラミング」。同じ方法論の呼び方違いで、別物ではありません。

記憶フックエクストリームプログラミングといえばXPの正式名称(同じ方法論)

テスト駆動開発

実装前にテストを先に書き、それを満たすコードを作る開発手法。

テスト駆動開発(TDD)は、機能を実装する前に、まずその機能が満たすべきテストを先に書く手法です。最初は失敗するテストを書き、それを通す最小限のコードを書き、最後にコードを整理(リファクタリング)する流れを繰り返します。 試験では、「テストを先に書く」という順序が最大のポイントです。後からテストする従来の進め方と逆で、仕様を明確にし、品質を作り込みながら開発できる点が問われます。XPの代表的プラクティスの一つです。

たとえ問題集の答え合わせの基準を先に決めてから問題を解くようなもの。「こうなれば正解」を先に用意し、それを満たすように作っていきます。

記憶フックテスト駆動開発といえばテストを先に書いてから実装する手法

失敗するテストを書く

テストを通す最小コードを書く

リファクタリングで整える

ペアプログラミング

2人1組で1台の画面を見ながら共同でプログラミングする手法。

ペアプログラミングは、2人が1台のPCを使い、一方がコードを書き(ドライバー)、もう一方が確認・助言する(ナビゲーター)役割で協働する手法です。役割は適宜交代します。 試験では、その場で相互レビューが行われるため品質や知識共有が高まる一方、2人で1つの作業をするためコストはかかる点が問われます。XPの協働プラクティスの代表例であり、リアルタイムなレビューと教育効果が利点として狙われます。

たとえ車の運転で、運転手とナビ係が交代しながら一緒に目的地へ向かうようなもの。一人より目が増え、道を間違えにくくなります。

記憶フックペアプログラミングといえば2人1組で共同開発し相互レビューする手法

リファクタリング

外部から見た動作を変えずに、内部のコード構造を整理・改善すること。

リファクタリングは、プログラムの外部から見た振る舞い(機能)を変えないまま、内部のコードを読みやすく・保守しやすい構造へ改善する作業です。重複の除去や名前の整理などを行います。 試験では、「機能を変えずに内部だけ改善する」という定義が最重要ポイントです。新機能の追加やバグ修正とは目的が異なります。テスト駆動開発と一体で行うことで、改善後も動作が壊れていないことを確認しながら品質を保てる点が問われます。

たとえ散らかった部屋を、置いてある物は変えずに整理整頓するイメージ。使えるものは同じでも、片付くと次に探しやすく・使いやすくなります。

記憶フックリファクタリングといえば動作を変えずに内部構造を整理改善すること

まとめ

要点

  • アジャイルは短い反復を繰り返し、仕様変更に柔軟に対応する適応型の開発思想で、XPやスクラムを包含する上位概念。
  • ユーザーストーリーは利用者視点で要求を簡潔に書く単位で、アジャイルの要求記述の基本となる。
  • XP(エクストリームプログラミング)はアジャイルの代表的方法論で、複数のプラクティスを徹底して束ねる枠組み。
  • テスト駆動開発は『テストを先に書く』点、リファクタリングは『動作を変えずに内部を改善する』点が頻出の区別ポイント。
  • ペアプログラミングは2人1組でリアルタイムに相互レビューしながら開発し、品質と知識共有を高める協働プラクティス。

記憶フック一覧

  • アジャイル: アジャイルといえば短い反復で変化に柔軟に対応する開発思想
  • ユーザーストーリー: ユーザーストーリーといえば利用者視点で機能を簡潔に書く要求の単位
  • XP: XPといえばエクストリームプログラミングの略でプラクティスを束ねるアジャイル方法論
  • エクストリームプログラミング: エクストリームプログラミングといえばXPの正式名称(同じ方法論)
  • テスト駆動開発: テスト駆動開発といえばテストを先に書いてから実装する手法
  • ペアプログラミング: ペアプログラミングといえば2人1組で共同開発し相互レビューする手法
  • リファクタリング: リファクタリングといえば動作を変えずに内部構造を整理改善すること

関連の過去問演習は今後のアップデートで追加予定です。