LECTURE

座学編
概念の地図とハーネス設計の実演

今夜の [120min] のうち、講師が話す [80min] 分の資料です。前半で言葉の整理をして、後半でその言葉が実際のコードと設定にどう対応するかを、講師の画面で動かしながらお見せします。手元の環境は使いません。

2026年8月27日(木)
座学 [80min]
オンライン ZOOM ウェビナー
講師 安田 光喜(Givery)
この座学で扱うこと
[10min]

オープニング座学

エージェンティックエンジニアリングという言葉が指す範囲と、今夜出てくる概念の位置関係を1枚で示します。

[30min]

概念整理座学

プロンプトとコンテキストの違い、LLM wiki とツールユースと MCP の役割分担、ハーネスが決める5つの面を扱います。

[20min]

ハーネス設計デモライブデモ

ガードレール、Skill 導入、Skill 化、Plan モードでのサブエージェント作成、セルフレビューループの5本を講師の画面で動かします。

[20min]

振り返り・次回予告・質疑応答座学

今夜の概念と実装の対応を1枚の表にまとめ、第3回のテーマへの接続点をお伝えしてから質疑に入ります。

SESSION 01 ・ [10min]

オープニング

最初の10分で、今夜出てくる言葉の位置関係をお伝えします。ここを飛ばすと、後半のデモで出てくるファイル名がどの層の話なのか分からなくなります。

01 エージェンティックエンジニアリングの範囲

エージェンティックエンジニアリングは、モデルへの指示文を磨く仕事ではありません。モデルの外側にある、渡す情報・与える権限・進ませる手順・確かめ方・残す記録を組み立てる仕事です。同じモデルを使っていても、この外側が違えば結果は変わります。

第1回(2026年5月)では、Hooks・Skills・サブエージェントの3つを、Nginx 風のログから 5xx の多発原因を要約するエージェントという題材で1つずつ動かしました。部品の作り方を扱った回です。今夜はその部品を支える側、つまり部品に何を読ませ、どこで止めるかという設計に進みます。

第1回に参加していない方へ

第1回の内容を書けることは前提にしていません。今夜のハンズオンで使う部品は、完成済みの状態で配布します。第1回で扱った3つの機能は、この後の 概念整理 で役割の違いから説明し直します。言葉の定義は補足ページの用語集にも置いていますので、聞き慣れない言葉が出てきたらそちらを開いてください。

02 今夜の概念地図

今夜出てくる言葉は、下の4つの層のどこかに属します。デモやハンズオンでファイル名が出てきたら、それがどの層のものかをこの図で確かめてください。

[ 人 ] 何を任せ、どこで自分が判断するかを決める │ [ ハーネス ] 入口 / 権限 / 手順 / 検証 / 記録 の5面 ├─ コンテキスト context/ ・ CLAUDE.md ・ LLM wiki ├─ 手順 Skills ・ サブエージェント ├─ 制御 Hooks ・ 権限設定 └─ 外部接続 ツールユース ・ MCP │ [ モデル ] 推論そのもの。今夜はここを触りません

今夜さわるのは真ん中の帯だけです。モデルの選択も、プロンプトの言い回しも扱いません。

03 今夜の到達点

参加の型この座学での関わり方後半のハンズオン
TYPE A手元は使いません。デモを見ながら、自分の環境で再現する箇所を決めてくださいすべて手元で実行できます
TYPE B同上。GitHub Copilot での読み替え先を、デモの各所でお伝えします配布データの copilot/ で進めます
TYPE C同上。座学は全員が同じ条件です投影の実行ログを読み、テキストエディタに書きます

参加の型は事前セットアップガイドの冒頭で決めていただいています。まだ決めていない場合は、いま決めてください。

SESSION 02 ・ [30min]

概念整理

ここが今夜いちばん長いパートです。4つのトピックを扱い、最後に LLM wiki の初期テンプレートをお渡しします。そのテンプレートが、後半のハンズオンでさわるファイルそのものです。

01 プロンプトエンジニアリングとコンテキストエンジニアリング

Anthropic の技術ブログ記事 Effective context engineering for AI agents のページ。記事タイトルと本文の冒頭が表示されている。
この整理の出典です。コンテキストを「モデルに渡す情報の設計」として扱う考え方が、ここで説明されています。

