世界を動かす技術を、日本語で。

ソフトウェアファクトリーが失敗する理由(または:ハーネスエンジニアリングだけでは不十分)

2026年7月24日原文(github.com)

概要

  • ソフトウェアファクトリーの自動化は、AIやエージェント導入で加速しているが、品質維持には限界がある現状
  • コードレビューや設計など、人間の介在が依然として不可欠であり、完全自動化(lights-off)は現実的でない
  • モデルの学習や評価指標は、可読性・保守性といった本質的なソフトウェア品質を十分に捉えていない
  • 効率と品質の両立には、AI活用と人間の知見を組み合わせたプロセス設計が重要
  • 「制約を理解し、適切に最適化する」ことが、現代のソフトウェア開発における最善策

ソフトウェアファクトリーはなぜ失敗するのか — ハーネスエンジニアリングだけでは不十分

  • AIコーディング導入 でソフトウェア開発の自動化が進行中

    • StrongDMやOpenAIなどが「人間がコードを読まず・書かない」完全自動工場を目指す
    • 「あなたがボトルネック」「モデルは十分」「とにかく出荷せよ」という風潮
  • 現実の課題 として、AIエージェントによる事故や障害が増加

    • コードベースの崩壊速度が加速
    • プルリクエスト(PR)レビューの質が低下、インシデントやバグが増加
    • Faros AIのレポートでも、AI導入後にレビュー品質やバグ率の悪化が指摘
  • 「スキル問題」論への疑問

    • 「使い方が悪いだけ」「もっとトークンを使えば解決」といった主張が蔓延
    • 実際には、どれだけハーネスや自動化を強化しても根本的な問題は解決しない
  • 本質的な問題はモデル学習

    • 現状のAIモデルは「短期的な正解」に最適化されているが、「長期的な保守性」や「設計の良さ」は評価・学習されていない
    • ベンチマークも「テストが通るか」しか見ておらず、アーキテクチャや保守性の劣化に無頓着

ソフトウェアファクトリーの歴史とAI導入の現状

  • ソフトウェアファクトリーの起源

    • 1968年NATO会議で提唱
    • 2022年時点では「人間が設計・実装・レビュー・運用」をループで回す体制が主流
  • AI・エージェント導入後の変化

    • 「誰かが作る」→「エージェントが作る」に置き換え
    • 実装スピードは向上するが、レビューがボトルネックに
    • レビューもエージェント化→さらに自動化を進める「lights-off」構想
  • 完全自動化(lights-off)の限界

    • エージェントが解決できない複雑な課題が必ず発生
    • 人間がコードベースを深く理解し直す必要が生じる
    • サイトダウンやユーザー不満、品質劣化のリスク

モデルがコードベース品質を維持できない理由

  • 保守性(メンテナビリティ)の限界

    • モデルは「一部を変えると他が壊れる」ような設計劣化(ショットガンサージェリー)を防げない
    • Martin Fowler, John Ousterhout, Robert C. Martinらの著書で指摘される「良い設計」の実現は困難
  • ベンチマークの問題点

    • SWE-benchなど現行ベンチマークは「タスクが解決できたか」しか見ない
    • 「テストが通ればOK」で、設計や可読性の悪化には無頓着
    • try-catchや型キャストの乱用など、設計劣化を助長
  • モデルの学習構造

    • RL(強化学習)で「テストが通る」ことだけを高速に最適化
    • 設計の悪化は「数週間・数ヶ月後」にしか顕在化せず、学習で考慮できない

現状の限界と今後の展望

  • 最先端の改善努力

    • SWE-Marathon, DeepSWE, Frontier Codeなど、長期的タスクや複雑な品質評価に挑戦
    • しかし「保守性の自動評価」は難しく、モデル自身が「良い設計」を判定できれば最初から良いコードを書けるはずというジレンマ
  • AIによる自動レビューの限界

    • バグやスタイルの検出はできても、設計の良し悪しの上限(天井)は人間の知見に依存
    • 本質的な品質担保には人間の介在が不可欠

