本稿ではアジャイル開発の代表的な手法である「スクラム開発」について開発します。ちなみに、アジャイル開発にはスクラム開発以外にも以下2つの手法があります。
XP(エクストリームプログラミング)
プログラマー中心のアジャイル開発であり、「コミュニケーション」「シンプル」「フィードバック」「勇気」という4つの価値を共有することで開発を進めていきます。仕様や要件の途中変更への柔軟性を重視したものなので、変更に立ち向かう「勇気」がとっても重要です。
FDD(Feature Driven Development:ユーザー機能駆動開発)
顧客にとっての機能価値(Feature)とは何か?に主眼を置いてプロジェクトを進めるアジャイル開発です。ユーザー側のビジネスの見える化を実施してから、実際に動作するソフトウェアを適切な間隔で開発していきます。
スクラム開発は上記2つの手法よりも主流です。しかしながら、スクラム開発自体は新しい手法というわけではなく、初めて世間に登場したのは1986年のことです。日本人経営学者の野中郁次郎氏と竹内弘高氏が発表した「The New New Product Development Game」という論文の中に、柔軟かつ自由度の高い開発手法として紹介されています。
スクラム開発を支える3つの支柱
アジャイル開発の特徴といえば「イテレーション(反復)」と呼ばれる短い開発期間(2週間~2ヵ月程度)を設けて、優先度の高い仕様・要件から開発していくことです。さらに、仕様・要件ごとに顧客を交えてテストを実行することで素早くフィードバックを得て、プロジェクト途中の仕様・要件変更にも迅速に対応します。
一方スクラム開発とは「チームマネジメントに注力したアジャイル開発」だと言えます。アジャイル開発を取り入れる最大の目的はソフトウェア開発の品質と生産性を同時に向上することです。これを実現するためには開発者同士のコミュニケーションが非常に重視されます。
スクラム開発では他のソフトウェア開発手法と比較して高頻度にミーティングや進捗会議を開催するため、自然と開発者同士のコミュニケーションが活発になります。スクラム開発を導入した直後は一時的に生産性が落ちても、開発者同士の連携性が高まるほどにソフトウェア開発の品質と生産性が向上していきます。
そんなスクラム開発を導入するためには、まず3つの支柱を立てることが大切です。
透明性
スクラム開発では「経験主義」といって、実際の経験と既知にもとづく判断によって新しい知識を得ることが大切です。この経験主義を実現するために、まずは「透明性」という支柱を立てることが重用です。透明性とは言い換えると「標準化」のことです。開発者全員が共通認識を持って開発を進められるように、開発ルールやそこで仕様する言語やツールに関して明確にしておきます。
検査
スクラム開発では「スプリント()」という開発単位が、アジャイル開発でいうところのイテレーションにあたります。スクラム開発の基本はスプリントごとの成果物や目標に対して頻繁な検査を行います。検査とはつまりミーティングや進捗会議のことです。これらを高頻度で実施することにより既存の問題をいち早く察知し、対処することが目的です。ただし頻繁過ぎると作業に妨げになるため、高いスキルを持つ検査者を置くことが大切です。
適応
スクラム開発にて発生した不備やトラブルが許容値を超えて、スプリントごとの成果物や目標に対して検査者が受け入れられないと判断した場合は、その構成要素や開発プロセスを適宜調整していきます。調整は可能な限り迅速に行ってプロジェクトからの脱線を防ぐことが大切です。
これら3つの支柱を実現するために、以下5つの価値基準を用いえることが大切です。
- 確約(commitment)…チームとしてのスプリントゴールや個人のタスクの完了を周囲に確約し、それに責任を持つ
- 勇気(cuorage)…失敗を恐れない勇気を持って挑戦し成功へと突き進む
- 尊敬(respect)…失敗したことを責めずに挑戦したことを称え、周囲な自分よりも優秀なのだと尊敬の念を持つ
- 集中(focus)…優先度の高いタスクにリソースを集中させ効率良く作業を進める
- 公開(openness)…常に情報交換を怠らずチームメンバー全員の共有することでコミュニケーション力を高める
スクラム開発のメリット
スクラム開発を導入するメリットについて解説します。
短い期間で最大限の効果を発揮できる
スクラム開発では1週間~4週間という短いスプリントを設定します。その中で優先度の高い仕様・要件から開発に取り組みます。各スプリントごとに計画、設計、実装、テストを繰り返すことで1つ1つの機能の品質を最大限に高め、短い期間でも最大限の効果を発揮できます。
工数見積もりが正確になる
ウォーターフォール開発ではソフトウェア開発プロジェクトの最初から最後までを計画してから開発にとりかかります。そのため開発工数の見積もりが甘かったり、反対に厳しすぎるといった問題が良く発生します。たとえ熟練のプロジェクトマネージャーだとしても、ウォーターフォール開発において正確に開発工数を見積もることは難しいでしょう。一方スクラム開発ではスプリンという短い期間の中で計画するため、正確な工数見積もりが可能というメリットがあります。
開発者各人の責任感が増す
「チームコミュニケーションの良さと生産性の高さは比例する」と言われています。実際に円滑なコミュニケーションが取れている開発チームほど、品質と生産性を両立しているものです。では、円滑なチームコミュニケーションに欠かせないものとは何か?その1つが開発者各人の強い責任感です。スクラム開発では開発者1人1人が行うことが明確に決まっており、各人にその責任があります。そのため責任感が芽生えやすい環境にあり、それが開発チームとして高い質と生産性を実現するためのスパイスになります。
開発者のモチベーションが維持される
開発者がソフトウェア開発において責任感を持つと自然とモチベーションが維持れます。これもスクラム開発の特徴の1つです。ウォーターフォール開発では作業単位でその意義を理解することが難しく、開発者のモチベーションが徐々に低下していくという問題があります。スクラム開発なら責任感からモチベーションが維持され、それによって高い質と品質の実現を行えます。
問題検知を素早く行える
他の開発手法に比べてミーティングや進捗会議を高頻度に行うため、開発者各人が抱えている問題の検知が非常に早く、かつ開発チームとして解決に取り組むため問題への対処もスピーディです。高頻度なミーティングや進捗会議で一度生産性は落ちますが、その後劇的に改善するのはチームの問題検知能力と問題解決能力が高まるからです。
GitHubでチームコミュニケーションを活発に
オープンソース型のバージョン管理システム「Git(ギット)」をベースにしたホスティングサービス「GitHub(ギットハブ)」はスクラム開発に最適なツールです。ソースコードのバージョン管理を行いつつチーム内でソースコードを管理したり、チームやタスクを管理することも可能です。ソフトウェア開発におけるチームコミュニケーションを強力支援するので、スクラム開発導入の際はぜひご検討ください。
- カテゴリ:
- トレンド