Harness Engineering 2026年4月12日

ハーネスエンジニアリング事例集 — OpenAI・Anthropic・個人開発

OpenAIの100万行ゼロ手書き実験、Anthropicの三層エージェント設計、個人開発での実践例など、ハーネスエンジニアリングの実事例を体系的にまとめます。

ハーネスエンジニアリングの実証

2026年は「エージェントが難しいのではなく、ハーネスが難しい」と業界が気づいた年です。以下に、規模の異なる3つのレイヤーでの事例を紹介します。

事例1: OpenAI — 100万行ゼロ手書き実験

概要

OpenAIのチームは、内部プロダクトのベータ版を人間の手書きコード0行で構築・出荷しました。5ヶ月間で約100万行のコードが生成され、アプリケーションロジック、インフラ、ツーリング、ドキュメント、内部ユーティリティを含みます。

数値

指標
コード行数約100万行
手書きコード0行
開発期間5ヶ月
初期チーム規模3名
最終チーム規模7名
PR数/エンジニア/日平均3.5
合計PR数約1,500

ハーネス設計のポイント

AGENTS.mdは「目次」として使う

OpenAIのAGENTS.mdは約100行。プロジェクトの百科事典ではなく、構造化された docs/ ディレクトリへのポインタ集として機能しました。

# AGENTS.md (約100行)

## Project Overview
[2-3文のプロジェクト概要]

## Quick Start
See: docs/setup.md

## Architecture
See: docs/architecture/

## API Specifications
See: docs/api/

## Testing Strategy
See: docs/testing.md

## Deployment
See: docs/deploy.md

docs/ ディレクトリがシステムの記録原本(system of record)として機能し、AGENTS.mdはその索引です。

再現可能な開発環境

ワンコマンドで環境を立ち上げられることが前提条件です。エージェントが「環境構築の方法を調べる」ことに時間を使うのは無駄です。

# 理想的な開発環境のセットアップ
make dev  # すべての依存関係のインストール + サーバー起動

CIによるアーキテクチャ境界の強制

フォーマット、アーキテクチャ境界、データバリデーションをCIで機械的に検証します。エージェントに「ルールを守ってね」と頼むのではなく、守らなければマージできない仕組みにします。

# CI設定の概要
checks:
  - formatting: prettier --check
  - linting: eslint
  - type-check: tsc --noEmit
  - architecture: dependency-cruiser
  - tests: vitest run
  - data-validation: zod schemas at every edge

最大の教訓

エンジニアの役割が「コードを書く」から「エージェントがコードを書く環境を設計する」にシフトしました。ハーネスの品質がそのまま出力品質になります。

事例2: Anthropic — 長時間実行エージェントの三層設計

概要

Anthropicの研究チームは、長時間のアプリケーション開発においてPlanner-Generator-Evaluatorの三層エージェント構成を研究・公開しました。

設計と発見

GANに着想を得た対立構造

GeneratorとEvaluatorを分離することで、「自分の成果物を自分で褒める」問題を解決しました。

Planner: ユーザーの要求を仕様書に変換
Generator: 仕様に基づいて実装 + 自己評価
Evaluator: 独立した品質評価(Generator の自己評価を信じない)

研究チームの発見: エージェントは「自信を持って成果物を褒める」傾向がある。人間から見て明らかに品質が低くても。

スプリント契約

実装前にGeneratorとEvaluatorが「完了条件」を交渉する仕組みです。曖昧な「いい感じに」ではなく、テスト可能な基準を定義します。

モデル進化によるハーネスの陳腐化

最も実践的な知見は、ハーネスの前提がモデルの進化で無効になるということです。

時期モデル必要だったハーネス不要になった理由
初期Sonnet 4.5スプリント区切りでのコンテキストリセットコンテキスト不安が強く、残り容量を気にして保守的に
後期Opus 4.6コンテキストリセット不要長時間の連続ビルドが安定

教訓: 定期的に「この制約はまだ必要か?」と問い直す。不要な制約はオーバーヘッドでしかない。

事例3: 個人開発 — ナレッジベースサイト

概要

本サイト(田中省伍のHP)自体が、ハーネスエンジニアリングを適用した個人開発の事例です。

ハーネス構成

CLAUDE.md              # プロジェクト概要、コマンド、参照先
docs/
  SPEC.md              # 仕様・技術スタック
  ARCH.md              # アーキテクチャ決定
.claude/
  settings.json        # Hook設定
  rules/
    coding-standards.md  # コーディング規約
    architecture.md      # アーキテクチャルール

個人開発特有のポイント

1. TDD強制

# CLAUDE.mdより
## 開発ルール(必須)
2. テストを先に書く(TDD)。テストなしの実装は禁止

個人開発では「テストは後で」の誘惑が強い。CLAUDE.mdに明記することで、エージェントにもTDDを強制します。

2. 仕様外実装の禁止

## 禁止事項
- SPEC.md にない機能の先取り実装禁止

エージェントは「ついでにこれも」を提案しがちです。スコープクリープを防ぐための明示的な制約です。

3. ドキュメント自動生成の禁止

## 禁止事項
- README・ドキュメントを勝手に生成・変更しない

エージェントは親切心からREADMEを更新しがちですが、意図しない変更は混乱の元です。

効果

指標ハーネス導入前導入後
テストカバレッジ不定安定して確保
手戻り頻度週2-3回週0-1回
スコープクリープ頻発ほぼゼロ
コード品質の一貫性バラつきあり安定

事例横断の共通パターン

3つの事例から抽出した共通パターンです。

1. 制約が信頼性を高める

すべての成功事例で、エージェントにより多くの自由ではなく、より厳密な制約を与えています。

OpenAI: CIで機械的にアーキテクチャ境界を強制
Anthropic: Evaluatorという独立した検証者を配置
個人開発: CLAUDE.mdで禁止事項を明示

2. 環境を再現可能にする

エージェントが「環境構築方法の調査」に時間を使う状態は非効率です。

# 全事例で共通する原則
# ワンコマンドで開発環境が立ち上がること
make dev    # または npm run dev, bun dev

3. 検証を外部化する

自己評価は信頼できない。検証はエージェントの外部で行います。

検証の外部化手法適用場面
CI/CDパイプラインフォーマット、リント、テスト
別エージェント(Evaluator)品質評価、完了判定
Hook(PreToolUse/Stop)コマンド検証、完了検証
人間レビューアーキテクチャ判断、ビジネスロジック

4. ドキュメントをコードとして管理する

SlackやGoogle Docsに散在する知識ではなく、リポジトリ内の構造化されたファイルとして管理します。

docs/           # 仕様、アーキテクチャ(人間とエージェント両方が読む)
CLAUDE.md       # エージェント向けのプロジェクト概要
.claude/rules/  # エージェント向けのルール

実践ポイント

  1. 小さく始める: CLAUDE.mdとCIからスタートし、必要に応じてHookやマルチエージェント構成を追加する
  2. 制約を恐れない: 自由度を下げることが品質を上げる。OpenAIの100万行がそれを証明している
  3. 定期的に見直す: モデルの進化で不要になる制約がある。オーバーヘッドを最小化し続ける
  4. 知見を共有する: ハーネス設定をGitで管理し、チームやコミュニティで共有する

参考リンク