効率と品質を両立するためのプロセス設計

  • 人間が担うべき4つのフェーズ

    • プロダクト要件の明確化

    • システムアーキテクチャ設計

    • プログラム設計(型・関数シグネチャ・コールスタックの設計)

    • 縦割りスライス(vertical slice)による段階的実装・検証

    • プロダクト要件

      • ユーザー体験や成果を短いドキュメント・モックアップで定義
      • 技術的な詳細に流されず、ユーザー視点で目的を明確化
    • システムアーキテクチャ

      • サービスやエンドポイント、スキーマの連携を図式化
      • 早期のズレ防止・設計上の落とし穴を回避
    • プログラム設計

      • 実装前に型や関数、ファイル構成を明示
      • コードレビュー時の手戻りを最小化
    • 縦割りスライス(vertical slice)

      • 小さな単位で機能追加・動作検証を繰り返す
      • 100~200行ごとにレビュー・修正しやすくする
  • タスクの規模ごとの運用

    • 小タスクはワンショットまたは軽いフィードバックでAIに任せる
    • 中~大規模は設計フェーズをしっかり踏む
    • 2~3倍の効率化を目指しつつ、品質担保を優先

結論:制約を受け入れ最適化せよ

  • 現時点では「コードを読む」必要がある

    • モデルの限界を理解し、最適な使い方を模索
    • AIと人間の強みを組み合わせて、効率と品質のバランスを最大化
  • 「10~100倍速」幻想より「2~3倍速の安全な開発」を選択

    • 制約を知り、現実的な最適化を追求
    • システム・プロセスを工夫し、レビューや設計に人間の知見を活かす
  • 「制約を知り、レバレッジを探し、コードを読む」ことが現代の最適解


補足・参考リソース

  • HumanLayer:エージェントIDE・コラボレーションプラットフォーム

    • 小規模チーム向け無料プランあり
    • プロセス最適化と保守性評価の両立を目指す
  • 参考文献・資料

    • Martin Fowler『Refactoring』
    • John Ousterhout『A Philosophy of Software Design』
    • Robert C. Martin『Clean Code』
    • StrongDM, OpenAI, SWE-Agent, Frontier Code等の論文・レポート
  • ポッドキャスト・記事

    • The Pragmatic Engineer, AI That Works, 12-Factor Agents など

要点まとめ:

  • 現在のAI自動化は「短期的な正解」には強いが「長期的な品質維持」は不得手
  • 完全自動化幻想ではなく、人間の知見を活かしたプロセス設計が必須
  • 制約を理解し、最適なバランスを探ることが、現代のソフトウェア開発成功の鍵

Hackerたちの意見

今の状況で目立つのはPRレビューだと思う。理想的な世界では、PRは読みやすくて、レビューするのが楽しくて、話し合った内容を反映しているはずだよね。でも現実を見よう。そこまでできることは限られてる。最高のチームがPRレビューをどうやってやってるのかはわからないけど、個人的には最悪だと思ってる。特にUXについてね。GitHubのPRページはずっと嫌いだったから、いつもブランチを引っ張って$EDITORでdiffを開いてレビューしてた。最近は、ひどいUXに言い訳はないと思う。Linear(コードレビューの領域にすらいない会社)が出した基本的なPRレビュー機能は、すでにGitHubが提供しているものよりも優れているよ。シンプルで、PRに小さなモデルを当てて、テーマに基づいてファイルの変更をグループ化し、コメントを追加して重要度でソートする(スキーマ変更 > openapi仕様)。これだけで、レビュー担当者やリクエスターが何もせずに、メンタルの負担がかなり軽減される。これはかなり基本的な機能で、専用のプロダクトが実装する時間を見つけられるような明らかな次のステップがあると思う。他の人の意見も聞きたいな、これが間違ったアプローチだと思う理由や、これを解決するために広く使われているツールがあるのか、あるいはこれが焦点を当てるべき問題じゃない理由とか。

テーマに基づいてファイルの変更をグループ化し、コメントを追加する それってコミットのことじゃない?それとも…そうあるべき?

