アジャイル開発についてまとめてみる


今やっているボランティアの開発で限られた人数の中で効率よく開発していくためにどうしたらいいのか模索中で、アジャイル開発という開発手法のノウハウが使えそうだったので、とりあえずアジャイル開発とは何なのか、どの様に開発するのかなどをまとめてみることにした。
全部を取り入れることは難しそうだから取り入れられる部分、自分で重要だと思う部分だけを吸収していこうといったスタンスである。

アジャイル開発とは

アジャイル開発はソフトウェアの開発手法の一つである。
計画, 設計・開発・テストまでの工程を機能単位の小さなサイクルで繰り返すことにより開発を進めていく。

アジャイル開発にはいくつかの手法がある

アジャイル開発の中にも、いくつかの開発手法に分かれる様である。

1.スクラム
2.XP(エクストリーム・プログラミング)
3.FDD(Function Driven Development)(ユーザー機能駆動開発)

1.スクラム

この手法がアジャイル開発の中で最も有名な手法な様。ここでは, チームは自ら計画, 開発状況, 品質などを確認しあいながら情報共有して進めていく。デイリースクラムと呼ばれる朝会などをはじめとするコミュニケーションを増やして開発を進めることが特徴

2.XP

3つの手法のうち途中で仕様変更が起こった場合に柔軟に対応できるのがこのXPのようである。
このXPでは要件定義からテストまでの行程を繰り返す中で顧客とのコミュニケーションを頻繁に行う事が特徴。
クライアントを開発のメンバーの一人として捉え, オンサイト顧客と呼ばれこのオンサイト顧客との調節中に生じた仕様変更の要望を受け入れながら少しずつ完成を目指していく。
このXPはプログラマーを中心とした手法である。

3.FDD

ユーザー目線で見た時により品質の高い機能を開発する事を重視した手法。
このFDDでは「機能に対してユーザーが本当に求めることは何か」を明確にする事が必要になる。その上で機能ごとにチームを分け開発していく。
ユーザーがソフトウェアの各機能に求める根本的な要望に寄り添うことを重視するので
品質が高い機能を開発しやすい手法と言われる。

この中でとりあえずスクラムを採用したいと思うが, ほぼ一人での開発になるから 1人スクラム開発という名前で自分で自分の状況を定量的に把握, 改善するために使用する感じになりそう。

実際にスクラム

どの様にスクラム開発を進めていくのかをまとめてみる

機能や要求を並べ替える

実現したい事を実現する順に並べる。この並べたものはプロダクトバックログという名前でリスト化する。この中で上位の項目は見積もりなどを済ませ, 常に最新に保っておく。
プロダクトバックログの項目の順番は、その項目が実現されたときに得られる価値やリスク、必要性などによって決定する。この順位の高いものから開発をしていく。

開発する

ここでの役割はプロダクトバックログを元に項目順に開発していく。

  • 短く区切って繰り返す
    ある期間で区切りながら, 繰り返し開発をおこなっていく。この固定の期間をスプリントと呼び, このスプリントの期間内で計画, 設計, 開発, テストを行う

  • 頻繁に計画する
    スプリントに入る前にそのスプリントで何を作るのか, どのように作るのかを計画する必要がある。この計画のことをスプリントプランニングと呼ぶ。
    このスプリントプランニングでは二つのトピックを扱う
    ①:スプリントで何を達成するか

    • ここではそのスプリントで達成するプロダクトバックログを選ぶ。選択するバックログの個数はそれぞれの項目の見積もりサイズなどを元に決定する。

    ②:そのスプリントの目標を簡潔にまとめる。

    • これはスプリントゴールと呼ばれ, 開発者はなぜここで選択したプロダクトバックログの項目を開発するのかを明確にする。

    ③:事前準備。

    • この事前準備では, 選択したプロダクトバックログの項目をより具体化し, 疑問点を洗い出し, 項目は何を持って完成なのかを明らかにする。項目を自分達のたつかえるサイズに分割する。この作業のことをプロダクトバックログリファインメントと呼ぶ。このリファインメントはスプリントの10%で行うのが一般的なよう。

    ④:開発チームがどうやって選択したプロダクトバックログ項目を実現するか

    • 選択したプロダクトバックログ項目ごとに具体的な作業を洗い出し, 作業計画を立てる。 ここの作業は1日以内で終わるように作業を分割することが一般的らしい。
スプリントで完成させる。

ここでは, スプリントで作成した成果物の項目と, プロダクトバックログの項目を合わせたものを作成し, これはインクリメントと呼ばれる。スプリントが終了後完成し, 正常に動作しなければいけない。