2つの違いは、書いたものが1回で消えるか、以降ずっと効き続けるかです。プロンプトは1回のやりとりごとに書き直しますが、コンテキストは一度置けば、次の実行にも、来週の実行にも、他の人の実行にも効きます。

観点プロンプトエンジニアリングコンテキストエンジニアリング
対象1回の指示文の言い回し推論時にコンテキストウィンドウへ何を供給するか
寿命そのやりとり限り置いた場所が読まれる限り
置き場所チャット欄CLAUDE.mdcontext/、ツール定義、参照させる外部データ
効く相手自分だけ同じリポジトリを使う全員
直せるもの文体、出力の形、粒度内容の正しさ、参照先、禁止事項

出力が気に入らないとき、どちらを直すかで手間が変わります。文体や長さが気に入らないならプロンプトかテンプレート、書いてある内容が事実として間違っているならコンテキストです。ここを取り違えると、事実の誤りをプロンプトの言い回しで直そうとして、毎回書き直す羽目になります。

今夜この違いをどう確かめるか

後半のハンズオン Step 2 と Step 3 で、同じ問い合わせに、同じコマンド、同じモデル、同じ部品のまま、参照するコンテキストだけを変えて2回実行します。差が出たときの原因が1つに絞られる形にしてあります。

02 LLM wiki・ツールユース・MCP の役割

Model Context Protocol の公式仕様ページ。仕様のバージョン 2026-07-28 が示されている。
MCP は仕様がバージョン管理されています。日付形式のリビジョンが振られているので、社内で採用するときはこの番号で合わせてください。

この3つは並べて比べる対象ではありません。層が違います。LLM wiki は渡す中身、ツールユース はモデル側の能力、MCP はその能力へツールを供給する規格です。

LLM wikiツールユースMCP
何の話か渡す知識の中身関数を呼ぶモデルの能力ツールを供給する側の規格
誰が用意するかその業務を知っている人モデルの提供元サーバーの実装者
リポジトリ内の Markdownツール定義(名前・説明・引数)JSON-RPC 2.0 のやりとり
供給されるもの用語・判断ルール・台帳・様式読む、書く、実行する、外部を呼ぶResources / Prompts / Tools の3種
増やしすぎると古い記述が事実として読まれるツール定義がコンテキストを圧迫する接続先ごとに権限の管理点が増える

MCP を使わなくてもツールユースは成立します。同じツールを複数のAIツールへ配りたくなったときに MCP が効いてきます。ツールの数と説明文もコンテキストの一部を占めますので、接続すること自体がコストになる点は押さえてください。

仕様の版に注意してください

MCP の現行版は 2026-07-28 です。この版では、初期化のハンドシェイクでセッションを張る方式をやめ、リクエストごとにプロトコル版と機能を宣言するステートレスな形に変わりました。2025-11-25 以前の実装との相互運用は、仕様側に後方互換の手順が定義されています。出典は本セクション末尾の SOURCES に置いています。

03 コンテキストの整備とハーネス設計

ハーネスは、モデルの外側にあるものをまとめた呼び方です。決めることは5つあります。

決めること今夜の実物
入口何を読ませるかCLAUDE.mdcontext/ の4ファイル
権限何をさせないか.claude/settings.json の permissions
手順どう進ませるか.claude/skills/triage/SKILL.md
検証どう確かめるかサブエージェント policy-reviewer
記録何を残すか.claude/audit/approvals.log

コンテキストの整備は、このうち入口の話です。ただし入口を決めると、検証で何を見るかも自動的に決まります。「一次回答で完結してよい条件」を rules.md に書いた瞬間、その条件に照らして判定する役が必要になるからです。

LLM wiki の初期テンプレート

4ファイルで足ります。業務ドメインが変わっても、この4つの役割分担は変わりません。配布ファイルの context/ に、そのまま書き始められる形で入れてあります。

context/
  glossary.md          社内呼称と正式名。略語、通称、部署の呼び方
  rules.md             判断ルール。一次回答で完結してよい条件、人間の承認が必要な操作
  systems.md           システム台帳。名前、認証方式、問い合わせ窓口、よくある詰まり
  templates/reply.md   出力様式。件名、本文、二次対応の要否という3欄

