AIコーディング時代の複雑性ラチェット(Complexity Ratchet):90%のテストカバレッジが必要な理由
(x.com/garrytan)ゲイリー・タン(Garry Tan、Y Combinator CEO)がXで共有した長文エッセイで、過去1年間にAIエージェント(Claude Code、Codexなど)とともに2つのオープンソースプロジェクトを作った経験を整理した文章です。約97万行のコードと665個のテストファイルの大半をAIが作成し、同時に15個のエージェントセッションを運用したといいます。彼はこの過程を通じて、「速度と品質はトレードオフ」というソフトウェア工学の長年の命題が崩れたと主張し、その中核メカニズムとして「複雑性ラチェット(Complexity Ratchet)」という概念を提示しています。
核心概念の整理
- ラチェット(Ratchet)とは 一方向にしか動かない歯車装置を指す比喩で、コードベースの品質が後退せず前進だけするようにする構造を意味します。
- 3つの蓄積物 エージェントとの各コーディングセッションごとに、テスト(何が正しいか)、ドキュメント(なぜそう決定したか)、評価結果(品質ベースライン)の3つがコードベースに蓄積されます。
- コンテキストウィンドウの活用 次のセッションでAIエージェントがこの3つをすべて読んで作業するため、テストを壊したり、ドキュメントを無視したり、評価スコアを下げたりできなくなります。
従来方式との違い
- エラーモデルの変化 過去50年間のソフトウェア工学は「エラーは致命的なので予防せよ」という前提でコードレビュー、QA、ステージングなどの複雑なプロセスを作ってきましたが、今では大半のエラーをエージェントが次のターンで診断し修正できます。
- 複雑性限界の拡張 システム複雑性の上限が「1つのチームが頭の中に保持できる量」から「1人の人間と、コードベース全体をコンテキストにロードしたエージェント群」へと広がりました。
- 制度的記憶の永続性 人は退職やバーンアウトで去りますが、テストとドキュメントとして残った知識は、どのモデルでもどの時点でも再び呼び出せます。
90%テストカバレッジの意味
- 非線形の品質曲線 Capers Jonesによる1万件超のプロジェクト研究によれば、カバレッジ70%以下では欠陥除去率が65〜75%にとどまる一方、85〜95%では92〜97%へ急上昇する「ひざ点」が存在します。
- 航空産業の先例 航空ソフトウェア標準DO-178CはLevel A(致命的)システムにMC/DCカバレッジを義務付けており、これは99%以上の欠陥除去率を達成するためです。
- AIが打ち破ったコスト障壁 最後の20%のカバレッジを埋める作業は人間にとって退屈でコストも高かったものの、エージェントは疲れを感じないため、深夜でもエッジケースのテストを延々と書き続けます。
筆者が示した実例
- GBrainの抽出精度改善 10万件以上の信念抽出で「誰がその主張をしたのか」を35%取り違えていた問題を17個のテストで固定し、どの後続バージョンでもそれ以下に落ちないようにしました。
- SuperpowersのTTYテスト AIエージェントが対話的レビューをスキップする挙動をBunの擬似ターミナル機能で直接監視・遮断し、「AIが対話を行ったか」という非伝統的な要件までテスト化しました。
利点と限界
- 利点 外部コントリビューターがシステム全体を理解していなくても、テストさえ通せば安全にPRをマージできるため、協業への参入障壁が下がります。
- 限界 状態を破壊する種類のエラー(誤ったDBマイグレーション、セキュリティ侵害、プライバシー漏えい)は依然として致命的であり、約10%の統合ポイントとインフラは本質的にテストが困難です。
- 反論への回答 「テストをうまく書ける人は、もともとアーキテクチャも上手に設計する」という指摘に対して、ラチェットの核心は人ではなく次のターンのセーフティネットにある点を強調しています。
この記事で筆者が伝えたい核心は、AIコーディングの本当の価値は「速く書くこと」ではなく、「これまで高コストすぎて断念していた水準の検証」を無料にした点にある、ということです。50年間にわたり航空・医療分野の専有物だった90%のテストカバレッジが、今では1人の開発者の日常になり得て、その結果、1人の開発者が作れるソフトウェアの複雑性の上限が劇的に高まった、という観察です。ただし文章自体は自身のオープンソースプロジェクト(Superpowers、GBrain)の宣伝も兼ねており、統計引用の一部(例:GPT-5.5)には検証が必要な部分もあるため、批判的に読む必要があるテキストでもあります。
1件のコメント
https://www.youtube.com/watch?v=mJ2GZRV63TE
sqliteの4倍のLOCでRoRブログを作った方…