タイトルの通りアメリカでのアジャイル開発の歴史について、Claudeさんに質問してみました。
Claudeに問う
ソフトウェア開発プロセスモデルのアジャイル開発について、詳しく教えてください。
アジャイル開発という概念の登場から、スクラムやXP(エクストリームプログラミング)といった具体的な手法の登場に至るまでの歴史について、解説してください。
アジャイルという言葉は、スクラムとXP(エクストリーム・プログラミング)が登場した後に作られたのですか。
それともアジャイルの方が先に言葉として使われたのが先ですか。
アジャイル(Agile)という言葉自体は、スクラムやXP(エクストリーム・プログラミング)が登場する前から存在していました。
具体的な経緯は以下の通りです。
1990年代初頭
- 新しいソフトウェア開発手法の必要性が叫ばれるようになり、”lightweight”や”agile”といった言葉が使われ始める
1995年
- “アジャイル・ソフトウェア開発”という言葉が登場
1997年
- スクラム開発プロセスが提唱される
1999年
- エクストリーム・プログラミング(XP)が提唱される
2001年
- アジャイル開発の価値観を集約した”アジャイル・ソフトウェア開発宣言”が公表される
つまり、”アジャイル”という言葉の使用は、スクラムやXPの具体的な手法が提唱される前からあり、当初は開発手法の”柔軟性”を強調する意味合いで使われていました。
その後、スクラムやXPなどの具体的な手法が登場し、それらを包括する概念として”アジャイル開発”という言葉が定着していったという経緯になります。
スクラムやXPが登場する以前のアジャイル・ソフトウェア開発には、具体的な手法は存在したのでしょうか。
スクラム登場以前に、どんなアジャイル・ソフトウェア開発を行っていたのでしょうか。
スクラムやXPが登場する以前の1990年代初頭から中盤にかけて、”アジャイル・ソフトウェア開発”と呼ばれる具体的な手法は存在しませんでした。
当時は、従来の”ウォーターフォール型”開発手法の問題点が指摘され、より柔軟で適応力のある開発プロセスが求められていました。しかし、明確な実践手法は確立されていませんでした。
この時期に行われていたのは、以下のようなアプローチです。
反復的開発モデル(iterative model)の採用
- 要件定義→設計→実装→テストを繰り返すサイクルを短く設定
- 徐々に製品を成長させていく考え方
プロトタイピングの活用
- 初期段階で簡易的なプロトタイプを作成し、顧客からフィードバックを得る
- 要件を洗い出し、リスクを低減する目的
RAD(Rapid Application Development)手法の採用
- 短期間でシステムを構築することを目指す手法
- JAD(Joint Application Development)など、顧客を開発に巻き込む実践
つまり、スクラムやXPが登場する前は、反復的アプローチやプロトタイピング、顧客参加型開発など、”アジャイル”と呼ばれる価値観を体現する部分的な実践はありましたが、明確な手法としては確立されていなかったと言えます。
スクラムやXPは、これらの実践を体系化し、よりアジャイルな開発を実現する明確な手法として提唱されたものと位置付けられます。
1990年代初頭に新しいソフトウェア開発手法の必要性を”lightweight”や”agile”といった言葉で語っていたのは、どのような人々や団体組織ですか。
その言論活動の内容はどのようなものですか。
1990年代初頭に”lightweight”や”agile”といった言葉を使って、新しいソフトウェア開発手法の必要性を唱えていたのは、主に以下のような人々や組織でした。
【個人】
アーン・コックバーン(Arn Cockburn)
- 1990年代初頭から反復的開発の概念を提唱
- 1996年に”Use Case手法”を著書化
ケント・ベック(Kent Beck)
- 極端なプログラミング実践方法を提唱
- 1999年にエクストリーム・プログラミング(XP)を発表
マーティン・フォウラー(Martin Fowler)
- アジャイル分野の重要な書籍を多数執筆
- リファクタリングの実践者としても知られる
【組織・コミュニティ】
DSDM Consortium
- 1994年に英国で設立された非営利団体
- DSDMという反復・増分的な開発手法を策定
Agile Alliance
- アジャイル指向の開発者らによって2001年に設立
- アジャイル宣言の起草などを行った
これらの個人やグループは、従来の重量級プロセスに代わる、”lightweight(軽量)”で”agile(機敏)”なアプローチを提唱していました。
その主な内容は以下のようなものでした。
- 反復的開発による継続的リリース
- シンプルな設計とコード重視
- 顧客との密接なコミュニケーションと協力
- 変化に対する受容性の重視
- 規範よりも人間的価値の尊重
このような考え方が、後のスクラム、XPなどのアジャイル開発手法の中核となる価値観の形成に大きく寄与しました。
1995年に”アジャイル・ソフトウェア開発”という言葉を最初に登場させたのは誰ですか。また、それにより社会的に何かが変わりましたか。
1995年に”アジャイル・ソフトウェア開発(Agile Software Development)”という言葉を最初に使ったのは、コンサルタントのジム・ハイスミス(Jim Highsmith)です。
ハイスミスは1995年の論文”Adaptive Software Development”の中で、”Agility is the ability to both create and respond to change in order to profit in a turbulent business environment”と定義し、”Agile Software Development”という用語を用いました。
このハイスミスによる”アジャイル”の概念の提唱は、新しいソフトウェア開発のパラダイムを示唆するものとして、開発者コミュニティに大きな影響を与えました。
具体的には、以下のような変化につながりました:
- 従来の重量級プロセスへの反発 従来のウォーターフォール型などの開発プロセスが、変化に柔軟に対応できないという批判が高まった。
- 新しい開発手法の模索 “アジャイル”を実現する具体的な手法が模索され始め、スクラム、XPなどの手法へとつながっていった。
- アジャイル指向のコミュニティ形成 アジャイル開発の考え方に共感する開発者が集まり、2001年にアジャイル宣言の起草などを行うAgile Allianceが設立された。
- 組織への浸透 アジャイル開発は徐々に企業の開発現場へ浸透し、顧客の変化への対応力向上が求められる中で広く採用されるようになった。
このように、ハイスミスによる”アジャイル”概念の提唱は、従来の開発手法に風穴を開け、新しいアプローチを生み出す契機となった重要な出来事と言えます。
1997年にスクラムが提唱されてから、1999年にはエクストリーム・プログラミング(XP)が提唱され、2001年にはアジャイル・ソフトウェア開発宣言が公表されるという具合に、1990年代後半のアジャイル陣営の動きが速いですが、この期間に米国社会では、アジャイルに注目が集まっていたのでしょうか。
当時の米国のソフトウェア開発に携わる企業や団体の反応は、どのようなものだっだのでしょうか。
1990年代後半、スクラム、XP、アジャイル宣言などのアジャイル関連の動きが相次いだ時期、米国社会全体ではまだアジャイル開発に対する注目は限定的でした。しかし、ソフトウェア開発の現場では徐々に関心が高まっていきました。
【当時の米国社会の反応】
- メインストリームのITメディアではあまり取り上げられていなかった
- 一般社会から大きな注目を浴びるような動きはなかった
- ただし、開発者コミュニティの中では徐々に関心が広がっていった
【ソフトウェア開発企業・団体の反応】
大手のソフトウェア開発企業は当初は消極的だった
- 従来の開発プロセスへの投資があり、新しい手法に積極的ではなかった
中小のソフトウェアハウスやスタートアップ企業の一部では早期に実践が始まった
- 柔軟性と顧客対応力の向上が魅力と感じた企業もあった
アジャイルに関心を持つ開発者らによるコミュニティが形成されていった
- 勉強会やカンファレンスなどの活動が活発になっていった
つまり、1990年代後半のアジャイル関連の動きは、当初は開発者コミュニティでの地道な活動が中心で、一般社会への浸透は限定的でした。しかし、アジャイル開発の概念や具体的手法への関心は徐々に高まり、21世紀に入るとより広範な普及につながっていきました。
米国社会でアジャイルに関心が集まり、普及していくまでの経緯を、西暦で説明してください。
1990年代後半〜2000年代初頭
- アジャイル開発の概念が生まれ、スクラム、XP、アジャイル宣言などが提唱された時期
- しかし、米国社会全体ではまだ大きな注目を浴びることはなかった
- 一部の中小ソフトウェア企業やスタートアップ、開発者コミュニティでは実践が始まった
2000年代前半
- ソフトウェア開発の現場でアジャイル開発の実践が徐々に広まり始めた
- アジャイル関連の書籍や研修、カンファレンスなども増えてきた
- 一部大手ITベンダーも、アジャイル開発の検討を始めた
2005年頃
- 大手ITベンダーの一部がアジャイル開発を公式に採用し始めた
- 米国の一部メディアでもアジャイル開発が取り上げられるように
2010年代
- クラウドやDevOpsなどの潮流と相まって、アジャイル開発が急速に普及していった
- 大手企業のみならず、中小企業でもアジャイル開発の導入が一般化した
2020年代現在
- アジャイル開発は米国のソフトウェア開発の現場で主流の手法となった
- 一方で、アジャイル開発の課題や限界も指摘されるようになってきた
このように、1990年代後半のアジャイル開発の萌芽期から、2000年代を経て徐々に広がり、2010年代以降に大きく普及していったという経緯があります。
日本では、現在まだウォーターフォールモデルの採用が主流で、世論などを見ると、ウォーターフォールモデルの支持者とアジャイルの支持者が、対立的な議論を展開していて、この点の世論が定まっていない様子なのですが、米国社会でもこのような時期はあったのでしょうか。
あるならば、それはいつ頃の事でしょうか。
はい、米国でもアジャイル開発とウォーターフォール型開発の支持者間で対立的な議論があった時期がありました。
おおよその時期は、2000年代前半から中盤にかけてです。
2000年代初頭はアジャイル開発の概念が浸透し始めた時期で、従来からのウォーターフォール型開発手法の支持者とアジャイル支持者の間で活発な議論が交わされていました。
【ウォーターフォール支持者側の主な主張】
- 長年の実績があり、確立された手法である
- 要件を明確にし、計画的に進めることができる
- 大規模プロジェクトに適している
【アジャイル支持者側の主な主張】
- 柔軟性と顧客対応力に優れている
- 変化を受け入れられる
- チームの生産性が高い
この両者の主張は正面から対立し、当時の開発者コミュニティやITメディアで熱い議論が行われていました。
しかし、2000年代中盤以降、アジャイル開発の実績が徐々に積み重ねられ、導入企業が増えるにつれ、その利点が認知されるようになりました。対立は次第に沈静化していった経緯があります。
ただし現在でも、アジャイル万能主義に対する批判や、アジャイルの課題を指摘する意見もあり、建設的な議論は続いているのが実情です。日本の状況と軌を一にしているようです。
2020年代現在において「一方で、アジャイル開発の課題や限界も指摘されるようになってきた」との事ですが、その内容を聞かせてください。
2020年代に入り、アジャイル開発の広範な普及が進んだことで、その課題や限界についても指摘されるようになってきました。主な内容は以下のとおりです。
- アジャイル開発の手法の曲解や形骸化
- アジャイル開発の価値観や原則から逸脱した形骸化した実践が横行
- スクラムのフレームワークを形式的に当てはめるだけの安直な運用
- アジャイル開発の無秩序さと統制の難しさ
- プロジェクトの範囲が曖昧になりがち
- マネジメントと統制が難しく、見積もりが難しい
- ドキュメンテーションの不足
- ドキュメント軽視の風潮があり、知識の継承が困難 -保守運用段階で課題が発生しやすい
- アジャイル開発の適用限界
- 大規模システムや規制の厳しい領域には不向き
- 組織文化によってはアジャイル開発が合わない場合もある
- エンジニアリングプラクティスの軽視
- アジャイル開発の実践でエンジニアリングが疎かになりがち
- テスト、設計、アーキテクチャの重要性が軽視される
このように、アジャイル開発は機動力と柔軟性に優れる半面で、手法の形骸化や無秩序さ、技術的な課題などが指摘されるようになってきました。これらを踏まえた上で、アジャイル開発をより成熟させていく必要があると言えるでしょう。
アジャイル開発の課題や限界が、公に目立つ形で顕在化した事件などありますか。
はい、アジャイル開発の課題や限界が顕在化した代表的な事例としては、以下のようなものが挙げられます。
【Healthcare.gov の失敗 (2013年)】
- オバマ前大統領が推進した国民医療保険制度の中核ウェブサイト
- アジャイル開発手法を採用したが、要件の頻繁な変更と不十分なテストにより、公開時に深刻な不具合が発生
- 結果としてサイト開設が大幅に遅延し、実装上の問題が露呈した
【Quintiles社のアジャイル開発失敗 (2009年)】
- 医療分野の大手IT企業であるQuintiles社のソフトウェア開発プロジェクト
- アジャイル開発を導入したが、計画・見積もりの甘さや、手法の理解不足から納期・予算を大幅に超過
- 結局ウォーターフォール型に切り替えて対処した
【FBIの相次ぐIT失敗 (2000年代)】
- FBIは2000年代に数多くのIT投資を行ったが、アジャイル開発を取り入れても相次いで失敗
- 要件の曖昧さ、スケジュール管理の甘さ、ベンダー管理の失敗などの問題があった
これらの大型失敗事例では、アジャイル開発手法の理解不足や運用の甘さ、プロジェクト管理の課題などが原因として指摘されました。アジャイル開発への過度の期待と手法の形骸化が問題視される結果となりました。
このように、一部で顕在化した失敗事例を通じて、アジャイル開発の限界や課題が公に知られるようになった側面があります。
アジャイル開発の課題や限界について、アジャイル推進者達は、何か対策を行っていますか。
はい、アジャイル開発の課題や限界が指摘されるようになった中で、様々な対策がアジャイル推進者たちから行われています。
- アジャイル手法の再検討と改善
- スクラムガイドの改訂など、フレームワーク自体の見直しが行われている
- スケーリング手法の開発により、大規模プロジェクトへの適用改善が図られている
- アジャイル実践の質の向上施策
- アジャイル指導者の育成プログラムの充実化
- アジャイル実践資格制度の確立
- プロフェッショナルコミュニティによるベストプラクティスの共有
- ソフトウェアエンジニアリングとの融合
- テスト駆動開発、継続的デリバリー、DevOpsなどの手法との組み合わせ
- アーキテクチャ、設計の重要性を再認識し、アジャイルモデリングなどの提唱
- アジャイル指導の強化
- 手法だけでなく、アジャイルの考え方や原則の理解を重視
- アジャイルコーチングの役割の確立と人材育成
- アジャイルとプロジェクト管理の融合
- アジャイルプロジェクトマネジメントの実践
- 適切なKPIや指標による進捗管理の推進
このように、アジャイル推進者たちは、手法の改善、実践の質向上、他分野との融合、指導の強化など、様々な対策を講じながらアジャイル開発の成熟を図っています。課題を認識しつつ、より良い形でアジャイル開発を発展させていく動きがあります。
米国のソフトウェア開発の将来を考えたとき、アジャイル開発は改良されて発展していくと思いますか。
それともウォーターフォールモデルなど他の開発プロセスモデルに移っていく可能性がありますか。
米国のソフトウェア開発の将来を見据えると、アジャイル開発はさらに改良・発展が続くと考えられますが、それ以外の開発プロセスモデルも併存していく可能性があります。
【アジャイル開発が発展する理由】
- 顧客要求の変化への対応力が重視される
- 継続的デリバリー、DevOpsなどの潮流とアジャイルが相性が良い
- クラウドネイティブ開発など、新しい開発手法とアジャイルが親和性が高い
- エンジニアリング面での課題に対する取り組みが進められている
【アジャイル開発以外も併存する可能性】
- 規制が厳しい分野や大規模システム開発では、ウォーターフォールなどの従来手法が一定継続
- セーフティクリティカルなシステムなどではV字形モデルなど別の手法が適している
- 新しい手法(リーン開発、CSRM等)が台頭し、アジャイルと併存する場合も
つまり、アジャイルの長所を活かしつつ、課題にも対処していく動きから、アジャイル開発の改良・進化が見込まれます。一方で、システムの特性やドメインに合わせて、ウォーターフォールなど他の手法が使い分けられる傾向も続くでしょう。
簡単に一つの手法に完全に収斂するのではなく、多様な手法が共存しながら、最適なプロセスを選択できる環境が整っていくことが予想されます。アジャイルがメインストリームになりながらも、多様性は維持されていくと考えられます。
今後もアジャイルがメインストリームという流れは変わりないと考えられますか。
はい、今後も米国を中心に、アジャイル開発がソフトウェア開発のメインストリームを占め続けると考えられます。
その理由は以下の通りです。
- 顧客ニーズの変化への適応力 テクノロジーの進化や市場の変化が加速する中で、アジャイルの反復的かつ適応力の高いアプローチが有利です。
- スピーディーなデリバリーへの要求増大
クラウドやモバイル化が進み、スピーディーなデリバリーが求められる中で、アジャイルの手法が合致しています。 - ITシステムの複雑化とアーキテクチャの進化 マイクロサービス化などの新しいアーキテクチャ形態と、アジャイル開発の親和性が高くなっています。
- スタートアップ企業への浸透 新興企業の多くがアジャイルを採用しており、今後もこの流れが続くでしょう。
- 組織文化の変革の必要性 アジャイル導入を通じて、企業文化の変革が求められており、その効果が期待されています。
一方で、規制の厳しい領域などでは従来型手法も残り、完全な一極集中は避けられると予想されます。
しかし、上記の理由から、今後も米国を中心にアジャイル開発は主流の座を維持し続けると考えられ、さらなる進化と普及が見込まれています。
日本においても、米国に遅れてアジャイル開発がソフトウェア開発のメインストリームになっていく可能性はあると思いますか。
それとも日本はウォーターフォールモデルが主流であり続けるでしょうか。
日本においても、遅れはあるものの、徐々にアジャイル開発がメインストリームになっていく可能性は高いと考えられます。
【アジャイル開発がメインストリームになる背景】
- グローバル企業の影響 米国を中心とする多国籍企業が日本法人でアジャイル開発を導入し、その効果が認知される。
- IT人材の国際流動性の高まり 海外でアジャイルの経験を積んだ日本人エンジニアが国内で活躍し、手法の普及に寄与。
- スタートアップ企業の台頭 新興ベンチャー企業を中心にアジャイル開発が浸透し、成功事例が増えることで注目が高まる。
- DevOps/サイバーフィジカルシステムなどの潮流 新しい技術動向とアジャイル開発の親和性が高く、アジャイルの必要性が高まる。
- 日本企業の構造改革の必要性 変革が求められる日本企業において、アジャイル開発導入が新たな競争力獲得の手段として注目される。
一方で、業界や企業文化の違いにより、完全な一極集中は難しい可能性もあります。しかし、徐々にアジャイル開発のメリットが認知され、少なくとも複数の選択肢の一つとして、メインストリームの地位を獲得していくことが予想されます。
日本の場合は米国に比べると遅れはあるものの、同様の流れが起こると見られ、アジャイル開発の浸透が大きく進展していくと考えられます。
本当に日本でも普及するのだろうか
米国でのアジャイル開発の歴史を見ると、米国社会でも当初は日本のウォーターフォールモデル支持者のように、アジャイル開発に否定的な世論が多数派だったようです。
その後、2010年代に急速に世論が反転して、今ではアジャイル開発がメインストリームにあるという事ですが、日本でもこのような流れが生じるのか、現状では分かりません。
ずっと何十年もウォーターフォールモデルで開発を行ってきた人が、それまでのドキュメントベースの開発経験の知見を捨てて、全く新しいコードベースの反復開発に壱から新人のように取り組むのは、辛かろうとは思います。
特にSIer業界ではプログラミングをしないで、設計書だけ書いているシステムエンジニアが少なくない上に、この人達は「上流工程」という多重請負ピラミッド階層の上の方の位置づけに居ます。
この人達は、アジャイル開発などのようなコードベースで上下関係がほぼ無い開発体制を受け入れたくないという心情はあると思います。
そもそも設計書だけ書いて、プログラミングの経験の無い(または少ない)人々は、アジャイル開発がメインストリームになったら働く場を失います。
改めて努力してプログラミングを習熟することになると思いますが、40代50代まで設計書だけ書いていた人達がプログラミングをやりたがるか疑問です。
この辺も日本のITシステム開発でアジャイル開発導入が進まない政治的理由の一つではないかと思われます。
もう一つの理由として、アジャイル開発を導入すると多重請負体制が維持できないという点もあると思います。
多重請負の利権を享受している会社にとっては死活問題になりますからね。
プログラマーにとってはコードベース開発の方がやりやすいでしょう。細かい話はこれ以上はしません。
この先の日本のソフトウェア開発プロセスモデルがどのように変わっていくかは、正直なところ分かりません。
今回は、米国のアジャイル開発普及の歴史について、Claude先生に解説してもらいました。
ではまた。
アジャイル開発は、1990年代後半にソフトウェア開発の分野で提唱された新しい概念です。従来の「ウォーターフォール型」と呼ばれる開発プロセスモデルに対する批判から生まれました。
【アジャイル開発の登場背景】
【アジャイル開発の原則】
2001年に”アジャイルソフトウェア開発宣言”が公開され、以下の価値観が掲げられた
【アジャイル開発の具体的手法】
スクラム (1990年代後半)
XP(エクストリーム・プログラミング) (1990年代後半)
このように、アジャイル開発は柔軟性と顧客重視を重要視する価値観から生まれ、スクラムやXPといった具体的な手法が登場しました。以降、DevOpsの流れなどにも影響を与え、ソフトウェア開発の現場で広く採用されるようになりました。