スパイラル開発とは?開発方法やメリット・デメリットを解説!

開発方法の考え方にはさまざまなものがあり、その中でも、近年はスパイラル開発とアジャイル開発が注目されています。どちらも工程を繰り返しながら開発を進めるもので、今までの開発手法と比較すると、様々な魅力があると考えられているのです。今回は、これらの中でも、スパイラル開発に注目し、どのような開発手法であり、メリットやデメリットにはどのようなものがあるのかを解説します。
この記事の目次
スパイラル開発とは
スパイラル開発は、対象のシステムを機能ごとに分割し、重要な機能から開発する手法を指します。一般的には、システム全体の要件定義から設計、開発やテストなどを実施しますが、スパイラル開発はそうではありません。必要な機能についてのみ、要件定義や設計を実施し、開発やテストまで済ませてしまいます。
その後、別の機能についても同じように、要件定義からテストまでを繰り返していくのです。つまり、スパイラル開発は、従来のように一気に進めていくのではなく、複数の工程を繰り返しながら進めていくことが特徴です。
なお、重要な機能から開発していくため、事前に開発の優先順位を設けておかなければなりません。この部分の検討に失敗するとスパイラル開発でも、全体の失敗に繋がりかねないため注意が必要です。
スパイラル開発の方法

続いては、具体的にスパイラル開発の方法について解説します。
要件定義
スパイラル開発においても、最初に実施すべきは要件定義です。どのような機能が必要であるかを洗い出して、具体的な開発につなげていかなければなりません。ただ、繰り返しスパイラルを実施するため、厳密に要件定義する必要はないでしょう。ウォーターフォールとは異なり、大まかに要件定義しても差し支えありません。開発された機能を見ながら微修正していけることが、スパイラル開発のメリットです。
基本設計や詳細設計
要件定義が完了したならば、基本設計や詳細設計を進めていきましょう。例えば、画面のユーザーインターフェースを決定したり、ボタンを押下した際の処理を詳細化したりします。具体的な機能といえる部分であるため、設計作業には力を入れなければなりません。仮に要件が曖昧でも、設計作業はその範囲で具体的に進める必要があります。設計に失敗するとスパイラル開発でも、開発に失敗する原因となりかねないのです。なお、各種設計はドキュメントに残しておき、後ほど確認できるようにしましょう。他の機能の開発に役立てたり、修正が発生した際は反映したりすることが求められます。
開発
設計が完了したならば、プログラミング作業を行い、実際に機能を作成していきます。システムの開発作業であるため、プログラマーが中心となって進めていくと考えましょう。場合によっては、サーバーやデータベースなど、インフラ部分のエンジニアが協力します。スパイラル開発で品質に影響する部分であるため、開発工程には特に力を入れるべきです。
テスト
開発が完了した後はテストを実施しなければなりません。基本的には単体テストを実施して機能が要求通り実装できているか評価します。ただ、機能によっては他の機能との連携を前提としている場合があるため、この場合は結合テストなども実施します。最低限のテストは実施しますが、その後にどのようなテストが必要となるかは機能によりけりです。もし、テストの過程で何かしら問題が露呈したならば、開発工程に戻って修正しなければなりません。
評価
一通り機能の開発が完了した後は、その機能で問題がないか、評価作業が必要です。もし想定していた内容と異なるならば、その部分を設計書に反映し、修正が必要です。逆に求めている機能が完成したならば、その部分については作業が終了し別の作業に着手します。評価に時間がかかると他の開発に影響を与える可能性があるため、スムーズにこなしていかなければなりません。
スパイラル開発のメリット
続いては、スパイラル開発にどのようなメリットがあるのかを解説します。
仕様の変更に対応しやすい
重要な機能から少しずつ開発していくため、仕様の変更に対応しやすいことがメリットです。もし開発の過程で、何かしら新しい要望が生まれたとしても、現時点で開発していない部分であれば差し支えありません。また、仮に開発している部分であっても、早い段階で気付けることで、影響範囲を最小限に抑えられます。
そもそも、スパイラル開発やアジャイル開発は、少しずつ機能を開発して、その内容を評価する考え方です。そのような前提に立つと、仕様が少し変更すること自体は、最初から許容されているといえるでしょう。むしろ早い段階で仕様の変更や誤りに気付けることで、メリットを感じるぐらいです。
スケジュールを柔軟に決められる
最終的なゴールは定める必要がありますが、その間のスケジュールについては柔軟に検討できることがメリットです。例えば、特に重要な機能に時間を割いて、それ以外の部分は圧縮することが考えられます。場合によっては、最初から全ての機能を開発するのではなく、一部分だけを開発してリリースし、他の部分は後からリリースするなどの判断も可能です。
ウォーターフォール開発では、このような柔軟性はなく、遅延が生じると全体に大きな影響を与えかねません。結果として、システム開発が失敗したり、中途半端な状態でのリリースを余儀なくされたりすることもあります。スパイラル開発であれば、このような状況を完璧にカバーできるとは断言できないものの、非常に柔軟性のあるスケジュールを決められると考えてよいでしょう。
システムの品質を保ちやすい
スパイラル開発の特徴として、それぞれの成果物は、実際にリリースされるものに近いということが挙げられます。つまり、開発された内容を評価することで、ユーザーが求めているものであるのか、早期に評価できるのです。その結果、品質の高いシステム開発を実現していきます。
事前に実装しているシステムの内容を評価していないと、最終的に出来上がってから「思っていたものと違う」という状況が発生するかもしれません。これは客観的に見ると、品質が悪いと言わざるを得ないでしょう。高額なコストを支払ったシステムであっても、業務で利用できないような状況に陥るかもしれません。スパイラル開発ならば、早々に機能を評価できることから、必要に応じて開発者へのフィードバックが可能となり、問題を早期発見したり未然に防いだりできます。
スパイラル開発を採用するデメリット
スパイラル開発には、独自のデメリットが存在するため、その点も考慮しておかなければなりません。
開発のゴールが見えづらい
スパイラル開発は、柔軟すぎるがあまり開発のゴールが見えづらくなってしまうことがデメリットです。例えば、当初想定していた機能を全て開発するのか、一部だけを開発してリリースするのかの判断が現場ではできません。プロジェクトマネージャーなどが早々に判断できれば良いですが、コミュニケーション不足などによって伝わらないこともあります。
また、そもそも開発のクライアントと開発のベンダー側で意思疎通ができず、プロジェクトの全体像が理解できないこともあるでしょう。複雑なシステムの開発であり、ステークホルダーが多い場合だと、なおさらプロジェクトの全体像を把握できない原因となってしまいます。例えば、製造部門と調達部門に加えて、営業部門なども関わるとそれぞれが自分の意見を述べるでしょう。これらを取りまとめて開発に反映させる必要があり、全体像を掴めなくなってしまいます。全体像を把握できないまま、開発の変更を繰り返したり要望を受け入れたりすると、最終的には本来とは異なるシステムが完成することになりかねません。
開発コストが肥大化しやすい
機能ごとに開発していく仕組みであるため、最終的には開発コストが肥大化する可能性があることがデメリットです。何度も仕様の内容を吟味し、開発し直すことによって、加速度的にコストが高まってしまいます。全体像を把握しづらいということも相まって、想定していた予算を超過する可能性があるため注意しなければなりません。
もちろん、何度もシステムの機能を評価して、品質を高められることは伝えられる開発のメリットです。これを重視して、スパイラル開発を導入するケースが多くあるでしょう。ただ、その反面でコストが肥大化しやすいことも常に考慮しておかなければなりません。
特に要件が細かく定まっていない場合、スパイラル開発を繰り返すことによって、費用が肥大化しがちです。ある程度の要件が固まっていて、スパイラル回数が少なくなれば、そこまで想定と大きく乖離しないでしょう。どのような状況でもスパイラル開発が適しているわけではなく、コスト面でスパイラル開発が適していないこともあるのです。
スパイラル開発とアジャイル開発の違い
スパイラル開発とアジャイル開発はどちらも要件定義や設計、開発やテストを繰り返しながら進める開発手法です。その点では似たようなものであるため、同じものであると考えられていることもあります。
しかし、アジャイル開発は事前に定められたタイミングでレビューするのに対して、スパイラル開発では、そのようなタイミングは設けられません。期間ではなく機能が開発されたタイミングでレビューする仕組みです。そのため、アジャイル開発は事前にレビューの日程を組めますが、スパイラル開発ではレビューの日程を組むことが難しくなっています。
また、アジャイル開発は、プログラムをリリースすることを重視した開発手法です。それに対して、スパイラル開発はプログラムの機能を完成させることを重視しています。機能に求められる品質を満たしていなければ、いつまでもリリースされないのです。これが全体の開発遅延や、全体像が見えなくなる原因ともなってしまっています。
なお、ここまでスパイラル開発を解説してきましたが、現状としてはスパイラル開発よりもアジャイル開発が利用されがちです。日本では機能の品質よりもリリースまでの期間を重視するケースが多いため、どちらを重視するかを踏まえて開発手法を選択することが重要です。
スパイラル開発が適しているプロジェクトの傾向