書く分量の目安は、4ファイル合わせて最初は30行前後です。完成した社内 wiki を先に作ろうとすると着手できません。1件動かして、返ってきた質問に答える形で足していくと、必要なものが必要な順に埋まります。

書かないほうがよいもの

人が読む社内 Wiki と違い、背景や経緯は省きます。判断に効く記述だけを置いてください。もう1点、更新されなくなった記述は害になります。人は社内 Wiki の古い行を読み飛ばしますが、エージェントは読み飛ばさず、現在の事実として使います。context/ は増やす運用より、事実でなくなった行を落とす運用のほうが効きます。

04 Hooks・Skills・サブエージェントの連携

Claude Code 公式ドキュメントの Hooks ページ。フックのイベント種別と設定方法が掲載されている。
イベントの一覧はこのページが正です。今夜は入口を止める使い方だけを扱いますが、種類は随時追加されています。

3つとも「AIに何かをさせる」仕組みに見えますが、確実に実行されるかどうかが違います。ここを揃えて考えると、どれをどこに使うかで迷わなくなります。それぞれの定義は補足ページの用語集(HooksSkillsサブエージェント)に置いています。

HooksSkillsサブエージェント
実行の確実性決めた地点で必ず走るAIが必要と判断したときに読む親が呼んだときに動く
主な用途止める、記録する手順を渡すコンテキストを分ける
書くもの設定と、実行するコマンドSKILL.md(フロントマター+本文)フロントマター付き Markdown
置き場所.claude/settings.json.claude/skills/<名前>/SKILL.md.claude/agents/<名前>.md
向かないこと柔らかい判断絶対に守らせたい要件1往復で終わる小さな作業

絶対に越えさせたくない線は Hooks に置いてください。Skills に「送信前に必ず確認すること」と書いても、読むかどうかはAIが判断します。読まれない可能性のある場所に最後の一線を置くと、事故が起きたときに原因を追えません。

サブエージェントを分ける理由は品質ではありません。分けると、そのサブエージェントが読んだファイルの全文が向こう側で完結し、親には結論だけが返ります。3件、4件と連続で処理したときに前の案件の情報が混ざらないのは、この分離が効いているためです。件数が少ないうちは1体でも動きます。

今夜の構成での対応

後半のハンズオンでは、この3つが同時に動きます。triage という Skill が手順を持ち、サブエージェント3体(事実を集める、回答を書く、判定する)を順に呼び、out/ への書き込みを Hook が見ています。3つの役割の違いを、画面の止まり方の違いとして確かめていただきます。

SOURCES
SESSION 03 ・ [20min]

ハーネス設計デモ

ここからは講師の画面で実際に動かします。5本を各 [4min] で回します。手元での再現は求めません。各本の最後に、実務のどこで使う手かをお伝えします。

01 自然言語での Hook ガードレール [4min]

Hook の設定を手で書かず、Claude Code に頼んで作らせます。送信するのは次の1文だけです。

out/ 配下に URL やサーバーパスを含む文書を書き込もうとしたときに止まる PreToolUse フックを
作ってください。承認記録が .claude/audit/approvals.log にある場合だけ通してください。
設定と、フックが実行するスクリプトの両方を作って、内容を見せてから書き込んでください。

返ってくるのは .claude/settings.json への追記と、シェルスクリプト1本です。設定側は次の形になります。matcher で対象のツールを絞り、command にスクリプトのパスを書く構造です。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          { "type": "command", "command": "bash hooks/approval-gate.sh" }
        ]
      }
    ]
  }
}

実務での使いどころは、既存プロジェクトに1本目の Hook を入れるときです。イベント名と JSON の構造を調べるところで止まりがちですが、やりたいことを日本語で書けば形にはなります。返ってきた設定が意図どおりかどうかは自分で読んでください。matcher が広すぎて関係のない操作まで止まる形になっていることがあります。

02 公式 Skill を用いたハーネス導入 [4min]

Claude Code 公式ドキュメントの Skills ページ。SKILL.md の書式が説明されている。
デモで使う Skill の書式はこのページに従っています。手元で作るときの雛形として開いてください。

Skill は自分で書く前に、既にあるものを入れて挙動を見るのが早い手です。Claude Code には最初から使える Skill が同梱されていますので、/help で一覧を出し、そのうち1本を実際に呼びます。

