アジャイルって何?(1) 
歴史から紐解く最新のソフトウェア開発手法

agile

日夜、進行しているソフトウェア開発プロジェクト。
この瞬間にも、ソフトウェアの開発に勤しみ、苦労をしている人々がいます。

ITがこれだけ普及・進化した現代においても、ソフトウェア開発プロジェクトの中には、予算やスケジュールの超過が発生してしまったり、可読性や保守性の低いソースコードや要求事項を満たせない品の低い成果物ができてしまったりと、残念なゴールを迎えてしまうものがあります。あまりにも頻繁にこうした問題が起こっているため、もはや”IT業界あるある”の一つになってしまっていますが・・・。それくらいソフトウェア開発は難しい、ということなのでしょう。

効率化を実現した「フローチャート」

コンピューターの登場以来、ITの歴史は、開発の苦労を重ね続けた歴史そのものと言えます。
コンピューター登場間もない黎明期である1940年代には、既にソフトウェア開発の効率化を目的として開発ツールが誕生しています。現代のコンピューターの基礎概念が世界で初めて実装された「ノイマン型コンピューター」、そのコンピューターの生みの親であるフォン・ノイマン博士とそのチームに所属していたメンバーが開発し、現代でも幅広く使われているツールが「フローチャート」です。IT以外の現場でも活用されるほど、幅広く普及したフローチャート。このツールはソフトウェア開発ツールの一つとして世に誕生して、既に70年を超えるものとなりました。

今日に至るまでソフトウェア開発プロジェクトは数多く実行されてきました。その過程で、前述のフローチャートのように、ソフトウェア開発の現場において活用できるツールやアイディアが数多く生み出されていきました。しかし、当初はソフトウェア開発手法として体系立てて整理するような動きはなく、結果としてソフトウェア開発手法が確立しないまま、多くのプロジェクトが実行され、冒頭で言及したような問題が発生し続けました。

「ウォーターフォールモデル」の原型の誕生

1968年、ソフトウェア開発の現場の危機的状況を打開したいという機運が高まり、NATOが後援して開催された国際会議で「ウォーターフォールモデル」の原型が提唱されました。
ウォーターフォールモデルとは、ウォーターフォール=滝の名称の通り、水が高い所から低い所へと流れていく様を模してモデル化した、作業工程を上流から下流へと順序よく進めて行くソフトウェア開発手法です。顧客の要求分析から始まり、要件定義⇒基本設計⇒詳細設計⇒製造⇒単体テスト⇒結合テスト⇒総合テスト⇒リリース(*1)と順序よく進めていきます。(*1:工程の名称は企業や現場により異なります)

この手法は、前工程が完了したことを前提に次工程に移っていくため、進捗管理がしやすいという点で優位で、現在でも多くの大規模ソフトウェア開発の現場で採用され続けています。その一方で、上流工程において顧客の要求事項をすべて引き出してから設計・製造へと入っていくことが非常に難しく、下流工程に移ってから顧客の要求事項が出てきたために「手戻り」となって前工程からやり直す、という問題が頻発してしまいます。

このような背景から、小規模なソフトウェア開発の現場においては、ウォーターフォールモデルを採用すると管理・間接工数が肥大化しがちです。そのため、コンピューター化が進み、既存システムの改修や小規模システム開発の件数が増えた現代においては、小回りが利くアジャイルソフトウェア開発を開発手法として採用することが多くなってきました。

小回りが利いて、幅広い活用が期待できる「アジャイルソフトウェア」とは

2001年、新しいソフトウェア開発手法をそれぞれに考案・模索していた開発者たちがアメリカ・ユタ州のスキーリゾートに集結し、それまで個別に議論されていたそれぞれのソフトウェア開発手法を統合・横断的に議論する機会がありました。そして、その結果を「Manifesto for Agile Software Development(アジャイルソフトウェア開発宣言)」として発表しました。アジャイル(agile)=敏捷な・すばしこい、という意味を持ちます。そのワードを冠した全く新しいソフトウェア開発手法の根幹には、ソフトウェア開発の実行時に不確定要素が発生することを必然であることと理解した上で、事前に立案した計画を柔軟に変更しながらゴールを目指して突き進む開発手法です。最良のゴールを迎えるために突き進むという意味では、旧来の開発手法と何ら変わりませんが、「計画の変更を許容する」という点において、一度立てた計画を遵守することが肝要とされるウォーターフォールモデルとは、対極をなす存在が誕生したといえるでしょう。

さて、アジャイルソフトウェア開発の中でも、代表的な開発手法が「Scrum(スクラム)」です。ラグビーの選手が両陣営で一つの集団を形成して、ぶつかり合うフォーメーションから名付けられました。この手法の目的は、チームの能力を最大化すること。スクラムでは、個々の開発メンバーが持つ能力を最大化し、その総力を以って、顧客の要求やスケジュール等の種々の変更に素早く対応していこう、という考え方に立っています。

スクラムの基本概念はとてもシンプルです。物理的に同じ拠点で作業をするか、密にオンライン共同作業ができる環境下にあり、全員が日々お互いにコミュニケーションを取り合う点が重要とされているのみで、開発のフェーズや技術領域等の他の要素に一切縛られることなく、また定められた技法もないため、形態を問わず幅広く適用することができます。そのため、アジャイルソフトウェア開発の手法群の中でも、最も採用されることが多いとされています。

次回は、この「スクラム」に焦点を当て、その具体的手法に迫ってみたいと思います。

著者プロフィール
氏名:新村 繁行
株式会社カグラ 代表取締役
2003年よりインフラSE・PMOスタッフとして数多くの大規模基幹システムのインフラ設計・構築・運用プロジェクトに従事。
2014年より現職、フロントエンドエンジニアチームのマネジメントと、海外シェアハウスでITx英語xビジネスを教える人材育成プロジェクト「アクトハウス」を企画・運営する傍ら、テック系ライターとして活動中。
世界各国から楽曲をリリースする音楽プロデューサー/DJとしての顔も持つ。
Pocket

コメント