アジャイルソフトウェア開発 ~ 基本情報と入門記事などのまとめ
変化に対応しやすく、反復的に開発していくソフトウェア開発の手法の入門記事、プラクティスの解説記事など
アジャイルソフトウェア開発は、ソフトウェア開発手法の1つです。開発者同士の協力や顧客とのコミュニケーションに重きを置きつつ、早い段階から小さくとも動作するプログラムを作り上げ、それを迅速な反復により改善していくことで完成へ近づけていく手法です。
アジャイルソフトウェア開発にはいくつかの手法があります。代表的なものとしては、XP(Extreme Programming)やScrumなどが挙げられます。
アジャイルソフトウェア開発宣言
アジャイルソフトウェア開発には厳密な定義はありませんが、その精神を表す「Manifesto for Agile Software Development」(アジャイルソフトウェア開発宣言)が、 アジャイルソフトウェア開発を提唱する人たちにによって公開されています。
アジャイルソフトウェア開発宣言の日本語訳
アジャイルソフトウェア開発に関する団体
アジャイルソフトウェア開発の団体として、米国にはAgile Allianceがあります。
日本には、アジャイルプロセス協議会があります。
また、アジャイル開発手法の1つであるScrumにはScrum Allianceがあり、公認のScrum Masterの育成やセミナーなどを行っています。DSDM ConsortiumではDSDMの普及啓蒙を目指しています。
- Scrum Alliance -Transforming the World of Work (英語)
- DSDM Consortium - Enabling Business Agility (英語)
アジャイルソフトウェア開発の入門記事
アジャイルソフトウェア開発が何であるかを手短に把握するのには、Wikipediaと@IT情報マネジメントの用語解説が便利でしょう。
もう少し詳しい、アジャイルソフトウェア開発の入門記事を読みたいのであれば、ITProのアジャイルをゼロから学ぶやThinkITのアジャイル開発を問い直すなど、以下の記事をおすすめします。
- アジャイルをゼロから学ぶ:ITpro
- [ThinkIT] 第1回:アジャイル開発を問い直す (1/3)
- アジャイルなソフトウェア開発とは - オブジェクトの広場
- ソフトウェアの新たな開発手法、「アジャイル開発」って? - 今さら人に聞けないITトピック - ZDNet Japan
- 連載 Web 2.0時代のソフトウエア開発手法---目次:ITpro
@ITの特集は.NETプログラマー向けに書かれていますが、内容は一般的なアジャイルソフトウェア開発を理解するのにも適した記事になっています。一読をおすすめします。
- @IT:特集:.NET開発者のための開発プロセス入門(前編) アジャイル開発を導入できていない.NET開発者たちへ
- @IT:特集:.NET開発者のための開発プロセス入門(後編) .NET開発でアジャイルを導入するための実践テクニック
アジャイルソフトウェア開発は誰にでもできるものなのか? ドキュメントを作らなくてもいいのか? 選任のテスターは不要なのか? そんな素朴な疑問に答えてくれるのが、アジャイル勘違い集です。
アジャイルソフトウェア開発手法
アジャイルソフトウェア開発を実現する方法として、いくつかの開発手法があります。7つのアジャイル開発手法の実践ガイドでは代表的な7つの手法、XP、Scrum、リーンソフトウェア開発、機能駆動型開発(FDD)、ユニファイドプロセス(UP)、クリスタル、動的システム開発手法(DSDM)についてのそれぞれの解説と比較について紹介しています。
- 7つのアジャイル開発手法の実践ガイド(第1回) - japan.internet.com デベロッパー
- 7つのアジャイル開発手法の実践ガイド(第2回) - japan.internet.com デベロッパー
個々の開発手法について紹介していくことにしましょう。
XP(eXtreme Programming)
XPはアジャイルソフトウェア開発手法の中でもよく知られる手法で、ペアプログラミング、リファクタリング、テスト駆動開発などのプラクティスを備えています。
Scrum
Scrumは、最近ではもっとも採用されているといわれるアジャイル開発手法です。1カ月を1期間とするスプリント、毎日のミーティングなどを特徴とします。
RUP/UP(ラショナル統一プロセス/統一プロセス)
何百人ものエンジニアがかかわる大規模な開発プロジェクトにも応用できる開発手法として知られるのがRUP/UPです。RUPはIBMのラショナルがライセンス提供するUPの詳細版であり、同社のツールによってプロセスがサポートされています。
そのほかのアジャイル開発手法
アジャイルソフトウェア開発の参考書籍
アジャイルソフトウェア開発については、ネットよりも書籍と雑誌での情報の方が圧倒的に充実しています。関連書籍の点数は非常に多いのですが、ここでは入門と実践のためにそれぞれ1冊ずつを紹介しましょう。
最初の一冊を選ぶならこの本。ソフトウェア開発は何であり、なぜアジャイル開発が有効であるかが語られる前半。後半では代表的な手法としてXP、スクラム、RUP/UPなどが解説される(目次)
特定の手法の解説ではなく、チーム作りやコーディング、デバッグなどの実際の現場に対応した心得、プラクティスを教えてくれる。そしてできそうなプラクティスから取り入れられるあくまで実践的な本(目次)
アジャイルソフトウェア開発の実践
実際にアジャイルソフトウェア開発を行っている人たちのインタビューや実践例の記事を集めました。
- アジャイル実践者インタビュー(1) 発注者はアジャイル開発をこうみている - @IT
- アジャイル実践者インタビュー(2) アジャイル開発におけるプロセスの洗練 - @IT
- アジャイル実践者インタビュー(3) オフショアでアジャイル開発の実際 - @IT情報マネジメント
- [Think IT] 第1回:少人数によるアジャイル開発の事例 (1/3)
SaaSとアジャイル開発の組み合わせを実践しているプロジェクトの実例 - NAgileで始める実践アジャイル開発 - @IT
Microsoft.NETでフリーのツールを使ったアジャイルソフトウェア開発のやり方を、物語風に解説
アジャイルソフトウェア開発についての議論
アジャイルソフトウェア開発の有効性については多く語られていますが、一方でその使いこなしや位置づけ、そしてアジャイルソフトウェア開発の中身そのものも少しずつ変化してきています。
InfoQのこの2つの記事は、アジャイルソフトウェア開発の基本的な考え方であるマニュフェストでは表現し切れていない部分があることを指摘しているように思います。多くの人が、2本目のようにアジャイルは文化的な側面が大きく、採用できるかどうかは企業風土などによって左右することを感じており、その点についてはつねに議論のまととなっているようです。
萩本氏による上アジャイル開発と反復開発の落とし穴は、しばしば同列に語られがちな反復開発とアジャイル開発を明確に区分して解説することで、アジャイルソフトウェア開発を採用するときに陥りがちなポイントを読者に気付かせてくれます。
アジャイルソフトウェア開発は開発者同士や顧客との密なコミュニケーションを重視するため、同じ空間を共有することを強く勧める傾向にあります。そのため、オフショアや複数の拠点に分散した体制での開発に向かないと見られています。上記の連載ではこの点について日本IBMの藤井氏がそうした分散環境でも有効と思えるプラクティスやツールなどを紹介しています。また、「XP」で大規模なソフト開発は不可能か?は、少数精鋭に向いているといわれるXPでは大規模開発ができないのかどうか考察しています。
2008年に公開されたこの記事は、主に米国におけるアジャイルソフトウェア開発の現状や事例を紹介しています。