この記事ではアジャイルについてIT初心者にも分かりやすく解説します。
アジャイル
- アジャイルは小分けに開発を進めていき、少しずつ納品する開発手法。
- アジャイルの手法にはスクラムとXPがある。
スクラム
- スクラムチームには、プロダクトオーナー、スクラムマスター、開発者がいる。
- スクラムでは、1つのサイクルをスプリントと呼ぶ。
- スプリントでは、スプリントプランニング、デイリースクラム、スプリントレビュー、スプリントレトロスペクティブを行う。
- スクラムでは、プロダクトバックログ、スプリントバックログ、インクリメントを成果物とする。
- 1回のスプリントで作業できる量をベロシティと呼ぶ。
XP
- テスト駆動開発では、プログラム開発の前にテストの内容を決め、実際の開発はテストに合格できるように行う。
- ペアプログラミングでは、2人1組でプログラミングを行う。
- 継続的インテグレーションでは、少しずつ開発しながら、既に完成している成果物と結合する。
- リファクタリングでは、仕様を変えずに、既に開発したコードを分かりやすいように修正する。
リバースエンジニアリング
- リバースエンジニアリングとは完成しているシステムから設計や仕様を読み解く手法。
応用情報ではアジャイルに関する問題が出題されます。是非最後までご覧ください。
ウォーターフォールモデル
システム開発の進め方には大きく2種類の方法があります。
ウォーターフォールモデルとアジャイルです。ウォーターフォールモデルを知っている方がアジャイルも理解しやすいと思うので、まず簡単にウォーターフォールモデルから解説します。
ウォーターフォールモデルとは、全ての機能を一気に、要件定義→設計→開発→テスト→リリースの順番で開発する手法です。ちなみに、ウォーターフォールには滝という意味があります。水の流れになぞらえて、要件定義のような最初の方の工程を上流工程、テストのような最後の方の工程を下流工程と言います。
ウォーターフォールモデルの分かりやすい身近な例は建築です。
家を建てる時、キッチンは広めが良いとかバルコニーが欲しいとか要望を設計者とすり合わせ(要件定義)、そこから設計図に落とし込み(設計)、実際に建築(開発)していきますよね。
なぜこの順番なのかと言うと、建築するためには設計図が必要で、設計図を作るためには要件が決まっている必要があるからです。要件を決める、設計図を作る等、各段階できちんと細部まで煮詰めてから次に進んでいくのがウォーターフォールモデルの特徴です。
しかし、ウォーターフォールモデルには弱点があります。最後の方の工程にならないと実際に完成する家のイメージが湧きにくい所です。設計書上では素敵な玄関に見えたけど、完成間近の家を見てみると微妙かも…なんてことが起こり得る可能性があります。しかも、完成間近で「やっぱり玄関を変えたい!」と言っても既に手遅れなんてこともあり得ます。
アジャイル
アジャイルでは、大体の仕様が決まった機能から小分けに開発を進めていき、完成した機能は少しずつリリース(納品)していきます。
アジャイルの特徴は、途中で仕様変更があるのは当たり前であると踏んだ上で開発を進めていく所です。ウォーターフォールモデルのように細部まで仕様を決めず、大体の要件が決まった段階で開発を始めてしまいます。また、少しずつ開発・リリースを進めるので、素早くユーザーにシステムを提供出来ます。
アジャイル開発の手法
アジャイル開発にはスクラムとXP(Extreme Programming)と呼ばれる手法があります。
スクラム
スクラムはアジャイル開発で最もよく使われる手法です。スクラムではチーム内のコミュニケーションを大切にします。
スクラムでは3つの役割を持つ人達が5つのイベントを経て3つの成果物を作成します。
3つの役割を持つ人
スクラムチームにはプロダクトオーナー、開発者、スクラムマスターの3種類の人がいます。
プロダクトオーナーは開発の方向性を決定し、作成するシステムに対する最終決定権と責任を持つ人です。プロダクトオーナーはプロダクトバックログを最新化します。
スクラムマスターは開発チームのリーダーで、スクラムを円滑に進めるために開発者を支援します。スクラムマスターはチームメンバーにスクラムの価値観を浸透させ、チーム内外にある問題を把握・解決します。
開発者は実際にシステムを作成します。
5つのイベント
スクラムでは、スプリントプランニング、スプリント、デイリースクラム、スプリントレビュー、スプリントレトロスペクティブの5つのイベントを行います。
アジャイルでは小さいサイクルを繰り返すことでシステム開発を進めていきますが、スクラムではその1サイクルをスプリントと言います。アジャイル開発中のスプリントの期間は常に一定で、1か月以内になるように設定します。
スプリントの前には、スプリントで行うべき作業やゴールを決めるスプリントプランニングが行われます。また、各スプリントの終盤では、スプリントで作成した成果物の確認を行うスプリントレビューが行われ、スプリントの最後にはスプリントの振り返りを行うスプリントレトロスペクティブが行われます。
また、スプリント中は毎日チームで集まり、進捗や次にするべき作業の確認を行うデイリースクラムと呼ばれるミーティングを行います。
3つの成果物
スクラムでは、プロダクトバックログ、スプリントバックログ、インクリメントを成果物とします。
プロダクトバックログは、成果を上げるために必要なことを優先順位と共にリスト化したものです。
スプリントバックログは、実際にどんな作業をすればよいかをまとめたものです。
インクリメントは、スクラムの成果物です。
バーンダウンチャート
バーンダウンチャートとは案件全体やスプリントの進捗状況を表したグラフです。バーンダウンチャートを使えば、予定に対して進捗が進んでいるのか遅れているのかがすぐに分かります。
ベロシティ
ベロシティとは1スプリント内で作業できる量を表した指標です。
ベロシティでは作業量をストーリーポイントを使って表します。
ストーリーポイントとは、プロジェクトにおけるタスクや開発する機能の相対的な大きさや難易度を表す単位です。
ベロシティを使うことで、次のようなメリットを享受できます。
- 直近のベロシティから、今回のスプリントでどこまでシステムを作れるか予想できる。
- 案件全体の完了時期を予測できる。
- スクラムチームの成長度を測ることができる。
XP(Extreme Programming)
XPは柔軟に仕様変更出来ることに重きを置いたアジャイルの開発手法です。開発者目線での方法論が多いことに特徴があります。
XPでは5つの価値観と19個のプラクティス(開発方法論)を提唱しています。
5つの価値観
XPでは、コミュニケーション、シンプル、フィードバック、勇気、尊重の5つの価値観を大切にします。
システム開発では顧客やエンジニア等、様々な人が関わり合います。お互いの意見を尊重し、積極的にコミュニケーションを取ることがプロジェクトの成功に重要です。また、成果物を適切にフィードバックすることで、必要な機能が明確になり、無駄な開発をすることが無くなります。アジャイルでは仕様変更を想定内とするので、仕組みは出来るだけシンプルにしておきます。複雑な仕組みを後から変更するのは難しいからです。とは言え、仕様変更には大きなストレスが掛かります。そんな時、困難を恐れず、勇気を持って仕様変更を受け入れる姿勢が大切になります。
19個のプラクティス
XPでは19個のプラクティスが提唱されていますが、その中でも応用情報で出題される可能性があるテスト駆動開発、ペアプログラミング、継続的インテグレーション、リファクタリングを紹介します。
テスト駆動開発
プログラム開発の前にテストの内容を決めて、実際の開発はテストに合格できるように行います。
ペアプログラミング
ペアプログラミングでは2人1組でプログラミングを行います。1人がプログラミングを行い、もう1人が内容の確認・補佐をします。
2人でプログラミングをするので、ちょっとした問題点があってもすぐに相談し合えることや、コードを理解している人が2人いることで、問題が発生した時に迅速な対応が出来ます。
継続的インテグレーション
継続的インテグレーションでは、少しずつ開発して成果物と結合させてはテストを行うことを繰り返します。
少しずつコードを結合するので、不具合が発生した時に原因箇所の特定が容易になります。
リファクタリング
リファクタリングとは、仕様を変えずに、完成したコードを分かりやすいように改善することです。分かりやすくすることで、障害が発生した時でも調査を迅速に行えます。
リバースエンジニアリング
リバースエンジニアリングと言う、アジャイルとは全く関係ありませんが、基本情報で出題される開発手法があります。リバースエンジニアリングも出題されることがあるので覚えておきましょう。
リバースエンジニアリングとは、既に完成しているシステムを分析して、その仕様や構造を明らかにすることです。通常、仕様や構造を決めてからシステムを開発するのですが、その逆でシステムから仕様や構造を明らかにするため、「戻る」を意味するリバースを使って、リバースエンジニアリングなんて呼ばれています。
応用情報技術者試験での出題例
令和5年度秋期問49
応用情報技術者
午前試験 令和5年度秋期問49
アジャイルソフトウェア開発宣言では,”あることがらに価値があることを認めないながらも別のことがらにより価値をおく”としている。”別のことがら”に該当するものの組みはどれか。
ア 個人と対話,動くソフトウェア,顧客との協調,変化への対応
イ 個人と対話,包括的なドキュメント,顧客との協調,計画に従うこと
ウ プロセスやツール,動くソフトウェア,契約交渉,変化への対応
エ プロセスやツール,包括的なドキュメント,契約交渉,計画に従うこと
正解は”ア”
アジャイルソフトウェア開発宣言では、次のことを宣言しています。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、価値とする。
よって、答えはアです。
ちなみに、アジャイルソフトウェア開発宣言を正確に知らなくても、大体で分かりますよね・・・?
令和5年度春期問48
応用情報技術者
午前試験 令和5年度春期問48
スクラムでは,一定の期間で区切ったスプリントを繰り返して開発を進める。各スプリントで実施するスクラムイベントの順序のうち,適切なものはどれか。
〔スクラムイベント〕
1:スプリントプランニング
3:スプリントレビュー
ア 1 → 4 → 2 → 3
ウ 4 → 1 → 2 → 3
2:スプリントレトロスペクティブ
4:デイリースクラム
イ 1 → 4 → 3 → 2
エ 4 → 1 → 3 → 2
正解は”イ”
スプリントでは、
スプリントプランニング→デイリースクラム→スプリントレビュー→スプリントレトロスペクティブの順番で行います。
令和4年度秋期問49
応用情報技術者
午前試験 令和4年度秋期問49
エクストリームプログラミング(XP:Extreme Programming)における”テスト駆動開発”の特徴はどれか。
ア 最初のテストで,なるべく多くのバグを摘出する。
イ テストケースの改善を繰り返す。
ウ テストでのカバレージを高めることを目的とする。
エ プログラムを書く前にテストコードを記述する。
正解は”エ”
テスト駆動開発では、プログラムを書く前にテストコードを記述し、テストに合格できるように開発をしていきます。
令和4年度秋期問50
応用情報技術者
午前試験 令和4年度秋期問50
スクラムのスプリントにおいて,(1)~(3)のプラクティスを採用して開発を行い,スプリントレビューの後にKPT手法でスプリントレトロスペクティブを行った。”KPT”の”T”に該当する例はどれか。
〔プラクティス〕
(1) ペアプログラミングでコードを作成する。
(2) スタンドアップミーディングを行う。
(3) テスト駆動開発で開発を進める。
ア 開発したプログラムは欠陥が少なかったので,今後もペアプログラミングを継続する。
イ スタンドアップミーティングにメンバー全員が集まらないことが多かった。
ウ 次のスプリントからは,スタンドアップミーティングにタイムキーパーを置き,終了5分前を知らせるようにする。
エ テストコードの作成に見積り以上の時間が掛かった。
正解は”ウ”
KPT手法とは、振り返りをするときに、
「良かったので継続したいこと(Keep)」と「解決すべき課題(Problem)」を洗い出した上で、「次に取り組むこと(Try)」を決定する手法です。
ア~エの中で、次に取り組むことを記載しているのはウのみです。
令和4年度春期問49
応用情報技術者
午前試験 令和4年度春期問49
アジャイル開発の手法の一つであるスクラムにおいて,決められた期間におけるスクラムチームの生産量を相対的に表現するとき,尺度として用いるものはどれか。
ア スプリント
ウ バックログ
イ スプリントレトロスペクティブ
エ ベロシティ
正解は”エ”
スクラムチームがスプリント内で生産する量をベロシティと呼びます。
令和3年度秋期問49
応用情報技術者
午前試験 令和3年度秋期問49
アジャイル開発におけるプラクティスの一つであるバーンダウンチャートはどれか。ここで,図中の破線は予定又は予想を,実線は実績を表す。
正解は”ア”
バーンダウンチャートとは、案件やスプリントの進捗状況を表します。よって答えはアです。
令和3年度秋期問50
応用情報技術者
午前試験 令和3年度秋期問50
アジャイル開発手法の一つであるスクラムでは,プロダクトオーナ,スクラムマスタ,開発者でスクラムチームを構成する。スクラムマスタが行うこととして,最も適切なものはどれか。
ア 各スプリントの終わりにプロダクトインクリメントのリリースの可否を判断する。
イ スクラムの理論とプラクティスを全員が理解するように支援する。
ウ プロダクトバックログアイテムを明確に表現する。
エ プロダクトバックログの優先順位を決定する。
正解は”イ”
スクラムマスタは開発者を支援します。