CircleCI社の主任エンジニアであるMichael Webster氏は、2025年に初めて開催された「QCon AI New York 2025において、「AI Works, Pull Requests Don’t: How AI Is Breaking the SDLC and What to Do about it(AIは機能するが、プルリクエストは機能しない:AIがSDLCを破壊している現状とその対策)」と題した講演を行った。
Webster氏は講演の冒頭でAIの時系列と現在の位置を説明した:
ますます多くの組織が開発業務のワークフローにAIを統合しており、その結果、コード生成が増加している。
カーネギーメロン大学のソフトウェア工学博士課程に在籍するHao He氏が主導したAI支援型コーディングに関する研究では、2000以上のオープンソースソフトウェアプロジェクトを対象に、AIコーディングアシスタント「Cursor」を導入したプロジェクトと、導入していないプロジェクトを比較した。この研究では、Cursorによる静的解析警告の増加やコードの複雑性の上昇が、開発速度とソフトウェア品質の向上をもたらすことが明らかになった。しかし、この効果は一時的なものであり、約1か月後には開発速度の低下が観測された。
同様に、DORA(DevOps Research and Assessment)が実施した「AI支援型ソフトウェア開発の現状」に関する調査では、AI支援型コーディングが開発速度を向上させる「増幅器」として機能する一方で、不安定性の増加も招くことが明らかになった。
コードレビューに関しては、コードの追加行数が削除行数の約25倍に達することが一般的であり、これが多くの組織にとって課題となっている。Graphite社が発表した「State of Code Review(コードレビューの現状)」報告書によると、小規模な組織ではプルリクエストのマージに約4時間を要する一方、大規模な組織では約13時間を要することが明らかになった。しかし、この差異は、小規模な組織が正式なコードレビューを省略する可能性が4倍以上高いことに起因していると結論付けられた。
Webster氏は、CircleCI社におけるソフトウェア開発ライフサイクル(SDLC)および継続的インテグレーション/継続的デリバリー(CI/CD)プロセスに対するAIの影響について議論した。
同社のソフトウェア開発ライフサイクル(SDLC)にAIを活用した結果、約1か月間にわたり開発速度が3倍から5倍に向上したが、その後、技術的負債の蓄積が継続的に観測された。
待ち行列理論(Queuing Theory)は、待ち行列に関する数学的研究であり、到着率、サービス時間、システム容量を分析することで、待ち行列の長さや待ち時間を予測するものである。その代表的な例として「リトルの法則(Little's Law)」があり、以下の式で定義される:
L = λW
ここで、Lは待ち行列の長さの平均値、λは到着率の平均値(スループット)、Wは1行列あたり待ち時間の平均値を表す。
Webster氏は、待ち行列理論の一形態を用いて、遅延が発生する条件を「到着率が処理率を上回る場合」と定義した。
従来のテスト手法では、すべてのテストスイートを実行することが一般的である。一方、コードカバレッジを活用することで、テスト用のコードマップを構築し、依存関係のあるテストを実行し、定期的に再構築することで、テスト時間を短縮することが可能である。
テストインパクト分析(Test Impact Analysis、TIA)は、最近のコード変更によって影響を受けたテストのみを特定して実行するテスト戦略であり、全テストスイートを実行する必要を排除することで、CI/CDのスループットを向上させ、最終的にコスト削減を実現する。この手法では、コードカバレッジデータを用いてテストをマッピングする。
Webster氏は、CircleCI社で採用されているテストインパクト分析(TIA)戦略を示し、定義されたエンドポイントと関連するTypeScriptのテストファイルをマッピングした図を紹介した。最近の7500件のテストに関する調査では、このTIA戦略を用いることで、テスト時間が30分から1.5分に短縮されたことが明らかになった。また、ウェブスター氏は、すべてのコードが同じレベルの精査を必要とするわけではないため、この原則はコードレビューにも適用できると主張した。
Webster氏は講演の締めくくりとして、CircleCI社が開発したAIエージェント「Chunk」を紹介した。このエージェントは「AIの速度でコードを検証する」とされている。そのプロセスは以下の通りである。まずコードを検証し、開発者が既に使用しているパイプラインや環境を活用する。さらに、不安定なテストを修正し、適切なテストとコードカバレッジを提供することで、ソフトウェア製品を常に本番環境に対応可能な状態に保つ。そして、マージ、リバート、ロールバック、コメントから学習を行う。