/code-review

画面には、変更点を読んで指摘を返す動きが出ます。ここで見ていただきたいのは指摘の中身ではなく、Skill が呼ばれた瞬間に、それまで会話になかった手順が差し込まれる点です。SKILL.md の本文は、呼ばれるまでコンテキストに載りません。載るのは description だけです。

実務での使いどころは、チーム内で手順を配るときです。長い手順書を CLAUDE.md に書くと毎回全文が読まれますが、Skill に切り出すと、関係する場面まで中身が読まれません。CLAUDE.md が肥大してきたら、手順の性質を持つ節から Skill へ移してください。

03 成功体験の Skill 化 [4min]

うまくいったやりとりを、その場で Skill に固めます。作業が終わった直後のセッションで次を送ります。

いま私とやったこの手順を、次回そのまま再現できる SKILL.md にしてください。
私が判断した箇所は、判断のしかたも含めて残してください。
うまくいかなかった試行は書かないでください。

できあがる SKILL.md は次の形です。フロントマターの description が、この Skill をいつ読むかの判断材料になります。ここが曖昧だと、必要な場面で呼ばれません。

---
name: incident-first-reply
description: 社内ヘルプデスクの問い合わせに一次回答を作るときに使う。
  用語集と判断ルールを参照し、承認が必要な操作を判定してから回答を書く。
---

## 手順
1. context/glossary.md と context/systems.md から、該当システムの事実を集める
2. context/templates/reply.md の様式で回答本文を書く
3. context/rules.md に照らし、承認が必要かを判定する
4. 承認が必要な場合は、書き込まずに利用者へ確認する

実務での使いどころは、月に何度も繰り返している作業です。3回同じことを説明したら Skill にする、という基準にしておくと溜まっていきます。

04 Plan モードでの Subagents 作成 [4min]

Claude Code 公式ドキュメントの Subagents ページ。サブエージェントの定義ファイルの置き場所と書式が説明されている。
サブエージェントの定義はファイルで持ちます。置き場所と項目名はこのページの通りです。

ShiftTabPlan モードに切り替え、サブエージェントの定義を作らせます。このモードでは、コードベースの調査が読み取り専用のサブエージェントへ委譲され、調査の過程は別のコンテキストに隔離されたまま、計画だけが提示されます。

context/ を読んで、一次回答を作る流れを3体のサブエージェントに分ける案を出してください。
それぞれの役割、渡すツール、返す形式を決めて、計画として見せてください。まだ書き込まないでください。

提示された計画に合意してから書き込ませると、次のような定義ファイルができます。フロントマターで名前・説明・使えるツール・モデルを宣言し、本文がそのサブエージェントのシステムプロンプトになります。

---
name: context-researcher
description: context/ を検索して、回答に必要な事実だけを根拠付きで返す。
tools: Read, Grep, Glob
model: inherit
---

context/ 配下だけを調べます。見つけた事実は、出典としてファイル名と該当箇所を添えて返します。
context/ に書かれていないことは推測せず、「記載なし」と返します。回答本文は書きません。

tools を絞っている点を見てください。調べる役に書き込みのツールを渡していません。役割を分けるだけでなく、渡す道具も分けると、想定外の操作が起きにくくなります。

実務での使いどころは、いきなり作らせて後から直すのが高くつく場面です。サブエージェントは一度作ると呼ばれ続けますので、役割と権限は計画の段階で決めてしまうほうが、後の手戻りが少なくなります。

05 AI によるセルフレビューループの設計 [4min]

生成物を、別の観点でAI自身に検査させます。検査の観点は人が決めて、実行だけを任せる形です。

out/ に書いた回答を、次の3点で検査してください。
1. context/systems.md に書かれていない事実を書いていないか
2. rules.md の「人間の承認が必要な操作」に該当しないか
3. templates/reply.md の3欄がすべて埋まっているか
1つでも落ちたら、落ちた理由を挙げて、回答を書き直してから再検査してください。

画面には、検査で落ちて書き直し、もう一度検査して通るまでの往復が出ます。セルフレビューループで効くのは、検査の観点を人が固定している点です。「よくレビューして」と頼むと、その時々で見る場所が変わります。

