アジャイル開発で大切なこと
アジャイル開発で大事なこと〜コスト最適化の観点から〜
アジャイル開発は「柔軟に進められる」というイメージが先行しがちですが、やり方を間違えると開発コストが青天井になります。この記事では、コスト最適化の観点からアジャイル開発で本当に大事なことを整理します。
1. 方向性を立てることの大事さ
1-1. 元々の目的をきちんと整理する
開発を始める前に、まず以下の問いに答えられるようにしておくことが重要です。
- なぜ開発をするのか(目的)
- なぜ今やる必要があるのか(タイミングの理由)
この問いに答えられないまま走り出すと、途中で「何のために作っているのか」が迷子になります。アジャイルだからといって「とりあえず走りながら考えよう」は危険です。
1-2. 最初にやっておかないと開発コストが増大することを先にやる
後回しにすると取り返しのつかないコストが発生することは、最初のうちに片付けておくのが鉄則です。
代表的なのが「スケールを前提にした簡単なフレーム作り」です。細かい作り込みではなく、将来の拡張に耐えられる骨格だけを最初に用意しておくイメージです。
※あくまで個人的な考えなので、必ずしも正解ではないかもしれません。
1-3. 何ができていて、何ができていないかをしっかりと共有する
方向性を正しく立てるためには、チーム全体で現状の能力・状況を正直に共有することが欠かせません。
「できると思っていたができなかった」が積み重なると、スケジュールと予算の両方が崩れます。これが意外と難しく、曖昧にしたまま進んでしまうケースが多いです。
2. 序盤に「やらないこと」を決めることが大切
どこまでスケールさせるか・させないかの境界線を序盤に明確に引くことが、コスト管理の要です。
「○○もやりたい」という追加要望が積み重なると、修正コストと納期が際限なく膨らんでいきます。スコープを決めることは制約ではなく、プロジェクトを守るための判断です。
3. そもそも規模が大きいことはアジャイルでやらない
3-1. 規模が大きくなるほど方向性を立てる難易度も上がる
規模が大きくなればなるほど、最初に述べた「方向性を立てること」自体の難易度が上がります。その結果、後から「○○もやりたい」となったときに莫大な修正コストがかかる状況になりがちです。予算も納期も想定外に跳ね上がるリスクがあります。
3-2. 重要な機能はウォーターフォール、細かい改善はアジャイルで回す
おすすめの進め方は、どこまでスケールさせたいかを整理した上で、基本的で重要な機能をウォーターフォールで固めるアプローチです。
ただし、細かいところまでウォーターフォールで作り込もうとすると、ちょっとした変更にも大きな工数がかかる状態になります。コアな機能が固まったら、細かい改善は後からアジャイルで柔軟に回していくのが現実的です。
フェーズ | 手法 | 対象 |
|---|---|---|
初期 | ウォーターフォール | コアとなる重要機能 |
以降 | アジャイル | 細かい改善・追加機能 |
4. アプリケーションを疎結合化させるならアジャイルでもいいかも
アプリケーションを疎結合に設計するなら、アジャイルでも比較的安全に進められます。
例えば、このWEBサイトでは認証ページを別アプリケーションとして独立させており、複数のアプリケーションを個別に開発・デプロイできる構成にしています。各アプリケーションが独立しているため、一つの変更が他に波及しにくく、アジャイルで回しやすい状態です。
ただし、独立したアプリケーション同士を後から連携させようとすると、コストが一気に跳ね上がる可能性があります。疎結合の恩恵を活かすためにも、アプリケーション間の連携が必要になる場合は、最初からその設計を見通しておくことが重要です。
まとめ
アジャイル開発でコストを最適化するための要点を整理します。
- 開発の目的とタイミングの理由を最初に言語化する
- 後回しにすると高くつくことは序盤にやる
- できること・できないことをチームで正直に共有する
- 序盤に「やらないこと」をきちんと決める
- 規模が大きい案件はアジャイルに向かない
- コアな機能はウォーターフォール、細かい改善はアジャイルで回す
- 疎結合設計はアジャイルと相性が良いが、アプリ間連携は最初に見通しを持つ
アジャイルは万能ではありません。適切なスコープと設計方針を最初に整えることが、結果的に一番のコスト削減につながります。