
こんにちは。ノバセルの細川です。
この記事はノバセル テクノ場 出張版2025 Advent Calendar 2025の11日目の記事です。
はじめに
ソフトウェア開発において「質とスピードはトレードオフである」という考え方は根強く存在します。しかし、この命題は正しいのでしょうか。そして、Agentic Codingの登場によって、この議論はどのように変化するのでしょうか。
質とスピードは本当にトレードオフか
「質とスピードのトレードオフ」は、より正確には「保守性とスピードのトレードオフ」と言い換えることができます。
シニアエンジニアであれば、スピードを維持しながら保守性の高いコードを書くことができるとされています。一方、ジュニアエンジニアにとっては、両立が難しい場面も多いでしょう。この事実は、スピードと保守性が本質的なトレードオフではないことを示唆しています。
さらに、質の低いコードが蓄積すると開発スピードが低下することは広く知られています。技術的負債という概念が示すように、短期的なスピードを優先した結果、長期的には大きなコストを払うことになるのです。
ペアプログラミングが教えてくれること
ペアプログラミングについて考えてみましょう。単純計算では、2人の工数で1つの実装を行うため、速度は半分になりそうです。しかし、『Pair Programming Illuminated』などで示されているように、これは誤りです。
ソフトウェア開発において、新規コードの生産よりも欠陥の修正に多くの時間がかかります。最終的な工数は「新規コード生産」と「欠陥修正」の和です。コードの質が高ければ欠陥の発生率は下がり、発生した欠陥の修正も容易になります。 つまり、ペアプログラミングは質の高さを担保することで、ライフサイクル全体での速度を向上させることが知られています。
また、質には必ずしも影響しないですが、ペアプログラミングでは、以下の側面によっても速度が担保されています。
- 集中力の維持
- 一人で作業していると、集中が途切れがちですが、隣に人がいることで緊張感が生まれ、高い集中力を持続できます。
- ナビゲーターによる並行調査
- ドライバーがコードを書いている間、ナビゲーターはAPIのドキュメントを調べたり、次に実装する部分の設計を考えたりできます。この並列作業により、一人で「書く→調べる→書く」と直列に進めるより効率的になります。
Agentic Codingが覆す前提
Agentic Codingは、これまでの前提を根本から覆します。
まず、基本的に誰でも同じ仕組みでコードを生成するため、「シニアエンジニアであれば質とスピードを両立できる」という話は成立しなくなります。与えるコンテキストによる差はあるものの、シニアとジュニアの差はこれまでのプログラミングほどは大きくないでしょう。
また、Agentic Codingは最初の作成速度こそ爆発的に速いものの、生成されるコードの質は従来のシニアエンジニアが書くコードほど高くはありません。Agentic Codingでは並行調査のような速度面のメリットは得られますが、質の担保という最も重要な点が欠けていて、ペアプログラミングの教訓とは逆方向に進んでいると言えます。
質を維持するためのアプローチとその限界
Agentic Codingでも保守性を維持しようとする場合、取りうる方法は2つしかありません。
1. コーディング開始時に質の高いコードのための入力を行う
例えばSpec駆動開発であれば、振る舞いを事前に規定します。AIは場合によって膨大な設計文書を生成します。それをレビューする必要があり、その精度はシニアエンジニアですら限定的です。詳細な設計に踏み込めば、レビュー量は現実的ではないレベルに膨れ上がります。
2. コーディング後に質を高める
AIが生成した大量のコードをレビューする必要があります。大量のコードを一度にレビューすると、シニアエンジニアであってもレビュー精度が下がることは知られており、改善の程度は限定的です。
なぜこれらのアプローチは質の向上にそこまで作用しないのか
これらの方法は「最初に全てを設計し切ることができる」「まとめてすべてをレビューすることで全ての改善点を見つけることができる」という前提に基づいています。
しかし、これらの前提はソフトウェア開発の歴史の中で非常に困難であることが示されてきました。だからこそTDDのような手法が生み出され、創発的に質の高い設計を目指すアプローチが試みられてきたはずです。
つまり、要件定義、設計、テストコード作成、実装、すべての工程が「設計」であると言えます。Agentic Codingの現時点での使われ方は、この知見に反しています。
現状と今後のアプローチ
結局のところ、今のAgentic Codingは、元からよく知られていた問題をさらに明確化しているように思います。
TDDをはじめとする様々な解決策がこれまで考えられてきましたが、Agentic Codingにはそのまま適用できないケースが多いです。そもそもAIツール自体が探索的な設計をするようには作られていないからです。
そのため、以前のTDDのような手法をAgentic Coding向けに編み出し、可能な限り質を担保することが重要であると考えています。 データエンジニアリングの分野で、適当なガードレールを敷いて変更を小さい単位に保ち品質の担保に努める方法は、9日目の記事で紹介されています。 Webアプリケーションでも同様のアプローチは取れそうで、このガードレールの中で自動的にリファクタリングを実施させるなどして品質を担保していけると良いのではないかと考えています。
もちろん、モデルの進歩でそもそも最初から生成されるコードの質が高くなる可能性もあります。従前通りシニアなモデルにとっては質とスピードはトレードオフでなくなるかもしれません。それでも、少なくとも今、私たちはソフトウェア開発の本質的な課題に改めて向き合う必要があります。速度の恩恵を受けながらも、質を担保する方法を模索し続けることが求められています。