技術解説
変化の激しいビジネスニーズに迅速に対応する開発手法「アジャイル開発」
「アジャイル開発」とは、システムやソフトウェア開発における開発手法の1つで開発~リリース~改善のサイクルを短期間で繰り返していくことにより全体の完成度を高めていき、顧客の要求に柔軟に対応しながら速いスピードで提供できるのが特長です。変化の激しいビジネスシーンに対応し、より迅速なソフトウェア提供を可能にする技法として、近年注目を集めています。
常に改良や新機能の追加が必要なWebアプリケーションの開発に適しているとされる、アジャイル開発のメリットとデメリットをご紹介します。
ウォーターフォール型開発手法とアジャイル開発の違いとは
従来のソフトウェア開発には、「プロトタイプ」や「スパイラル」など、さまざまな手法が開発現場で実行されてきていましたが、その中でも主流は「ウォーターフォール」による開発でした。
ウォーターフォール型の開発は、初期段階で決定した全体の機能設計・計画に従って開発・実装していく手法として活用され、仕様変更が発生しにくく、工程ごとに分業化する必要がある大規模なシステム開発に適していました。
その理由は、配信日やプロジェクトの完了日があらかじめ決められていて、さらに製品の最終仕様が開発の途中で変更されないなどの条件が揃っていて、緻密な計画を基にした開発が可能であったからです。
しかし、ビジネス環境におけるITの重要性・役割の比重が高まった現在では、今まで以上に市場のニーズに即したサービスを短期間で開発し、ジャスト・イン・タイムでリリースすることが求められます。そのための開発手法の1つが「アジャイル開発」です。
「機敏な」という意味を持つアジャイル(Agile)と名付けられたアジャイル開発では、スピーディーであることはもちろん、柔軟性のある開発を行えることが特長です。ウォーターフォール型のように、計画に沿って各機能を順に開発するのではなく、優先順位の高い機能から開発・リリースを行い、改善と機能追加を繰り返していくことが、両者の大きな相違点と言えます。
アジャイル開発の本質を「アジャイルソフトウェア開発宣言」から理解する
アジャイル開発は、2001年に米国ユタ州で作成された「アジャイルソフトウェア開発宣言」からスタートし、現在にいたるまで行われているシステムおよびソフトウェア開発の手法です。
実はアジャイル開発は「手法」ではなく「状態」であると説明する人もいます。では、実際のアジャイルソフトウェア開発宣言の公式日本語訳を見てみましょう。
アジャイルソフトウェア開発宣言
私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
©2001, 上記の著者たち
-出典: http://agilemanifesto.org/iso/ja/manifesto.html
この宣言は、この注意書きも含めた形で全文を含めることを条件に
自由にコピーしてよい。
上記を要約すれば、アジャイル開発の本質が見えてきます。開発プロジェクトにおいては、「プロセスやツールよりも顧客満足度を最優先とし、関係者間でのコミュニケーションや状況に即した柔軟な対応を重視することで、よりサービスを迅速に提供していく。」ということがアジャイル開発であると言えるでしょう。
アジャイルの「何が」時代に即しているのか
アジャイル開発には多くの手法や方法論があり、プロセスもそれぞれ異なりますが、一般的なアジャイル開発プロセスの概要は以下となります。
計画 | 1週間や1カ月など一定時間の反復期間を設け、その期間内にどの機能を開発対象とするかを計画。優先順位付けと開発規模の見積もりを実施 |
---|---|
開発 | 機能ごとに設計、実装、テストを実施。開発者は役割を分担するのではなく、テストや実装といった役割をすべて担当 |
リリース | テストをクリアした機能・サービスをリリース。その後、機能拡張を目的に開発を継続するか、十分と判断し終了するかを判断 |
上記を踏まえて、アジャイル開発のメリットとデメリットをまとめてみます。
まず、アジャイル開発の主なメリットとしては、以下が挙げられます。
開発サイクルが早い:「アジャイルソフトウェア開発宣言」にもあるように、計画よりも変化への適応を重視し、顧客とのコミュニケーションをとりながら短いスパンでテストと実装を重ねるため、従来型の開発手法よりも短期間で開発サイクルを回すことができる。
柔軟な対応が可能:設定した期間ごとに開発対象の機能を決定し、変更の可能性があるものについては、次回以降の期間に決定するため、トラブル時の修正や仕様変更などが容易。
品質や満足度を向上させやすい:計画段階では詳細な仕様を決定せず、開発中に顧客・ユーザーとコミュニケーションを取りつつフィードバック・確認しながら開発を進められるため、品質の検証やニーズの変化にも最大限応えられ、高い満足度が得られやすい。
冒頭でも説明したようにウォーターフォール型と比較すると、アジャイル開発がいかに現在のビジネスニーズに即した手法か理解いただけるかと思います。
アジャイル開発のデメリットとしては、計画初期に仕様を厳密に決めないために開発途上で改善を繰り返し当初の計画からずれてしまったり、ドキュメント化よりもソフトウェア開発を重視することでプロジェクト全体の進捗状況などが把握しにくいことがデメリットとして言われています。ただし、プロジェクト管理ツールによって、可視化することでこれらのデメリットをカバーする方法も出てきています。
このようにアジャイル開発は、開発途中に仕様の変更や追加が可能である点が大きなメリットでWebサービスやアプリといった仕様変更が生じやすい開発に適していると言えます。
一口にアジャイル開発といっても、スクラム、XP(エクストリームプログラミング)などさまざまなバリエーションがあり、プロセスも違えば、それぞれメリット・デメリットがあります。プロジェクトや目的に応じて開発手法を検討・選択することが重要です。