この記事では、昨今注目を集めているアジャイル開発について紹介したいと思います。
アジャイル開発とは?
アジャイルとは『すばやい』『俊敏な』という意味の言葉で、反復 (イテレーション) と呼ばれる短い開発期間を繰り返すことで、リスクを最小化しようとする開発手法の一つです。アジャイル型開発手法と一口に言っても、いくつかの種類があります。
主なアジャイル開発手法としては、「XP(eXtreme Programming)」と「スクラム」が最も使われています。他にも「モデル駆動開発(MDA)」や「FDD」などもアジャイル開発手法の一つになります。
アジャイル開発を実践している代表的企業を紹介します
エンジニア就活内でアジャイル型の開発手法を積極的に採用している企業の一覧も確認することができます。
また実際の現場におけるアジャイル型の開発を体感してみたいという場合には、エンジニアインターンを通じて、実際に体験してみることもできます。
さらに知名度の高い大手企業でも積極的取り入れられつつあることを紹介したいと思います。
日本IBM株式会社
社内でRTCというツールを開発したことにより、個人毎の作業進捗管理はもちろん、レポートの自動生成とリアルタイムな可視化で、工数削減とプロジェクトの健全性を確保することを可能にしました。
また、状況に対応したコミュニケーション、イベント・フィード、チャット、自動トレーサビリティーなどの機能により、Eメールだけでは難しかった地理的に分散したチームをサポートすることに成功しました。のちにRTCは様々な企業で導入されることになります。
マイクロソフト株式会社
社内の物理的な組織はPMグループ、開発グループ、テストグループなどそれぞれの役割別に縦割りになっていたため、これらの組織を横断する「Feature Crew」というバーチャルチームを構成しました。このチームごとにプロジェクトとなり、実際の開発方法はチームごとに選択して作業を進めました。
また、それぞれのチームには共通の鉄則があり、それらをクリアしながら最後のゴールまで確実にクリアすることが求められました。こうした取り組みにより、バグの発生を抑えたり、発生したとしても速やかに収束することができるといった効果をあげています。
アジャイル開発以外の開発手法はないのか?
ウォーターフォール型開発の特徴
ウォーターフォール型開発の基本的な考え方は、『区切られた全ての工程が正しい』という前提にあります。 この前提を守りながら進めるため、プロダクトはプロジェクト立ち上げ当初作成した要求仕様を忠実に実装し、その仕様を全て満たした時点で開発完了となります。
当初の要求仕様通りに進むという特徴から、契約時に契約内容、責任範囲が明確となるメリットがあります。しかし、要求仕様作成時に要求ミス・漏れがあった場合や、開発途中で要求に変更があった場合、別途仕様変更として追加費用や開発期間が発生する可能性があるというデメリットがあります。
アジャイル型開発の場合は、このように工程分けされて進むのではなく、プロジェクトは変化するものと決め、イテレートと呼ばれる小さなサイクルを何度も繰り返し、プロジェクトが生み出すプロダクトを最大化することを重要と考えます。
そのため、当初計画された機能を100%完成することは困難ですが、プロダクトがリリースされる時点で、顧客を含む全てのステークホルダーが「最大の価値がある」と思えるものが作成されることも事実です。
スクラムの特徴
プロダクトオーナーを筆頭にスクラムマスタ、チームのメンバーで構成され、毎朝のデイリースクラムに始まり、通常1~4週間を一区切りとして先に会議やリリース日といった予定を立てます。(これをスプリントといいます。)このスプリントを繰り返しながらリリースを目指します。スプリント中は基本的に機能の追加や変更を行うことはできません。
そしてスプリントレビューの後、振り返りという会議を行い、問題点やメンバー同士で問題点などを話しあいながら次回のプロダクトに生かします。スクラムのフレームはとても軽量で、理解も容易ですが、実際は習得が困難とも言われています。
アジャイル型開発との違いは、それぞれのチームのリーダーの役割が重要になってくるということです。今までであればリーダーが行ってきたことをできる限りチーム自身で行うようにするという、自ら考えて行動するチームができあがっていきます。
アジャイル開発のメリット・デメリットとは?
メリット
- 最初から全部作ろうとする必要がない。
- 途中で変更することが可能。
- リリースまでの期間が短い上に追加の変更などにも柔軟に対応。
- 顧客を巻き込みながらチームとしても機能するため、距離が縮まる。
デメリット
- 具体的な仕様の定義が曖昧になりがち。
- 個人ごとの解釈にも差があり、実践できる人がいないと困難。
などが挙げられます。
少人数向けという捉え方が一般的なアジャイル開発ですが、今回ご紹介したように現在では大企業でも積極的に取り入れられ、社内ツールの開発など、新たな価値を生み出すケースも出てきています。
アジャイル開発に限らず、どのやり方にするにしても個人ごとに向き不向きもあることと思いますので、一概にどれが良いと決めつけることはできないのかも知れませんが、それぞれの優れた点を取り入れつつ、誰もが取り組みやすい開発方法が今後出てくることに期待を寄せたいと思います。