アジャイル開発
Agile ・ アジャイルかいはつ
短い反復で動くものを届け、そのフィードバックで計画を直し続ける開発の考え方。2001年の宣言が起点。
✦ 30秒で試す — 航海計画を磨き上げるより、外れに早く気づくほうが速い区切りを毎週にすると、2週ごとより無駄と手間の合計は?予想してみる概要
アジャイル開発は、「最初に全部を決めて一気に作る」のではなく、短い反復(イテレーション)で動くソフトウェアを少しずつ届けながら、そこで得た学びをもとに計画そのものを更新していく開発の考え方です。特定の手法の名前ではなく、スクラムやエクストリーム・プログラミング(XP)といった具体的なフレームワーク・プラクティス群を束ねる「価値観の傘」にあたります。
起点は2001年に発表された「アジャイルソフトウェア開発宣言」です。当時の軽量な開発手法の提唱者17人が集まり、自分たちの手法に共通する価値観を4つの価値と12の原則にまとめました。「アジャイル(agile=俊敏な)」という言葉自体がこのとき選ばれたもので、以後、反復型の開発全般を指す言葉として定着しています。現代の開発現場で当たり前になっている「2週間ごとのリリース」「毎朝の短いミーティング」「ふりかえり」といった風景は、ほぼすべてこの系譜の上にあります。
大切なのは、アジャイルが「速く作る方法」ではなく「不確実さに適応する方法」だという点です。速さは結果であって目的ではありません。要求が途中で変わることを異常事態ではなく前提として受け入れ、変化のたびに軌道修正できる仕組みをプロセスに組み込む — それがアジャイルの核心です。
なぜ生まれたか
アジャイル以前の主流は、要件定義→設計→実装→テスト→リリースと工程を一方向に進める、いわゆるウォーターフォール型の開発でした。この形がよく引かれる Winston Royce の1970年の論文は、実は一方向に流すだけのやり方を「危険で、失敗を招く」と書き、工程間の手戻りや試作を足すよう勧めていました。それでも、建築や製造業の工程管理になじむ一方向の図だけが契約や管理の雛形として広まり、「最初にすべての要求を正しく決められる」という前提が現場を縛ります。しかしソフトウェアの要求は、ユーザーが動くものを触って初めて具体化することが多く、市場も技術も開発中に変わり続けます。数か月〜数年かけて完成させたシステムが「仕様書どおりだが、もう誰も欲しくないもの」になる — 1990年代には大規模プロジェクトの失敗が繰り返し報告され、この前提の無理が広く共有されていました。
さらに、間違いに気づくタイミングの問題もありました。ウォーターフォールでは統合とテストが最終盤に集中するため、要件の誤解や設計の欠陥が発覚するのは、修正コストが最も高くなった時点です。この構造的な弱点への反省から、1990年代にはスクラム(1995年に発表)、XP(Kent Beck、1999年の著書で体系化)、クリスタル(Alistair Cockburn)など「短いサイクルで動くものを作り、フィードバックで軌道修正する」軽量手法が各地で独立に生まれていました。2001年2月、米ユタ州スノーバードに集まったそれらの実践者が共通の価値観を言語化し、重量級プロセスへの対案として旗を立てたのがアジャイル宣言です。
詳細
4つの価値と12の原則
宣言の本文はきわめて短く、4組の対比で書かれています。「プロセスやツールよりも個人と対話を」「包括的なドキュメントよりも動くソフトウェアを」「契約交渉よりも顧客との協調を」「計画に従うことよりも変化への対応を」。重要なのは、各組の左側(プロセス、ドキュメント、契約、計画)にも価値を認めたうえで、右側を「より」重視すると述べている点です。ドキュメントを書くな、計画するなという意味ではありません。
宣言には12の原則が付属します。要点を挙げると、「価値あるソフトウェアを早く継続的に届けることが最優先」「要求の変更は開発後期でも歓迎する」「動くソフトウェアこそ進捗の最も重要な尺度」「ビジネス側と開発者は日々一緒に働く」「チームは自己組織化し、定期的にふりかえって行動を調整する」「技術的卓越性と優れた設計への継続的な注意が俊敏さを高める」といったものです。短い反復・頻繁な納品・対話・ふりかえり・技術的な質、という現代の開発文化の骨格がここに揃っています。
なぜ短い反復が不確実さに効くのか
アジャイルの主張を一言にすると、「計画の誤りは避けられないので、誤りに気づく間隔を短くする」です。要求は開発のあいだにも少しずつ動きます。チームが最初の計画のまま作り続けると、作ったものと本当に必要なものとのズレは時間とともに広がり、そのズレの分だけ作業が無駄になります。反復の区切りごとに動くものをユーザーに見せれば、そのたびに「いま本当に必要なもの」を観測し直して向きを変えられます。ズレが広がる前に刈り取るので、無駄になる作業の面積が小さくなるのです。
ただし、区切りはただではありません。計画を立て直し、デモを見せ、ふりかえる時間は、そのぶん作る時間を削ります。要求がほとんど動かない仕事なら区切りを増やしても得るものは少なく、要求がよく動く仕事ほど短い区切りの価値が高くなります。「何週間ごとに区切るべきか」に唯一の正解がないのはこのためで、スクラムがスプリントを1か月以内と幅を持たせているのも、この釣り合いをチームに選ばせるためです。
下の部品で確かめてください。時間軸をタップすると反復の区切り(フィードバックの機会)が立ち、区切りをドラッグで動かすと、チームの進む線と「本当の要求」とのあいだの朱の面積(無駄になった作業)がその場で変わります。区切りを1本も置かないと最後に大きく外れ、区切りを増やしすぎると手間が積み上がります。
下の帯をタップすると、そこで動くものを見せて要求を確かめる「区切り」が立ちます。いまは区切りがなく、チームは初週に聞いた要求のまま24週作り続け、最後に大きく外れています。
思想を支えるプラクティスと技術
アジャイルは価値観ですが、それを実際に回すには技術的な裏付けが必要です。「短い反復のたびにリリースできる」状態は、手作業のテストと月次の結合作業では維持できません。XPが持ち込んだテスト駆動開発や継続的インテグレーション(CI/CD)、リファクタリング、ペアプログラミングといったプラクティスは、変化し続けるコードの品質を保つための装置です。自動テストが張り巡らされているからこそ設計を大胆に変更でき、デプロイまで自動化されたパイプラインがあるからこそ「動くソフトウェアを頻繁に届ける」原則が絵空事になりません。この延長線上に、開発と運用の壁を取り払うDevOpsや、リリースのリスクを下げるフィーチャーフラグ・カナリアリリースといった実践があります。アジャイルの原則が言う「技術的卓越性」を怠ると、反復のたびに技術的負債が積み上がり、やがて俊敏さそのものが失われます。
プロセス面の代表格がスクラムで、反復(スプリント)・役割・イベントを定めた最も普及したフレームワークです。仕掛かり中の作業数を制限して流れを最適化するカンバンもよく使われ、両者の違いはスクラムの記事で扱います。いずれも「動くものを早く見せて、フィードバックで修正する」という同じ価値観の実装です。
「アジャイルもどき」の落とし穴
アジャイルは広く普及した一方で、形だけの導入も蔓延しました。典型は、朝会とふりかえりの儀式だけを取り入れ、要求は相変わらず期初に固定され、リリースは年に数回のまま — というパターンです。反復しているのに各反復の成果物が「動くソフトウェア」ではなく中間ドキュメントだったり、ふりかえりで挙がった問題が何も変わらなかったりするなら、それは短いウォーターフォールを繰り返しているだけです。上の部品でいえば、区切りの手間だけを払って、観測した要求で向きを変えていない状態です。
もうひとつの誤解は「アジャイル=計画しない・ドキュメントを書かない」です。宣言はどちらも否定していません。むしろアジャイルのチームは、反復ごとに計画を立て直すぶん、計画行為そのものは頻繁に行います。また「変化への対応」を「仕様が永遠に決まらないことの言い訳」にすると、単なる場当たりになります。判断の基準はつねに「ユーザーに価値が早く届き、学びが次の意思決定に反映されているか」であり、儀式やツールの有無ではありません。宣言の原文がプロセスより「個人と対話」を最初に置いたのは、まさにこの転倒を戒めるためでした。
試問
24週の開発の時間軸です。本当に欲しいもの(teal の線)は週ごとに少しずつ変わり、チーム(金の線)は最後に聞いた要望へ向かって作り続けます。下の帯をタップすると、その週に「動くものを見せて要望を聞き直す」区切りが立ち(ドラッグで移動、タップで外す)、2本の線のあいだの朱の面積が無駄になった作業です。区切りは1回ごとに準備とふりかえりの手間がかかります。
下の帯をタップすると、そこで動くものを見せて要求を確かめる「区切り」が立ちます。いまは区切りがなく、チームは初週に聞いた要求のまま24週作り続け、最後に大きく外れています。
