自分で言語化するシリーズ。昨日は自分のことを書いたが、今日は休み中に考えていた開発のことを書いてみる。
アジャイルソフトウェア開発の思想をおさらい
アジャイルソフトウェア開発を理解する出発点として、何度も読み直すのが「アジャイルソフトウェア開発宣言」と「アジャイル宣言の背後にある原則」である。特に後者が自分にとってはわかりやすく、単純に好みである。
ここで説明されていることとしては、
- 顧客満足のために継続的に開発を行うこと
- 変化への許容量が高いことが競争力につながること
- ビジネスとプロダクト開発は一体であること
- シンプルにムダなく作ることによって価値を最大化させること
- 反復的なプロセスの中で自分たちのやり方を最適化させること
などであり、その内容はとても現実的で、自分が開発に参加することの意義を感じやすい。そういう点がアジャイルソフトウェア開発の良いところだと個人として捉えている。
ソフトウェア開発においてAIが変えること
従来、アジャイル開発が何をしていたかというと、自分の捉え方としては、「作ること(そして作ったものを運用する)には多くのコストがかかるため、スコープを絞り本当に必要なもの以外はむしろ作らない」という意思決定をするということだったと考える。
ただ、ここに Claude や Codex などのAIツールが登場し、これらを利用したソフトウェア開発が何を変えたのかを雑に言うと(非常に雑である)、「作る、という工程の限界費用が圧倒的に下がった」ということだと思う(もちろん、この点についても色々と議論はあると思うが)。
そうなると、いかに「作らないで最大化するか」という観点で向き合っていたアジャイル開発の価値転換が起きてしまうのかもしれないという問いが頭に浮かんだ。考えて議論して「削る」力学を働かせるより、どんどん作って量で攻める。そうすることが AI 時代に最適であり、アジャイル開発自体の思想とギャップがあるのではないか、と。
そんなことを考えていたが、ただ、これで議論を終えるのはアジャイル開発における理解の不足でもあるなとは思う。つまり、アジャイル開発における開発の「コスト」とは何かを解像度をあげる必要がある。
- 問題解決したい対象のドメイン理解を深めるコスト
- ステークホルダーとの調整コスト
- ソフトウェアの品質を維持するコスト
上記のような、単純に「作る」以外のコストが現実にはあちこちに存在しているため、「作る」コストを下げたとしてもボトルネックが他に移動するだけなのである。つまり、AI が開発プロセスに導入されたときに、全体としてみると一部のコストは下がるものの、あまり従来と変わらない部分もあれば、AI によって逆に新たに生み出されてしまうコストも発生するわけで(特に品質や維持の問題)、実際はそんなに大胆な変化が起きることはないのではないか、とも考えられる。
では、アジャイル開発の思想や原則を維持しながら、AI がもたらす旨味を最大限に活かすにはどうしたら良いのだろうか?10倍の速さや品質はすぐには実現できなくても、3倍くらいにはならないだろうか?
Disposability の追求
AI の導入によってソフトウェアを「作る」ことのコストが大胆に削減できる現代においては、やはりアジャイル開発の現場にも多少の変化は付けていくと良いのかもしれないとは思う。それは、「ムダなものは作らない」力学を強く働かせることだけではなく、積極的に「作って捨てる」ことに向けた環境を構築することの重要性はとても高い。
ただし、「作って捨てる」ということもまたコストなのである。
例えば、システムの構造として、作って捨てることが可能なアーキテクチャやコードベースとなっているのかどうかという問題がある。何も考えずに AI のスピードに任せて作り、捨てることを繰り返していくのは明らかに場が汚れていくのが容易に想像できる。
組織的な話としては、AI の産物であったとしても、実際に投資したわけなのでそこに埋没費用があると感じさせてしまうバイアスであったり、捨てることには実際ユーザーにも経営にも説明責任が伴う。また、チームの内部にも「作って捨てる」ことが失敗と捉えられてしまう文化的な背景や社内の意思決定構造の問題も現実的にはあるかもしれない。
ここまで書いてきて思うのは、ソフトウェアを高速かつ容易に Disposable なものにしたいという欲求は AI 云々は特に関係なく、従来からアジャイル開発でやりたかった理想ではないか?ということ。
実際には「作る→仮説検証→捨てる」がサイクルとなるはずで、これを実現するには、技術的な話としては、Observability や Feature Toggle、A/B Testing や 変更容易な DevOps 基盤、コードベースのレイヤーでは疎結合なアーキテクチャとなっているのかといった、必要なことはこれまで作ってきたものとさほど変わることはないのである。
アジャイルソフトウェア開発は経験によって学習を深めていくわけで、経営としても、やはり、意欲の高いメンバーを集め、チームを信頼して任せ切ることが一番ユーザーの解像度を高め、プロダクトの価値を最大化することに貢献できるのである。
意思決定の質を高めるためには、やはり「仮説検証」のテクニックが重要で、AI が作ってくるスピードが圧倒的に速いので、検証がボトルネックとならないように、問題を小さく分解し、単純化していきながら検証の頻度を高める。職能を越えて、共通の「学習」に向けたアウトプットが重要なのである。
つまり、AI が「作る」コストを圧倒的に下げることは、アジャイル開発の思想や構造を変えるのではなく、より理想に近づくことを可能にするのであって、その恩恵を得るためには、Disposable な構造を技術面でも組織面でも構築するという、従来通りのとても基本的な取り組みを水準高く実現することがより重要になってくるのだと理解し始めている。
AI ありきのアジャイルソフトウェア開発
ここまで考えてきた通り、AI 時代における特殊性は(現時点では)特になく、むしろこれまでの基礎的な取り組みが重要であるという結論に至った。アジャイル開発においては AI は実装の速度とそれによる生産量は変えるが、ユーザーやビジネスにとって何を正しいものとして選択するのかという構造自体は何も変わっていない。
これまで鉄則とされてきたような基本的なことをやっていない組織が一番ダメージが大きくなり、逆にちゃんとやっている組織こそが AI の恩恵を受けられる。
細かい手段の変化はかず多くあれど、アジャイル開発の本質はやはりいまでも通用しており、反復的、継続的に仮説検証を繰り返しながらユーザーを含めたステークホルダーとの対話を通じて理解を深めていくことが一番重要なのである。
新しいツールを導入していくこととともに、プロダクトマネージャーだろうとエンジニアだろうとデザイナーだろうと、泥臭く行動していくことができる人と組織、それを支える水準の高い技術を求めていくことを止めてしまわないよう注意していきたい。




