お役立ちコラム

【アジャイル経営のススメ】第2回 アジャイル型開発とは?


■「アジャイル型開発」をもう一度復習してみよう

 最初は、前回述べたアジャイル型開発の復習です。
 アジャイル型開発とは、下のような進め方をする方式です。

 まず、開発担当者やプログラマーなどが数人程度の開発グループを組みます。
 そして1サイクル2週間程度で、企画 ⇒設計 ⇒実装(プログラミング) ⇒テスト を行い、完成品をリリースします。このサイクルを「イテレーション」と呼びます。
 このイテレーションを何回も繰り返して行い、徐々に製品の完成度を上げていくのです。

■アジャイル型開発で出てくる要素

 アジャイル型開発というのは、個性的な開発方法です。まず、開発に必要な少人数のメンバーが集められます。プログラマー、テスター、インターフェイスのデザイナー、プロダクトマネージャー、顧客側の担当。といった感じですが、それぞれがウォーターフォール型のように厳密に役割が決まっているわけではありません。
 常にそれぞれの役割はあいまいで横断的です。つねに共同し、密にコミュニケーションを取りながら、作業を行っていきます。

(1)ユーザーストーリー
 まず、ウォーターフォール型の「要件定義」にあたるものは、「ユーザーストーリー」と呼ばれます。これは、顧客が実現したいこと、顧客にとって価値があることを簡単な文章にまとめたものです。
 ユーザーストーリーは、小さなカード(付箋でもかまいません)に、短くまとめられます。それらをたくさん書き、ブレインストーミングで重要さや、開発に時間がかかる程度でグルーピングします。
 たとえば、このユーザーストーリーは簡単に開発できそうだから1ポイント、これは中くらいだから3ポイント、これは開発に長くかかりそうだから5ポイントというように分類しておきます。

(2)イテレーション(iteration)
 「反復」といった意味です。イテレーションは、アジャイル型開発の1サイクルという意味です。1回のイテレーションが終わるごとに何らかの完成物のリリースを行います。1イテレーションのサイクルは、おおむね1週間から2週間といったところです。

(3)ベロシティ
 そのチームが、どれくらいの開発速度を持っているかの尺度です。1回のイテレーションで、どれくらいのユーザーストーリーを完了できたかで図られます。たとえば、2週間のサイクルで、1ポイントのストーリーを3つ、5ポイントのストーリーを1つ完了させられたら、そのチームの開発速度は8ポイントとなります。ベロシティは、次のイテレーションでの開発計画の目安になっていきます。

(4)スコープ
 「範囲」というような意味です。プログラミングでは、ある変数などの名前を参照できる範囲のことを言います。アジャイル開発では、全体の作業内容のように考えればよいでしょう。ユーザーストーリーの合計値と考えてもよいかもしれません。また、見積りなどで、あらかじめスコープの上限が決まってくることもあります。

■アジャイル型での日程見積り

 このような要素から、アジャイル型の日程見積りは立てられていきます。
たとえば、達成すべきユーザーストーリーの合計、つまりスコープが100ポイントで、1回のイテレーションでこなせる量が10ポイントだとしたら、システムの完成までは100/10=10で、10イテレーションがかかることになります。
 ただし、開発作業には、期限がつきものです。完成までに20週間(10イテレーション)、ほぼ4ヶ月かかるとして、その間にこなせる量は100ポイントです。ただし、当初に決めた100ポイントのユーザーストーリーに、後で何らかの機能の追加要請があるかもしれません。そうした場合には、全部で120ポイントの作業をこなす必要が出てきます。
 このような場合、チームのベロシティは1イテレーションで10ポイントなので、期間を長くするか、期限内に納めなければならない場合は、完成させる機能を減らす必要があります。このタイミングで削減された機能は、いずれ余裕が出た時に完成させるリストに移したりします。
 こうした意味で、各ユーザーストーリーは、最初に優先順位を立てておくことが重要です。
 アジャイル型開発では、優先順位が高いものを先に実装していき、低いものについては後回しにしていきます。こうしたスコープの柔軟性が、アジャイル型開発の特徴でもあります。

■アジャイル型でのミーティング

 アジャイル型開発は、コミュニケーションが密なことも特徴です。1つのイテレーション(サイクル)の間に、いくつかのミーティングを行い、完成度を確かめていきます。
(1)事前ミーティング
 イテレーションが始まる前のミーティング。行う予定のユーザーストーリーの準備が整っているか、適切かを確認します。
(2)イテレーション計画ミーティング
 リリースが終わった後に、次回のイテレーションで何を行うか、顧客と一緒に話し、計画するミーティングです。
(3)日々の振り返り
 定期的に集まって、10分程度で行う小さなミーティング。進捗状況や達成度を簡潔に見直し、皆で共有します。
(4)デイリースタンドアップ
 重要な情報をチーム内で共有することを目的とした集まりです。朝礼のようなもので、毎朝、昨日やったことと今日やること、重要な伝達事項を短く話します。

 ただ、ミーティングが多くなり過ぎると、実際の作業時間が削られ、本末転倒になってしまいます。ミーティングは適宜まとめるのもよいでしょう。

 このようにして、アジャイル型開発は進んで行きます。
 次回は、また別の側面から、アジャイル型開発について説明していきたいと思います。