支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


Agile開発

Agile開発とは、【機敏】【頭の回転が速い】【素早い】等々の意味があります。Agile開発は、システムやSoftwareの開発におけるプロジェクト開発手法の一つで、大きな単位でシステムを区切る事無く、小単位で実装とテストを繰り返して開発を進めていきます。従来の開発手法に比べて開発期間が短縮される為、Agileと呼ばれています。Agile開発においては、開発対象を多数の小さな機能に分割し、1つの反復で1つの機能を開発します。そして、この反復のサイクルを継続して行う事で、1つずつ機能を追加的に開発していきます。また、各々の反復は、小規模なSoftware開発プロジェクトに酷似しています。なぜなら、計画、要求分析、設計、実装、テスト、文章化といったSoftwareのプロジェクトに要する全ての工程を1つの反復内で行うからです。Agile開発では、各反復が終了する毎に、機能追加された新しいSoftwareをリリースする事を目指します。各反復が終了する毎に、プロジェクトチームは、プロジェクトにおける優先度を評価し直します。Agile開発では、色々な文書を書く事よりも、プロジェクト関係者間で必要な時に即座に直接顔を合わせて意思疎通を行うべきである事を強調します。ほとんどのAgile開発チームでは、Softwareの開発に必要な関係者が、1か所の作業場所で仕事をします。この場合の関係者には、少なくともプログラマーとお客様が含まれています。この作業場所では、テスト担当者、ユーザーインターフェース設計者、テクニカルライター、管理職も一緒に作業する場合があります。またAgile開発手法では、実際に動くSoftwareこそが最重要なプロジェクト進行尺度である事を強調します。この動くSoftwareという進行尺度の採用と、直接顔を合わせた意思疎通の重視とが相まって、Agile開発手法で作成する文書の量は、他の開発手法と比較すると非常に少ないです。文書が少ない事は、しばしば無統制で雑な作業であるとして、Agile開発に対する批判材料の一つとなっています。

Agileの利点、欠点

システムやSoftwareにあった開発手法を選ぶ為には、色々な特性を理解する事が大切です。利点が多く見えるAgile開発ですが、欠点も理解した上で適した開発手法を選択する事が大切です。

利点

Agile開発の利点は、不具合が発覚した際に戻る工数が少ない事です。従来のWaterFall開発の場合は、最初に決定した設計、計画を重視する為、トラブルの発生箇所によっては戻る工数が大きく、時間やコストが膨大に増える可能性がありました。しかし、Agile開発の場合は、小さな単位で計画から設計、実装、テストを繰り返している為、テストで問題が発生しても一つ反復内を戻る分の工数で済みます。また、計画段階で詳細な仕様を決めない為、開発途中で利用者とコミュニケーションを行い、確認をしながら進められます。仕様変更や追加に対応可能なので、利用者のニーズに最大限に応える事が出来、高い満足度が得られる点も利点でしょう。因みに、WaterFallは、一連の工程の大規模な統合であり、長期間単位を採用し、その期間単位の終了に向けてテストが行われる。統合とテストの規模が大きく、困難である事は、WaterFallの開発のプロジェクトが失敗する際に、その原因の一つとなっている事が多いでしょう。Agile開発では、短期間単位毎に、完全に開発されたテスト済みの機能をリリースします 。Agile開発では、利用可能なシステムを早期に構築し、継続的に改良を行っている事を強調します。一部のAgile開発チームでは、小規模なWaterFallのモデルが採用されています。この場合、反復毎に完全なWaterFallのサイクルを繰り返します。また、一部のAgile開発チーム では、WaterFallのモデルの各工程を、同時並行して行います。

欠点

計画段階で厳密な仕様を決めていない為、開発の方向性がブレブレになります。さらに改善を繰り返す事により、当初の計画からずれてしまいます。また、WaterFall開発の場合は、最初に指標やスケジュールを決めます。そうする事により、現状の進捗度を把握する事が出来ます。しかし、Agile開発では計画を詳細に立案しない為、スケジュールや進捗具合が把握しにくくコントロールが難しくなります。チーム毎に小単位で開発を繰り返す為、全体を把握しきれずに、気づいたら納期に間に合わないという事も起こり得ます。

Agileの歴史

近年、Agile開発の定義は、1990年代半ばに、重量Softwareの開発手法への反対運動の一部から発展して形成されてきました。重量開発手法の特徴は、WaterFall開発モデルを適用した場合に多く見られる厳格な規律と統制、管理不足などがあります。WaterFallモデルのような重量開発手法は、とてもゆっくりでした。その為、Softwareの技術者が効果的に作業を進めるという観点と矛盾していました。

まとめ

今回は、Agileの概要や利点、欠点、歴史について少し触れてきました。今の時代は効率を求めていましたが、20,30年前までは、官僚的でモタモタしている事には驚きましたね。技術は日々進歩しているという事でしょうか。