ハーネスエンジニアリングについて🐎
プロンプト / コンテキストエンジニアリングとの違い
今回は、最近よく聞くハーネスエンジニアリングについてです。
プロンプトエンジニアリング・コンテキストエンジニアリングに続く新たな設計思想で、AIエージェント界隈で最もトレンドなワードと言えると思います。
ハーネスエンジニアリングとは
ハーネスエンジニアリングとは、その名の通り馬を制御するための馬具(ハーネス)が由来で、「AIエージェントをうまく動かすための環境を作る」という環境設計です。
従来のようにプロンプトを何度も修正して出力を改善するのではなく、エージェント自身が検証・修正を行い、最初から理想に近いアウトプットを出せるようにするのが目的です。
環境設計 > モデル能力
ハーネスエンジニアリングを導入した開発に関するレポートで、面白い記述がありました。
「環境設計 > モデル能力」という教訓がそのまま当てはまるということだ。エージェントがうまく動かないとき、プロンプトを工夫するより、CLAUDE.mdの構造を見直したり、ドキュメントの配置を整理したりする方が効果が大きかった。[1]
LLMのモデルの性能ではなく、この環境設計が成果物の品質を左右するということです。
なぜ重要なのか
ハーネスエンジニアリングを導入せずにコーディングエージェントを使用する場合、人間による膨大なレビューが必要になります。
特に顕著だと感じるのが、以下のような問題点です。
- 共通化されず大量の重複したコードが複数ファイルに存在する
- 不要なコメントが大量に記述される
- セキュリティリスクの見落とし
一方で、適切な「ハーネス」を整備すると、
- エージェントが自律的に品質を担保する
- 人間は設計判断・ドメイン知識に応じた判断に集中できる
という状態を作ることができます。
プロンプト / コンテキストエンジニアリングとの違い
ハーネスエンジニアリングは、プロンプトエンジニアリング・コンテキストエンジニアリングを包含する、より上位の概念と言えます。
プロンプトエンジニアリングとの違い:
一言で言うと、「強制力」の違いです。
「このルールを守ってください」と書いてもエージェントは忘れることがありますが、リンターやCIで違反をブロックし強制的に指示を守らせることができます。
コンテキストエンジニアリングとの違い:
従来のコンテキストエンジニアリングは「AIに与える情報の設計」でしたが、
それに加えてハーネスエンジニアリングでは外部ツールとの連携・実行環境の設計・フィードバックループの構築など、「AIをどうシステムとして使うか」までを含みます。
ハーネスエンジニアリングの実践方法
AIエージェントが持つすべての機能を使って大規模に導入する必要はなく、小さな改善からでも導入することができます。
1. コンテキストの整備
- アーキテクチャ方針の明文化(例:
CLAUDE.mdなど) - ドメインモデルのドキュメント化(Gitで管理するのが◎)
などの情報の整備をまずします。
AIエージェント自体の実装を変えることはできないため(厳密にはハーネスエンジニリングの範囲ではありますが)、実践ではこのコンテキスト設計が重要となります。
2. 外部ツールとの連携
次に、以下のような仕組みを整備します。
- Linter / Formatter の導入
- CIによる自動チェック
- セキュリティスキャン
機械的チェックはAIに任せ、人間は設計判断のみをレビューすることで、プロンプトエンジニアリングではボトルネックになっていたレビューコストを大幅に削減できます。
私たちは何を学ぶべきか
ここではある程度の設計判断が可能なエンジニアを想定して、個人的に必要だと思うスキルについて記述します。
後述しますが、ハーネスエンジニアリングはある程度の設計力を前提とします。
1. AIエージェントのベストプラクティスを追う
Claude Codeが毎日のようにアップデートされているように、異常なスピードで技術はアップデートされています。
疲れない程度にベストプラクティスをキャッチしていくことが大切です。
2. ドメイン知識をつける
正しい設計判断には正しいドメイン知識が必要です。
ここは必ず人間の手が必要であり、AIの出力を評価する基準になります。
3. ソフトウェア設計・品質向上のための知識をつける
アーキテクチャやテスト戦略、計測・モニタリングの手法など、開発品質向上のための知識がないと、適切な「ハーネス」を導入できません。
感想
このハーネスエンジニアリングが主流になると、AIが書いたコードを読んで説明する力とその設計を判断する力が同時に必要になるので、エンジニアの育成という面では難しいなと感じます。
また、巷でも(?)言われている通り、今後LLMの性能が向上すればこのハーネスも不要になるのではとも思います。
必須スキルというより現時点での流行り、くらいに思ってもいいかもしれません。
参考