往復の上限は決めてください。落ちるたびに書き直させると、通らない要件のときに止まらなくなります。実務では2回落ちたら人を呼ぶ、という形にしておくと、コストが読めます。

デモ5本の共通点

5本とも、AIに作らせたものを人が読んでから採用しています。設定ファイルもサブエージェントの定義も、一度置けば以降ずっと効き続けます。効き続けるものを作るときだけは、生成された中身を読んでから確定させてください。

SOURCES
SESSION 04 ・ [20min]

振り返り・次回予告・質疑応答

ハンズオンが終わった後の20分です。今夜出てきた概念が、どのファイルに対応していたかを1枚で確認してから、質疑に入ります。

01 概念と実装の対応

この表が今夜の総整理です。左の列が座学で扱った概念、右の列がハンズオンで実際にさわった場所です。持ち帰る配布ファイルの中に、右の列がそのまま入っています。

概念今夜の実物変えると何が変わるか
コンテキストエンジニアリングcontext/systems.mdcontext/rules.md回答の内容と、案内先の正しさ
LLM wikicontext/ の4ファイル同じリポジトリを使う全員の出力
出力様式context/templates/reply.md文面の構成。内容は変わりません
オーケストレーション.claude/skills/triage/SKILL.md誰がどの順番で動くか
サブエージェント.claude/agents/ の3ファイル親の会話に何が積み上がるか
Human in the looprules.md の承認が必要な操作エージェントが自分で判断してよい範囲
Hooks による安全設計hooks/approval-gate.shルールが消えても残る最後の一線
記録.claude/audit/approvals.log後から誰が何を通したかを追えるか

今夜の40分で受講者の方が実際に書いたのは、このうち上の2行だけです。書いた分量は10行前後で、それで出力が別物になりました。残りの行は完成品として配っていますので、明日からは中身を読み替えて使ってください。

02 第3回への接続点

第3回は2026年11月、テーマは「ハーネスエンジニアリング 2026」です。今夜は1本の直列パイプラインを、人が見ている前で動かしました。第3回では、それを複数同時に、人が見ていない時間帯にも動かしたときに何が壊れるかへ進みます。

今夜(第2回)第3回で扱う予定
サブエージェント3体を直列で回す複数のエージェントを同時に走らせたときの調停
1件ずつ、人が画面を見ている長時間動かしたときの破綻と、その検知
承認記録を1本のログに残す記録を運用に載せる形(誰が読み、何を止めるか)
第3回までの3か月で手元に置いておくと接続が良いもの
  • 記録だけを行う Hook を1つ、自分のプロジェクトに入れておく。止める Hook より先に、何が起きているかを見る
  • 今夜お渡しした context/ の4ファイルを、自分の業務の語彙で埋めておく。30行で構いません

03 質疑応答

ZOOM のチャットへお書きください。読み上げてお答えします。時間内に答えきれなかった質問は、補足ページの追加資料に回答を追記します。追記の予定は開催の翌週です。

本サイトは開催後も同じURLで公開を続けます。座学の内容、ハンズオンの手順、実行ログはそのまま残りますので、当日その場で動かせなかった場合も、後からご自身の環境で再現できます。

今夜の内容を、社内の誰から始めるのがよいですか
その業務の用語と判断ルールを説明できる人から始めてください。context/ に書く内容は、コードの知識ではなく業務の知識です。実装に詳しい人が書くと、社内の呼称や例外の扱いが抜けます。書く人と動かす人を分けても構いません。
会社で使えるのが GitHub Copilot だけです。今夜の内容は使えますか
使えます。context/ の4ファイルに何を書くかという判断は、ツールを問いません。参照される場所が .github/copilot-instructions.md に変わります。配布ファイルの copilot/ に、4ファイルを1枚に畳んだ版と、サブエージェント3体をチャット3往復に置き換えた手順を入れています。
承認ゲートを入れると業務が遅くなりませんか
止める対象を広げすぎると遅くなります。最初は記録だけを行う Hook から始めてください。しばらく見て、実際に危なかった操作だけを止める対象へ昇格させると、止まる回数が実態に合います。今夜の hooks/approval-gate.sh も、out/ への書き込みのうち URL やサーバーパスを含むものだけを見ています。