エージェントウィンドウから直接レビューしてマージするのが正しい形だと思う。

コードレビューの後に統合を待つのは無駄だよ。私(と他の多くのエンジニア)はすでにそれを自動化してる。私のエージェントはレビューリクエストに応じて、私の代わりにレビューをする。人間のコードレビューを強制する会社の方針は無駄だと思う。コードレビューを追いかけているこれらのプラットフォームは運命が決まってる。私のLLMはそんなツールは必要ない。実際に動いているソフトウェアをレビューすべきだ。提案された変更を簡単かつ瞬時にデモできるシステムが必要なんだ。コード(や仕様)は徐々に忘れ去られていく。PRレビューはすでにプロセス(コード)よりも製品(動いているソフトウェア)を検証する方向にシフトしている。ソフトウェア生産の未来は、GitHubじゃなくてReplitみたいな感じになると思う。

PRレビューはエージェントが登場するずっと前からひどかったけど、今はもっとひどい。レビューするものが増えたからね。

LLMが重要性を判断したり、コードを要約するのがあまり得意じゃないと思うんだ。最終的にはtreesitterベースのアプローチを試してみたけど、すごく気に入ったよ。まだプロダクションには全然足りないけど、似たようなことをやるプレイヤーが出てくる余地はあると思う。

最高のチームがPRレビューをどうやってやってるのかは分からないけど、僕の視点からすると最悪だね。特にUXについて言ってるんだけど、僕はずっとGitHubのPRページが嫌いだったから、通常はブランチを引っ張ってきて$EDITORでdiffを開いてレビューしてた。$EDITORがVSCodeの時は、GitHubのPRページにショートカットがあって、.を入力するとgithub.devでVSCodeのインスタンスが開くんだ。

リニアPRのことを指摘してくれてありがとう、見逃してたよ。面白いのは、他の十数社がGitHubのホスティングやバージョニングの側面に参入しようとしてるのに、PRの側面に取り組んでるのはずっと少ないってことだね。

PRレビューは最悪だよ。エンジニアがそのためにコードを書くことを最適化しないから。最適化されてるときは楽しいけど。エージェントが生成したコードのPRレビューは最悪だね。私の経験では、エージェントはレビュー用に書くのがすごく下手なんだ。レビュー過程が生成されたコードアーティファクトに反映されてないから、彼らが訓練されてるのはその部分じゃないし。エージェントは常に一度にすべきではない大きな変更を生み出して、関係のないコードに手を出して、含めるべきかどうかの判断が甘いことが多い。

ここにはいいアイデアやポイントがいくつかあるけど、この部分には驚いた:> # これを試しました > 2025年7月に完全にライトオフにしました 2025年秋/2026年春頃にモデルの有用性が一段階上がったってのは、もうみんな受け入れてるんじゃないの?その後、エージェントに全機能を渡せるようになったけど、それ以前は無理だった。あの時期以前の「エージェントができること/できないこと」に関する視点や経験は、現代にはあまり関係ない気がする。TFAは数セクション後に「でもモデルはその後良くなったに違いない」と言ってるけど、改善を無視してる。それは私の経験とは合わないな。

投稿や著者のプロダクトのウェブサイトを読んでいると、そんな印象を受けた。多くの部分が2025年に取り残されているように感じる。例えば、彼らのウェブサイトの「ロングコンテキストは答えじゃない」っていう投稿は、正直言って正確じゃないと思うし、彼らが新しいモデルに対して過去のパフォーマンスをそのまま当てはめている印象を受ける。私の経験では、Opus 4.6以降はロングコンテキストに対して非常に信頼性が高い(700-900Kトークンで知能が落ちるとは感じない)。確かにコスト効率は最悪だけど、ちゃんと機能してる。

Opus 4.5は確かに能力の大きな変化だった。Opus 4.5以降にこれらのことを試すこともせずに意見を言う人の意見は、全く価値がないと思う。まだ完璧からはほど遠いけど、すごく役立つよ。

Hacker Newsで議論の続きを見る