見出し画像

【解説】アジャイル開発の詳しいプロセス~なぜ?普及率が低い理由~

 ウォーターフォールモデルやスパイラルモデル。どんなシステム開発モデルを採用するかによってシステムの品質に大きな差が生まれます。本記事ではエンジニアなら誰もが注目するアジャイル開発について解説します。

 アジャイル(Agile)とは、直訳すると「素早い」「機敏な」「頭の回転が速い」という意味です。アジャイル開発は、システムやソフトウェア開発におけるプロジェクト開発手法のひとつで、大きな単位でシステムを区切ることなく、小単位で実装とテストを繰り返して開発を進めていきます。従来の開発手法に比べて開発期間が短縮されるため、アジャイル(素早い)と呼ばれています。

アジャイル開発の流れ

<リリース計画>
アジャイル開発では、ソフトウェアの計画段階で厳密な仕様を決めずに、だいたいの仕様と要求だけを決めます。これは「開発途中に仕様や設計の変更があることは当たり前」という前提があるからです。おおまかな計画のみでは、その後の実装フェーズで問題が起こりそうですが、仕様が決まっていないと途中で変更があっても臨機応変に対応できるため、顧客のニーズに最大限応えることが可能です。

<イテレーション>
だいたいの仕様と要求を決めたら、イテレーション(iteration)と呼ばれるサイクルを繰り返して開発を進めます。イテレーションとは「反復」という意味で、小さな単位に分けられた開発を「計画」→「設計」→「実装」→「テスト」と行いながら、機能のリリースを繰り返します。
イテレーションは1週間~2週間ごとが一般的で、イテレーションごとに毎回機能をリリースします。「イテレーション1」「イテレーション2」「イテレーション3」…と繰り返しながら、細かく開発を進めていきます。

アジャイル開発の手法

アジャイル開発と一言でいっても、その中には多くの手法が存在します。ここでは、アジャイル開発における代表的な3つの手法を解説します。

●スクラム
スクラム開発は、アジャイル開発の中でも有名な手法で、開発を進めるためのフレームワークを指します。スクラムとはラグビーで肩を組んでチーム一丸となってぶつかり合うフォーメーションのことで、その名の通り、チーム間のコミュニケーションを重視している点が特徴です。
メンバーが自分たちで計画を立案し、イテレーションごとに開発の進行に問題がないか、制作物は正しい動きをしているのかを精査します。そのため、メンバー間でのコニュニケーションが重要で、コミュニケーションが不十分になると、イテレーションの制作物としてリリースができなかったり、リリースした機能が正常な動きをしなかったりするといった問題が生じる可能性があります。スクラムを組むように、チーム全員が協力して開発を進めることが大切です。

●エクストリーム・プログラミング(XP)
エクストリーム・プログラミング(Extreme Programming)はXPとも略され、事前に立てた計画よりも途中変更などの柔軟性を重視する手法です。
開発チームでは「コミュニケーション」「シンプル」「フィードバック」「勇気」の4つの価値を共有することを推進しており、中でも「勇気」は、開発途中の仕様変更や設計の変更に立ち向かう勇気を指しています。初期の計画よりも技術面を重視しているため、プログラマー中心の開発手法といえます。

●ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(Feature Driven Development)は、実際に動作するソフトウェアを適切な間隔で繰り返す手法で、顧客にとっての機能価値(feature)という観点で開発が進められているのが特徴です。
実際に動作する機能を開発するには、ユーザー側のビジネスの見える化を行います。そのため、事前にビジネスモデリングを実施する必要があります。

アジャイル開発が普及しづらい理由

 スクラム開発者のひとりでありscrum.org代表者のKen Schwaber氏は自身のブログの中でスクラムの思想を中国で普及させる上での文化の壁について次のように述べています。

 アジャイルでは、財布の紐を握る顧客に対して不都合な事実を伝えられることが必要になります。アジャイルテクニックが開発された西洋に比較して、服従や尊敬という、“顔を立てる”ことを重視するアジアの文化ではこれが決定的に困難なのです。

 このように予測可能性を期待する人たちはアジャイル環境において問題に直面することになるという考えがある限り、常に堅実な姿勢が求められがちな日本のプラミング界でのアジャイル開発浸透は困難と考えることができますね。


この記事が気に入ったらサポートをしてみませんか?