スパイラル開発はどのような状況で選択すれば良いのか、プロジェクトの傾向を紹介します。
規模の大きなプロジェクト
主にスパイラル開発は「ある程度のコストが発生しても品質を担保したいプロジェクト」におすすめです。例えば、利用者数が多く、バグが含まれていると多くの利用者に影響を与えるケースなどが考えられます。また、機能面に問題があるとシステムとして役立たないようなケースも適しているでしょう。
ただ、上記のデメリットで述べた通り、スパイラル開発はプロジェクトの全体像を掴みにくいものです。品質を担保することはできますが、その結果として開発期間が延びたり、コストが高まったりするかもしれません。理想論としては、スパイラル開発を利用すべきではあるものの、実態はコスト面などを考慮することが重要です。
仕様変更が発生しやすいプロジェクト
プロジェクトの要求が曖昧であり、これから変化する可能性が高い場合には、スパイラル開発が適しています。機能を作成しつつ、その内容について繰り返し評価するため、仕様が曖昧でも実際に操作しながら要件の洗い出しができます。
一般的には、事前に要件が確定していなければスムーズにシステムを開発できません。基本的には途中での要件変更は許容されず、途中の要件変更は難しいと考えられています。しかし、スパイラルを採用すれば、今までは難しかった状況でも開発しやすくなるのです。
スパイラル開発を採用する際の注意点
最後にスパイラル開発で開発する場合、どのような注意点があるかについても解説します。
開発内容がブレる可能性がある
スパイラル開発でシステムを開発すると、度重なる仕様変更によってシステムの方向性がぶれる可能性があります。途中で様々なステークホルダーが新しい要望を追加していくことで、細かな開発が繰り返され、最初に目指していたものとは異なるシステムとなるかもしれません。
例えば、当初はシステムのシンプルさを求めていたとしても、スパイラル開発によって複雑になるかもしれません。関係者が新しい機能を要望するに伴い、要件が肥大化していき、システム全体が大きくなってしまうのです。これはシステムの方向性や開発内容がブレる代表例だといえるでしょう。
他にも低予算で開発しようとしている状態でスパイラル開発も導入すると、コストが肥大化する可能性があります。当初の想定よりも何倍ものコストが発生することがあるため、そこも注意しなければなりません。
まとめ
スパライル開発について解説しました。アジャイル開発の一種であり、クライアントとのコミュニケーションを重視しながら開発を進めます。小さな単位で開発を続けることが特徴と理解して良いでしょう。
ただ、クライアントからのフィードバックや意見を踏まえて開発する方法であり、一定のリスクがあります。これらを理解して採用しなければトラブルが起きる可能性があるため注意しましょう。