claude-code-harness-engineering-memo-2026-04
公開日: 2026.05.01  | 更新日: 2026.05.01

Claude Codeのハーネスエンジニアリングに関する備忘録(2026年4月)

今回は、最近よく話題に上がるハーネスエンジニアリング(Harness Engineering)の考え方と、Claude Codeの設定を見直す際の観点を整理して備忘録として残したものです。

あくまで筆者の環境での運用に基づく内容なので、お使いの環境やバージョンによって異なる場合があります。また、2026年4月時点の情報である点にご留意ください。

Claude Codeの設定にはCLAUDE.md、settings.json、Skills、Auto Memory、Hooksがあります。

vscode-claude-code-settings-memo-2026-03

VS CodeとClaude Codeの設定メモ(2026年3月)

Claude CodeをVSCodeで使うときに出てくる設定方法と、設定ファイルの使い分けについての備忘録です。 ... 続きを読む

上記の記事で設定ファイルの使い分けについて書きましたが、時間が経つと設定の一部が古くなっていることがあります。新機能で以前の回避策が不要になったり、モデルの改善で明示的な指示が要らなくなるなど、機能の発達も早くすぐにユーザーによる最適化やプラクティスはすぐに陳腐化していきます。

ハーネスエンジニアリングは、こうした設定の全体像と見直しの考え方を体系化した概念です。

この記事のターゲット

  • CLAUDE.mdやsettings.jsonの設定が増えてきて整理したい方

  • ハーネスエンジニアリングの概要を知りたい方

  • Claude Codeの設定を見直すタイミングを考えたい方


ハーネスエンジニアリングとは

コーディングエージェントは「モデル+ハーネス」で構成されます。モデルはOpus 4.6やSonnet 4.6のことです。ハーネスはモデル以外のすべてです。CLAUDE.md、settings.json、Hooks、Skills、Auto Memory、MCPサーバーといった設定・制約・自動化の仕組みの総称です。

ハーネスエンジニアリングは、このハーネス部分を設計・最適化する考え方です。プロンプトエンジニアリングが1回の入出力を最適化する技術だったのに対し、ハーネスエンジニアリングはエージェントの運用環境全体を対象にします。

Claude Codeのハーネスの構成要素

CLAUDE.md はClaudeへの指示書です。ビルド手順、コーディング規約、プロジェクト固有のルールを記述します。毎回の会話開始時に読み込まれます。

  • Auto Memory

    • Claudeが作業中に自動で蓄積するメモです

    • プロジェクト知識が自然に溜まっていきます

  • Hooks

  • Skills

    • 必要なときだけ読み込まれる参照情報です

    • コードレビュー手順や文体ガイドなど、常時は必要ないがいざというとき確実に効かせたい知識を置きます

  • settings.json

    • 権限、モデル選択、MCPサーバーの設定です

    • allow/denyリストでツールの使用範囲を制御します

以下の記事で以前説明した内容と合わせると、ハーネスの観点で見ると各要素の役割が理解しやすいと思います。

vscode-claude-code-settings-memo-2026-03

VS CodeとClaude Codeの設定メモ(2026年3月)

Claude CodeをVSCodeで使うときに出てくる設定方法と、設定ファイルの使い分けについての備忘録です。 ... 続きを読む

確率的な制御と決定的な制御

ハーネスの設計で意識しておくべき区分があります。

前提として、CLAUDE.mdの指示は絶対ではありません。「mainにpushしない」と書いても、100%守られるとは限りません。

Hooksとsettings.jsonのdenyルールは決定的です。スクリプトとして毎回実行される、またはパーミッションとして毎回チェックされるため、確実に実行されます。

100%の遵守が必要なルール(フォーマッターの実行、危険操作のブロック)はHooksやdenyに書きます。判断の指針や優先順位のように、確率的でも問題ない指示はCLAUDE.mdに書きます。

設定の陳腐化

ハーネスの各設定は「モデルが単独ではできないこと」に対する対処です。モデルが改善されたり新機能が追加されたりすると、以前の設定が不要になります。

新機能が回避策を置き換えた例

Auto Memoryの登場

以前は「このプロジェクトではpnpmを使う」「ビルドにRedisが必要」のようなプロジェクト知識をCLAUDE.mdに手動で追記される形式が一般的でした。Auto Memoryが自動蓄積するようになり、こうした事実情報はCLAUDE.mdから削除できます。

HooksによるCLAUDE.md指示の置き換え

「コード変更後にPrettierを実行してください」のような指示は、PostToolUseフックに移すと毎回確実に実行されます。

Skillsの自動起動

以前のcommands/ディレクトリでは/command-nameでユーザーが明示的に呼び出す必要がありました。Skills(.claude/skills/)はClaudeが文脈から判断して自動で読み込みます。

settings.jsonのdenyルール

「.envファイルを読まないでください」のような禁止指示は、permissions.deny"Read: .env"と書くと決定的にブロックできます。

モデル改善で不要になった指示

初期のモデルでは「ファイルを読んでから編集してください」のような基本動作の指示が必要でした。現在のOpus 4.6やSonnet 4.6ではこうした指示がなくても適切に動作します。

CLAUDE.mdの各行について「この行を削除したらClaudeが間違えるか」と問いかけてみて、答えが「いいえ」なら削除候補です。

このブログでの例

このブログのCLAUDE.mdにはBash実行ポリシーのセクションがあります。「1回のBash呼び出しにつき1コマンドのみ」「パイプやコマンド連結は禁止」というルールで、settings.jsonのallowlistバイパスを防ぐ目的です。

一方、settings.jsonのpermissions.denyにもrm -rfgit push --forcecurl | bashなど危険なコマンドを個別にブロックする設定があります。Bash実行ポリシーとdenyルールは一部で機能が重複しています。denyルールで十分カバーできている部分があれば、CLAUDE.mdの記述を簡素化できるかもしれません。

設定を見直すタイミング

明確なルールがあるわけではありませんが、きっかけはいくつか考えられます。

  • Claude Codeのメジャーアップデート後

  • CLAUDE.mdが200行を超えたとき(公式推奨の上限目安)

  • 同じ問題が繰り返し起きているとき

  • CLAUDE.mdに書いたルールが守られていないとき

CLAUDE.mdの行数が増えてきたら、Hooks、Skills、denyルールに移行できるものがないか確認することをお勧めします。

今回は、デスクまわりの作業環境を少しずつ整えてきた中で、実際に使っていて満足度の高かったアイテムをまとめて紹介します。

最新の記事を見る
広告
この記事を書いた人
うえんつ
B2B領域のSaaS・アプリケーション開発などを組織で取り組むことが得意なプロダクトデザイナーで、このブログのオーナーです。
今の関心事
Figma・UIデザイン・UXリサーチ・QOL・旅行
今回は、デスクまわりの作業環境を少しずつ整えてきた中で、実際に使っていて満足度の高かったアイテムをまとめて紹介します。
広告