既存のウォーターフォール開発に限界を感じているが、アジャイル開発は難しそうでなかなか踏み切れない……。そうしたプロジェクトチームにぜひ試していただきたいのが「JIRA Agile」です。今回は、JIRA Agileを使って実際にプロジェクトを進めていく流れを解説します。
アジャイル開発の実践をサポートするJIRA Agile
顧客の要求に柔軟に対応しつつ、変更要求によって発生するリスクを最小限に抑えるために、徐々に広まりつつあるのが「アジャイル開発」です。当初は自社で展開するWebサービスやソーシャルゲームの開発など、比較的規模が小さい開発現場で使われることが多かったアジャイル開発ですが、昨今では大規模システム開発にも適用する事例が増えつつあります。
このアジャイル開発を実践するには、従来のウォーターフォール型の開発手法とは異なる考え方、そしてアジャイルならではのプロジェクトの進め方について理解しなければなりません。インターネット上にはアジャイルについて解説したコンテンツが無数にあり、また書籍も数多く発行されていますが、それらだけを見て実際にアジャイル開発に臨むのは難しいでしょう。そこでぜひ活用したいのが、アジャイル開発のノウハウを詰め込んだツールです。
アジャイル開発を管理するツールには、オープンソースのプロジェクト管理ツール「Redmine」とそのプラグインである「Backlogs」の組み合わせや、Apacheなどのオープンソースプロジェクトで活用されている「JIRA」のプラグインである「JIRA Agile」などがあります。ここでは、実際にJIRA+JIRA Agileでアジャイル開発を進めていく流れを見ていきます。
短期間の開発を繰り返すことで手戻りのリスクを回避
アジャイル開発の手法はいくつか存在しますが、その中でも多くの開発現場で使われているのが、チームでプロジェクトを進めるためのフレームワークである「スクラム(Scrum)」です。JIRA Agileはこの手法でアジャイル開発を進めるように設計されています。
このスクラムを含むアジャイル開発に共通する特徴として、1週間から2週間、あるいは1ヵ月といった短い期間で開発を繰り返し、その期間ごとにユーザが利用できる機能を提供していくことが挙げられます。従来のウォーターフォール型の開発では、ユーザは実際に動作するソフトウェアをプロジェクトの終わり間際まで見られないため、開発者はそのときまでユーザからのフィードバックを得られないという問題がありました。これに対してアジャイル開発では、短い期間で開発を繰り返し、そのたびに実際に動作するソフトウェアをユーザに見せてフィードバックを得ます。これにより、プロジェクトの終わり間際に修正依頼が多発して大きな手戻りが生じ、プロジェクトが遅延してしまうといったリスクを回避できます。なおスクラムでは、この繰り返す開発期間のことを「スプリント」と呼んでいます。
「プロダクトバックログ」と「スプリントバックログ」で作業すべき内容を管理することもアジャイル開発の特徴でしょう。いずれのバックログも作業すべきタスクをまとめるためのものですが、プロダクトバックログがプロジェクト全体のタスクを羅列したものであるのに対し、スプリントバックログはそのスプリントで実施するタスクをまとめたものです(図1)。まずプロジェクト全体のタスクをプロダクトバックログにまとめ、そこからスプリントで開発するものをスプリントバックログに抜き出していくというのが実際の流れです。
ストーリーポイントの割り当てでスプリント単位の作業量を計測
JIRA Agileにおいてプロダクトバックログに相当するのが「計画ボード」と呼ばれるインターフェースです。まずここにタスクを追加し、そこからスプリントで実行するタスクを抜き出してスプリントバックログを作成していきます。
タスクを登録する際に重要なのが「ストーリーポイント」の割り当てです(図2)。ストーリーポイントは、タスクを実行するのに必要な作業量を表す相対的な値です。この値は、特定の単位を持つものではありません。たとえば短時間で完了する簡単なタスクには「1」、その倍の作業量だと思われるタスクには「2」、さらに難しいタスクには「3」を割り当てるというように、それぞれのタスクのストーリーポイントを見積もって設定します。
このストーリーポイントを割り当てることが重要な理由は、1回のスプリントで実行できるタスクを見極めるためです。たとえば1回のスプリントで、ストーリーポイントが「1」のタスクを2つ、「2」のタスクを1つ消化できたとしましょう。そうすると、1スプリントあたりの作業量は4ストーリーポイントということになり、次回のスプリントでも同じだけのストーリーポイントを消化できるという前提で、作業すべきタスクを選択することが可能になります。
JIRA Agileでは、このようにして作成したタスクを「バージョン」や「エピック(カテゴリ)」で分類するためのしくみを用意しています(図3)。洗い出したタスクを複数のバージョンに割り当てる、あるいはサーバサイドとフロントサイドでタスクをカテゴライズする、といった場面で便利でしょう。
ボードに登録したタスクはドラッグ&ドロップで上下に動かすことができ、これによって優先順位を指定します。優先順位が高いものを上にすれば、処理すべき順番を一目で把握できます。
プロジェクトの進捗状況を一目で把握できる“かんばん”
このようにボードにタスクを登録したら、スプリントバックログの作成に進みます。画面右にある「スプリントの作成」をクリックすると、ボードの中に「スプリント1」という項目が現れます。登録したタスクをここにドラッグ&ドロップで移動し、そのスプリントで作業する内容を決定します。最後に「スプリントの開始」ボタンをクリックし、開始日と終了日を設定すれば、いよいよスプリントが始まります。
スプリントの実行中は、「作業ボード」でタスクの進捗状況を見ることができます(図4)。これはアジャイル開発で一般的に使われる「かんばん」と呼ばれるもので、左側に作業前のタスクが配置されており、作業を開始したらそのタスクを中央の「進行中」に、作業が完了したら右側にある「完了」にドラッグ&ドロップで動かします。これにより、どのタスクが進行中で、どのタスクが完了しているのか、スプリントの進捗状況が一目瞭然になります。
標準で用意されているかんばんのステータスは3段階(作業前/進行中/完了)ですが、新たにステータスを追加したり、既存のステータスを削除したりすることもできます。たとえば、進行中と完了の間に、「ユーザ確認中」というステータスを追加できます。実際のチームのワークフローに合わせて設定すればよいでしょう。また、作業中にできるタスクは3つまで、というようにそれぞれのステータスのタスク数に上限を指定したり、ユーザやエピックごとにタスクを分割するスイムレーンを設定したりすることもできます。
バーンダウンチャートやベロシティグラフも装備
スプリントにおけるストーリーポイントの消化状況を把握できる「バーンダウンチャート」もJIRA Agileには用意されています(図5)。残りのストーリーポイントがどれだけあるのかを時間軸で見ることができるため、このチャートをチェックすればスプリントバックログに登録しているタスクをすべて完了できそうか、それともタスクが残りそうかを把握できます。
もう1つ、重要なレポート機能が「ベロシティグラフ」です。ベロシティは、チームが1回のスプリントで消費したストーリーポイントで、スプリントにどの程度のタスクを割り当てるかを考えるときに役立ちます。一般的には、過去数回のベロシティの平均値をそのチームが1回のスプリントで消化できるストーリーポイントだととらえ、それに応じてスプリントバックログを作成します。スプリントへのタスクの割り当て時に、このベロシティグラフの内容が参考になるでしょう。
なお、JIRA Agileに登録したプロジェクトやタスクはJIRA本体にも同時に登録されるので、前回解説したとおり、タスクごとに用意されたコメント欄を使ってメンバーと議論したり、豊富なレポート機能を使ってプロジェクトをチェックしたりすることができます。つまりJIRAのデータベースを使いつつ、スクラム開発のためのインターフェースを新たに追加するのがJIRA Agileだというわけです。JIRAが備える豊富な機能を使いながらアジャイル開発を進められることも、JIRA Agileの大きな魅力です。
ここまで解説したとおり、JIRA Agileはプロダクトバックログの作成やスプリントバックログへのタスクの割り当て、かんばんやバーンダウンチャートによる進捗状況の確認など、スクラムで進められているプロジェクトの管理に必要な機能を一通りそろえています。JIRA Agileで提供されている機能を一種のテンプレートとして利用すれば、アジャイル開発を始める際、プロジェクトの進行を管理するのに役立つでしょう。
リックソフトのサイトでは、JIRA Agileの体験版をダウンロードできます。ぜひお試しください。