アジャイル開発を開発者以外にも2ページ程度のサマリで説明するというのに挑戦してみました。なるべくアジャイル開発の文脈で使われる言葉(適応型とか)を使わないようにしてみたのと、従事する人でなく決定権を持つ人向けに中身よりも得られる価値などを中心に記述しました。(記事の最後でPDFを皆さんの会社でも使えるようクリエイティブコモンズで公開してます。)
目次
アジャイル開発に関するサマリ
アジャイル開発(アジャイルソフトウェア開発)とは、ソフトウェア開発における開発手法の総称です。その特徴は、日々変化するビジネスや市場環境に応じて、作るべきソフトウェアも変化させていくことが出来る点です。
アジャイル開発におけるゴールと狙いは、IT投資に対するソフトウェアから得られる価値を最大化することです。コストパフォーマンスの最大化であり、ただソフトウェアを作ることだけが目的ではありません。
1.誕生の経緯と求められる背景
90年代までの開発では、事前に立てた計画を遵守することが正しいソフトウェアを手に入れる方法だと考えられていました。そのためにドキュメントとルールを沢山用意し、分業することで人の入れ替えによるリスクも抑えました。
しかしオープンな技術が登場し、ビジネス要件が複雑化していくに従い、プロジェクトの終盤になってリスクが顕在化する事例が増えてきました。一度作ってみないと予想した通りに作れるか、予想したものが手に入るかわからないのです。
それを回避するために、反復型と呼ばれる開発手法が登場します。しかし、沢山のドキュメントとルールを作りながら、プロセスを繰り返すのは無理がありました。繰り返しの中で変化に対応できる、軽量化された開発手法が必要とされたのです。
2.導入のメリットと効果
アジャイル開発を導入することによるメリットと効果は以下の通りです。
- 変化するビジネスの状況に応じて、本来必要とされるソフトウェアが手に入る
- ソフトウェアをどう作るかでなく、それが産み出すビジネス価値に集中できる
- 継続的に学習し、自らプロセスを改善していけるチームを持つことができる
ソフトウェアは一度開発して終わりという考え方ではなく、ビジネスのPDCAサイクルにあわせて継続的に改修を加え、企業価値の向上に繋げることが本来果たすべきソフトウェアの価値であるという考えに基づいています。
ソフトウェアを開発するにあたって、予見的に全ての機能を最初に決めてしまう必要はなくなり、少しずつ階段を登っていくように、必要なソフトウェアを手に入れていくことが出来ます。
3.アジャイル開発の進め方
アジャイル開発では、数週間ごとに実際に動くソフトウェアを一部の機能から順に作っていきます。工程の一部を順に進める訳ではないので、分業せずに開発者がソフトウェアを作るために必要な作業をすべて行います。
動くソフトウェアを短期間で開発をするために、コミュニケーションコストを下げるために少人数の体制をとり、仕様に関する責任者もチームに同席し、ドキュメントなどを極力減らすことで必要な工数の効率化を行います。
実際にユーザにとって価値のある機能を、数週間単位で肉付けをしていくにあたり、既に動いている部分の改修にかかる保守性を高めていくことを、テストの自動化などといったベストプラクティスを用いて実現します。
4.導入方法と目指すべき姿
「アジャイル開発」というのは総称であり、実際には「エクストリームプログラミング」や「スクラム」といった具体的な手法が多数存在しています。アジャイルソフトウェア開発宣言(参考URLを参照)に則った開発手法のことを指します。
最終的には、自社の組織にあわせた手法に練り上げ、常に現場からの改善をもって自己プロセスの見直しを行えるような組織文化を作り上げることを目指しますが、最初に導入するにあたっては、既にある手法に従って進めていくことが肝要です。
アジャイル開発の多くの手法は「価値」「原則」「プラクティス」という構造で表現されています。最初の段階では、具体的な方法として記されている「プラクティス」に従って開発を行うと良いでしょう。
(プラクティスの例)
- ペアプログラミング(2人一緒に開発を行い、レビューを常時実施する)
- テスト駆動開発(自動で実行できるテストから先に作成し品質を高める)
- ふりかえり(反復ごとにチーム全体でプロセスについての改善を行う)
5.導入の際に発生する課題と対策
導入する際に、従来からのビジネスモデルや既存の組織評価の中で行おうとするとうまくいかないことが多い。従来が「ソフトウェアの完成を目指す」のに対し、アジャイル開発では「継続してソフトウェアを改修し続ける」考え方だからです。
システムベンダーに発注する場合でも、従来通りであれば、要件に対しての見積りが行われ、それを確実に作ることを目指してしまいます。それでは、継続的な改修という訳ではなくなります。
アジャイル開発を本当に導入することを考えるのであれば、ソフトウェアを作ることにフォーカスするのではなく、そのソフトウェアがどういった価値を産み続けるのかを考えた組織やビジネスモデルに変えていかねばなりません。
参考URL
・アジャイルソフトウェア開発宣言 = http://agilemanifesto.org/iso/ja/
この資料は、再配布できるようにPDF化して、クリエイティブコモンズで公開します。ご自由にご利用ください。ダウンロード:アジャイル開発に関するサマリ
This work is licensed under a Creative Commons Attribution-NoDerivs 2.1 Japan License.