目次:

1.アジャイル開発とは?

アジャイル(agile)とは直訳すると「素早い」「機敏な」「頭の回転が早い」という意味。

アジャイル開発(アジャイルソフトウェア開発)は、現在主流になっているシステムやソフトウェアの開発手法の1つで、『計画→設計→実装→テスト』といった開発工程を機能単位の小さいサイクルで繰り返すのが最大の特徴です。

2001年に、当時軽量のソフトウェア開発を提唱していた17名の技術者やプログラマーが米国ユタ州に集まり、開発手法の重要な部分について統合することを議論しました。それをまとめたものが「アジャイルソフトウェア開発宣言」です。

アジャイルソフトウェア開発宣言は、ソフトウェア開発とそれに基づく12の原則を定義しており、2017年現在もアジャイル開発の公式文書として広く知られています。

優先度の高い要件から順に開発を進めていき、開発した各機能の集合体として1つの大きなシステムを形成。「プロジェクトに変化はつきもの」という前提で進められるので仕様変更に強く、プロダクトの価値を最大化することに重点を置いた開発手法です。

従来のウォーターフォール開発の場合、初めにプロジェクトの要件定義や設計を細部まで煮詰めてから1度の大きなサイクルで開発を進めるので、リリース時にすべての要求をクリアしていることが求められます。

しかし、アジャイル開発の場合は優先度の高い重要な機能から着手できるため、素早くリリースしてからブラッシュアップしていくことが可能。つまり、サービスインまでの期間を短縮することができ、ビジネスのスタートを早めることができます。

参考:Manifesto for Agile Software Development
参考:アジャイルソフトウェア開発宣言

2。アジャイル開発の特徴とメリット・デメリット

2.1 アジャイル開発のメリット

開発スピードが速い。短期間でユーザーに価値を届けられる

 アジャイル開発で意識されることは、価値の提供である。

すべての機能が完成するまで待ってからリリースするのではなく、価値の高い機能を優先的に開発をすすめることで、都度リリースすることが可能になります。仕様変更に対応できることで、リリースしてからの手戻りが少ない点もスピード感を高める要因の一つです。

要件・仕様が全て明確ではない段階でも着手でき、早期ローンチを目指せる

開発工程「要件定義→設計→開発→テスト→リリース」を小さいサイクルで行うため、要件、仕様が決まっていなくても途中で開発チームを一緒に検討し、仕様を固めてから実装することが可能。もちろん、リリース時期に合わせて開発機能を調整し、必要な機能だけを絞って開発することもできます。

要件、仕様変更に柔軟に対応可能

一つのサイクルが完了後にアプリケーションがリリースされ、すぐ確認できます。実際に動作したアプリケーションで確認し、フィードバックすることで軌道修正できます。もちろん、要件変更、仕様変更が次のサイクルにすぐ反映することも可能です。

市場のニーズに応じて成長していく

部分リリースで市場からの反応、顧客のフィードバックをもらい、そこからサービスを改善していくことが実現可能になります。また、仕様変更前提で開発をすすめるため、その時点でベストな選択・方法で構築することも可能になります。

2.2アジャイル開発のデメリットとNALソリューション不安を解消する

全体的なスケジュールの把握や管理が難しい

仕様変更に対する柔軟さがありますが、何でも仕様変更することで無駄な作業が発生し、全体的にリリースまでのスケジュールが伸びる可能性があります。機能ごとの小さい単位でのスケジュールが意識されているため、プロジェクト全体のスケジュールや進捗状況を把握しにくい傾向があります。

 NALでは、JIRAを利用し、スプリント管理、リリースバーンダウン等を使って管理することで、全体のスケジュールを把握できるようになります。

開発の方向性がぶれやすい

アジャイル開発は明確な仕様が決まらなくても、要件の追加や修正・変更を繰り返していくことで完成していくため、当初の方向性から大きく外れないようにサービスが解決すべきな課題・設計思想等を常に意識し、コントロールが必要になります。

NALでは、開発だけでなく、提案フェーズからも参加することが可能のため、重要なポイントを把握し開発メンバーにも共有します。

・製品の品質担保が不安

アジャイル開発では、短いイテレーションやスプリントが行われ、迅速な変更が求められます。この短いサイクルの中で十分なテストが行われない場合、品質が損なわれる可能性があります。

頻繁な変更や新しい機能の追加があるため、それらの変更が既存の機能に影響を与える可能性があり、それを十分にテストする必要があります。

NALでは、品質担保を実施します。

・品質担保:Bug, Code Smells, Coverage自動測定

・品質担保: FunctionレベルのCyclomatic Complexity(複雑度)自動測定・品質担保:

 CICDで自動テスト/自動デプロイ実施

・品質担保:画面の自動化テスト実施

3. ウォーターフォール型開発モデルとは?

ウォーターフォールモデルは、ソフトウェア開発プロセスの一種であり、プロジェクトが一連の段階を順次進めていく線形なアプローチを取ります。このモデルは、各段階が前の段階の完了後に進行し、途中で戻ることは許されないという特徴があります。基本的な段階は以下の通りです。

・要件定義(Requirements): システムやソフトウェアの要件を収集し、文書化します。利害関係者とのコミュニケーションが重要です。

・設計(Design): 要件に基づいてシステムやソフトウェアのアーキテクチャやデザインを行います。これには外部設計と内部設計が含まれます。

・実装(Implementation): デザインされたシステムやソフトウェアをプログラミングによって実際に構築します。

・テスト(Testing): 実装されたシステムやソフトウェアをテストし、バグを見つけて修正します。

・運用/保守(Maintenance): システムやソフトウェアが運用される状態を維持し、必要に応じて修正やアップデートを行います。

このモデルは直線的であるため、進捗が次の段階に進む前に前の段階を完了する必要があります。この性質は、変更が発生すると戻りにくく、柔軟性に制約が生じる可能性があることを示しています。そのため、要件が変更された場合などに対応するのが難しいとされています。近年では、アジャイル開発などの柔軟で反復的なアプローチがウォーターフォールモデルに代わって広く採用されています。

4.アジャイル開発とウォーターフォール型開発モデルの違い

ウォーターフォール開発は、要件定義から設計、開発、実装、テスト、運用までの各工程を段階的に完了させていく、システムやソフトウェアのクラシックな開発手法です。

要件定義や全体の機能設計を確定させた後に開発を始めるため、実際の開発作業が始まるまでには時間がかかる傾向があります。その一方で、進捗計画に余裕をもたせることが一般的で、予算の見積もりやチームメンバーのアサイン計画が比較的容易です。

アジャイル開発との大きな違いは、機能ごとに細かい開発サイクルを繰り返すアジャイルと比較して、ウォーターフォールでは開発途中での仕様変更や追加への対応が難しいことです。仕様の抜け漏れや要求の変更が発生した場合、一つ前の工程から全体を見直す必要があるため、追加の費用がかかったり、開発期間が延期する可能性があります。

5.まとめ

アジャイル開発は変化が激しく、また複雑さを増す現代に適したソフトウェア開発手法であるがゆえに、現在では主流の開発手法の一つとして多くの開発現場において採用されています。NALはアジャイル開発の経験が7年以上を持っております。社員はアジャイル開発を深く理解しています。アジャイル開発に関わる資格を有しています。アジャイル開発に関するお問い合わせはこちらまでご連絡ください。