Original note
この文章の元になったメモは、2026年5月9日にSubstackへ書いています。先に読書メモとしての流れを読みたい場合は、Substack版「Agentic Engineering Patterns」を読んで、AIコーディング時代の型を考えるからどうぞ。
Simon Willison の「Agentic Engineering Patterns」は、AIコーディングを単なる便利ツールではなく、ソフトウェア開発の作業設計として捉え直すためのガイドです。
元のSubstackでは、ガイドを読みながら自分の実践と重なる部分を書きました。ここでは、そのメモをこのサイト向けに整理し直します。焦点は「エージェントを使うと速い」ではなく、速くなったあとに何を人間が握るのか、そして何をエージェントに渡すのかです。
AIエージェントによる開発を毎日使っていると、便利さより先に、作業の前提が変わっていることに気づきます。コードを書くこと自体は安くなる。一方で、仕様を決める、品質を定義する、検証を設計する、理解できないコードを残さない、といった仕事は消えない。むしろ重くなる。
Agentic Engineeringとは何か
ガイドの冒頭では、エージェントを「Agents run tools in a loop to achieve a goal.」と説明しています。ゴールに向けて、ツールを使い、結果を読み、次の行動を選ぶ。そのループを回す存在です。
Coding agent が単なるチャットボットと違うのは、コードを書くだけでなく、実行できることです。実行できるから、テストを走らせ、ログを読み、エラーを直し、もう一度試せる。ここが Agentic Engineering の出発点になります。
Vibe coding という言葉には、コードをあまり読まず、動くものをAIに作らせる軽さがあります。プロトタイプや週末プロジェクトには合う。一方で、本番運用するソフトウェアでは、動いたあとに残るものを無視できません。コードは読まれるし、保守されるし、次の変更の土台になります。
Agentic Engineering はその対岸にあります。実装はAIに任せても、何を作るか、どこまで品質を担保するか、どう検証するかは人間が握ったままにする。コードを忘れるのではなく、コードを読む、検証する、育てることを捨てない。
Shift in AI coding
| Item | Before | After | Change |
|---|---|---|---|
| AIの位置づけ | 入力補完 | 作業単位を任せる相手 | 補助から委譲へ |
| 人間の仕事 | 実装を進める | 意図・制約・検証を設計する | 下流から上流へ |
| 品質担保 | diffを読む | specと実行結果で担保する | 読解から証明へ |
| 探索 | 一案を考える | 複数案を走らせて選ぶ | 選択肢の量産 |
ここで求められる特性は、すでにソフトウェアエンジニアが持っているものです。アーキテクチャを設計する。仕様を定義する。品質基準を作る。レビューする。AIツールは、それらのスキルを置き換えるというより、持っている人に対して強いレバレッジをかける。
Agentic loop
エージェントに任せるのは、ループの一部
人間が消えるのではなく、目的と判断を持ったまま、実行ループを外へ出す。
Human owns
目的と制約
何を作るか、どこまでを許容するか、何を証明すべきかを先に置く。
Agent executes
loop until evidence
作業単位に切る
specからtaskへ
ツールを回す
編集・検索・実行
結果を読む
ログとdiffを見る
直して戻す
修正して再実行
Human decides
採用するか捨てるか
証跡が目的を満たしているかを読み、出す・戻す・やり直すを決める。
この図で重要なのは、最初と最後が人間側に残っていることです。目的を決めること、品質基準に照らして判断することは、まだ委譲しきれない。
Work design map
調査だけを任せる
リポジトリ構造、既存パターン、関連Issue、失敗しそうな箇所を先に集める。実装はまださせない。
狭い範囲を実装させる
責務と触ってよいファイルを絞る。複数案がありえるときは、同じIssueから別々に走らせる。
別の目で検証させる
変更者とは別のエージェントに、仕様、diff、テスト結果、実ブラウザの挙動を読ませる。
知見を残す
通ったプロンプト、詰まった箇所、次回の制約をAGENTS.mdや検証ログに戻す。
ガイドの全体像
「Agentic Engineering Patterns」は、単発の記事というより、更新を前提にした常緑のガイドです。原則、サブエージェント、テスト、コード理解、アンチパターンまで、AIコーディングを仕事として成立させるための論点が並んでいます。
読んでいて面白いのは、話題の中心が「どのAIツールがよいか」ではないことです。むしろ、エージェントに仕事を渡すために、ソフトウェア開発の基本動作をどう組み替えるかが主題になっている。
Guide structure
Principles
コードが安い世界の原則
コードを書くコストが下がったとき、設計、品質基準、スチュワードシップの価値がどう変わるか。
Working with agents
エージェントの仕組みとGit
LLM、system prompt、tool loop、Git履歴を理解し、作業の渡し方と戻し方を設計する。
Subagents
複数エージェントの使い分け
調査、実装、レビュー、テスト実行など、役割ごとにコンテキストを分けて並列に動かす。
Testing & QA
テストと実動作の担保
Red/Green、自動テスト、ブラウザ操作、コマンド出力の記録を組み合わせて、動いたふりを減らす。
Understanding code
認知債務を返す
エージェントが書いたコードを、ウォークスルーや可視化で理解可能な状態に戻す。
Anti-patterns
やってはいけないこと
未検証の巨大PR、文脈のないdiff、説明不能な生成物を、そのまま他人に渡さない。
Annotated prompts
具体例としてのプロンプト
抽象論だけでなく、実際にどんな指示で何を作らせたのかを、注釈付きで読む。
ここからは、特に自分の実践と重なった部分を中心に書きます。コードが安くなること、知識を蓄積すること、テストと手動検証を組み合わせること、認知債務とレビューの位置づけが変わること。このあたりが、今の自分にとっての核心です。
仕組みとGitを飛ばさない
ガイドの「Working with coding agents」は、派手な章ではありません。ただ、エージェントをブラックボックスとして扱わないための土台になっています。
Coding agent は、LLMにsystem promptとツール定義を渡し、モデルが要求したツールを実行し、その結果をまたモデルへ返すハーネスです。LLM自体は状態を持たない。会話履歴やルールファイルやツール結果を、ハーネスが毎回文脈として組み立てている。
Agent harness
モデルは状態を持たない
会話履歴やルールは、毎回プロンプトとして渡される。文脈は自然に残るのではなく、ハーネスが再構成している。
振る舞いは見えない指示で決まる
エージェントは、ユーザーに見えない長いsystem promptとツール定義を持つ。何が許されているかは、ここでかなり決まる。
ツール呼び出しがループを作る
Bash、Python、ブラウザ、Gitなどを呼び、結果を読み、次の行動を決める。コード実行があるから、動くところまで近づける。
履歴は作業の外部記憶になる
git log、diff、branch、bisect、reflogを読めると、エージェントは過去の判断や失敗から文脈を組み立てられる。
この仕組みを理解すると、なぜ「指示を短くすればよい」だけでは足りないのかが見えてきます。どのツールを持たせるか。どの情報を先に読ませるか。どの作業は新しいコンテキストで切り出すか。どこでキャッシュや履歴が効くか。Agentic Engineering は、モデル単体ではなく、ハーネス全体を設計する話でもあります。
その意味で、Git の章も重要です。Git は単なる保存・復元の道具ではありません。エージェントにとっては、過去の作業、設計判断、失敗、修正の流れを読むための外部記憶になる。
Git as substrate
Gitは「戻せる」だけでなく、読ませるための基盤になる
最近の変更を読ませて、新しいセッションの文脈にする
複数ブランチで別案を走らせ、後で比較する
merge conflict や cherry-pick の失敗を、意図を読ませながら解消する
git bisect の実行条件を作らせ、いつ壊れたかを探す
たとえば新しいセッションに「最近の変更を読んで」と渡すと、git log と diff から文脈を作れる。複数ブランチで異なる実装案を走らせ、あとで比較できる。git bisect のような面倒な調査も、失敗条件さえ渡せば実行手順に落とし込める。
ここは、自分の運用にもかなり近いです。エージェントを使うほど、Gitの履歴を「人間のための記録」だけでなく「次のエージェントが読む文脈」として整えたくなる。コミットメッセージ、PR説明、検証ログの粒度が、次の作業効率に効いてくる。
「Writing code is cheap now」から始める
ガイドの1章目で、最も根本的な主張が出てきます。コードを書くコストが大きく下がった、という話です。以前は、数百行のきれいなコードを書くこと自体に時間がかかりました。そのコスト感が、プロジェクト計画、見積もり、設計、リファクタリング、テスト追加、ドキュメント整備の前提になっていた。
エージェントはこの前提を壊しました。実装、リファクタリング、テスト追加、ドキュメント作成を、同時に複数走らせることができる。夜にいくつかのセッションを走らせておき、朝に結果を見ることもできる。
ただし、「どんなコードでも」のコストは下がったが、「良いコード」のコストまでゼロになったわけではありません。目的に合っているか。将来の変更に耐えるか。エラー処理は妥当か。セキュリティやアクセシビリティを落としていないか。テストは意味を持っているか。ここはまだ判断が要る。
コードが安くなるほど、希少になるのは「どのコードを書くべきか」を決める力です。
実装が安くなるほど、希少資源は上流に移っていきます。何を作るか。どう進化させるか。どの品質で出荷するか。コードの外側にある設計とスチュワードシップこそが差別化要因になる。
だから、同じIssueから複数のエージェントを走らせ、結果を比較する運用が自然になります。一つの案に賭けるより、複数案を見て選ぶ。エージェントAは最小変更、エージェントBは設計整理から、エージェントCはテストを厚めに。結果を比べ、良いところを採る。
Parallel sampling
一つのIssueから、複数の試行を作る
Input
同じIssue
目的、制約、検証条件をひとつに固定する。違うのはエージェントに取らせる作戦だけ。
既存構造に寄せて最小変更
先に設計を整理してから実装
テストと検証ログを厚めに作る
Output
比較して採る
ベストを選び、必要なら良い部分だけをマージする。残すのは、説明と検証結果です。
重要なのは「一発で正解を出させる」ことではなく、比較可能な候補を低コストで増やすことです。
重要なのは、一発で正解を出させることではありません。正解に近い候補を複数作り、人間が選べる状態にすることです。オプショナリティのコストが下がると、意思決定の仕方そのものが変わる。
知識の蓄積が、エージェント時代の武器になる
ガイドの中で一見キャリアアドバイスに見える章が、実はかなり重要でした。ソフトウェア構築の大部分は、「何が可能かを知り、実現方法の大まかなアイデアを持つこと」で成り立っている、という話です。
たとえば、ブラウザでOCRを動かすならTesseract.js、PDFを画像に変換するならPDF.js、という組み合わせを知っているとします。細かい実装はエージェントに任せられる。でも、その組み合わせを知っていること自体が、出発点として強い。
一度理解した有用なトリックは、動くコード例や設計メモとして残せます。次に似た問題が来たとき、エージェントがそれを読む。人間の知識が、次のセッションの初速になる。
Agent-readable knowledge
人間が咀嚼した知識だけが、次のエージェントを速くする
CLAUDE.md、AGENTS.md、スキルファイル、検証ログは、まさにそのための置き場です。プロジェクト構造、コーディング規約、テストの走らせ方、触ってよい境界、過去に壊した箇所。これらを「エージェントが読める形」にしておくと、新しいセッションでも文脈を持って作業できます。
ただし、雑に自動生成した長いルールファイルでは足りない。効くのは、人間がハマって気づいたこと、チームが議論して決めたこと、ドキュメントに残しそびれた口伝を、あとで使える粒度に直したものです。
書かせる前に、どう証明するかを置く。
テストと手動検証が、エージェントの手綱になる
Testing and QA の章は、エージェントを日常的に使っている人ほど刺さるはずです。エージェントに「実装して」とだけ渡すと、動いたように見える成果物が返ってきます。問題は、その「動いたように見える」をどう扱うかです。
Red/Green の形で先に失敗を確認してから実装させる。Willison は「First run the tests」という短い指示を強調しています。まずテストを走らせる。既存のテストスイートを認識させる。プロジェクトの複雑さを把握させる。以降の実装でもテストを追加・実行する方向へ寄せる。
Red を確認しないままテストを書かせると、すでに通るテストを書いてしまう危険があります。エージェントは賢いので、実装に合わせてテストを書くこともできてしまう。それではテストの意味が薄い。
もう一つ重要なのが、Agentic manual testing です。自動テストが通っても、意図通りに動いているとは限らない。Web UIならブラウザを実際に操作させる。APIならリクエストを叩かせる。コマンドと出力をMarkdownに残させる。エージェントの「動きました」を、証跡に変える。
Verification stack
Spec
何ができれば完了かを、画面操作やAPI応答まで落とす。
Red / Green
先に失敗を確認し、エージェントにGreenまで持っていかせる。
Manual path
ブラウザ操作、ログ、スクリーンショットで、人間が読む形の証跡を残す。
Review
別エージェントがspec、diff、実行結果の不整合を探す。
Eval
検証そのものが妥当だったかを、失敗例と評価軸で継続的に測る。
Evidence trail
「動きました」を、あとで読める証跡に変える
期待する操作、入出力、失敗条件を書く。
テスト、curl、ブラウザ操作を実行する。
コマンド出力や画面記録を残す。
別エージェントがspecと証跡のズレを見る。
人間がマージ、差し戻し、破棄を判断する。
テスト出力
失敗から成功への差分
ブラウザ証跡
操作ログと画面記録
レビュー材料
diff、判断、残課題
証跡があると、人間のレビューは「信じるかどうか」ではなく「証跡がspecを満たしているか」に変わります。
自分の実践でも、最初にspecを書き、ブラウザ操作まで含めたVerifyシナリオを定義してから実装に入ることが多くなっています。エージェントに「このspecのVerifyを全部Greenにして」と渡す。逆に、specなしで「いい感じにして」と投げると、だいたい迷走する。
自動テストだけで十分ではないし、人間の目視だけでも足りない。エージェントが作り、エージェントが動かし、エージェントが記録し、人間が判断する。この分担に寄せるほど、作業はスケールします。
認知債務との戦い
Understanding code の章は、コードを書かせる話ではなく、理解する話です。ここで出てくる認知債務という概念が重要です。エージェントが書いたコードの動作を理解できないまま進むと蓄積される負債。技術負債がコード品質の負債なら、認知債務はコード理解の負債です。
エージェントは短い時間で数百行のコードを生成できます。動く。テストも通る。でも、「なぜこの実装なのか」を説明できない。生成速度と理解速度の差が、そのまま認知債務として積み上がっていく。
Cognitive debt
生成速度
エージェントは数分で数百行を書ける。テストも通る。PRも説明文も作れる。
理解速度
しかし、なぜその実装なのかを説明できないまま進むと、理解の負債だけが積み上がる。
対策は、別セッションにウォークスルーを書かせること、アルゴリズムの動きをHTMLで可視化させること、実ファイルから引用した説明だけを残すこと。コードを読むだけでなく、理解可能な形に戻す作業が必要になります。
対策として、別のエージェントセッションに構造化されたウォークスルーを書かせる方法があります。重要なのは、説明を記憶に頼らせないことです。コードスニペットは実ファイルから取得させる。ファイル名や関数名を明示させる。説明と実装の距離を近くする。
さらに、アルゴリズムや状態遷移をHTMLで可視化させるのも有効です。コードの動きを読むのではなく、見える形にする。LLM時代のコード理解は、テキストの説明だけでなく、インタラクティブな理解補助を作れるところが面白い。
コードレビューは死ぬのか、変わるのか
Anti-patterns の章で引っかかったのは、レビューの話です。Willison は、エージェントが生成した大量のコードを自分で検証せずにPRとして出すことを強く戒めています。動作確認済みであること、適切なサイズであること、文脈が説明されていること、説明文そのものも検証されていること。
これは正しい。少なくとも今の時点では、未検証の生成物を他人に渡すのは、実作業をレビュー相手に押し付けているのと近い。
一方で、コードレビューという行為自体は変わるはずです。人間が行単位のdiffを全部読むモデルは、生成量に対してスケールしない。レビューの主体、対象、フローが変わる。
Review shift
レビューの重心は、diffの後ろからspecの前へ移る
Before
下流で読む
After
上流で決め、証跡で見る
diffを読む行為が消えるわけではない。ただし、人間の主戦場は「生成された行」から「満たすべき条件」へ移っていく。
まず、レビューの主体が変わる。エージェントに一次レビューを任せ、人間は最終判断に集中する。ただし、それはAIレビューを盲信することではありません。AIレビューが信頼できるような評価、検証、失敗例の蓄積を作るということです。
次に、レビューの対象が変わる。行単位のdiffではなく、specに対して意図通りに動くかを見る。ブラウザでどう操作させるか、どのAPI応答を確認するか、どの失敗を拾うべきか。レビュー対象はコードから作業システム全体へ広がる。
そして、レビューのフローが変わる。「PRを出す、人間がdiffを読む、コメントする、修正する」という流れから、「spec作成、複数エージェント並列実装、エージェントレビュー、動作検証、人間が承認する」へ寄っていく。
人間はレビューから降りるわけではありません。むしろ、レビューの重心を上流へ移す。最終責任を持つ人間が、何を承認したのかを説明できる状態にする。
書くから、証明するへ
ガイド全体を読んでいて、最終的に残るのは verifiability の話でした。AIコーディングの重心は「書くフェーズ」から「出てきたものをどう担保するか」に移っている。コーディング自体は、汎用ツールでそれなりに動くものが作れる時代になった。重要なのは、誰がどう担保するかです。
完全AI製のPRや、クラウド上で動く複数のエージェントが日常になると、ローカルで人間が一つずつ動作確認するモデルはスケールしません。ブラウザを起動し、自動操作で挙動を検証し、結果をログとして残す。確認作業そのものも、AIに寄せていく。
ただし、担保レイヤーをAI化すると、その担保レイヤー自体を評価する必要が出てきます。レビューエージェントの指摘は妥当か。ブラウザ検証は本当にバグを拾っているか。複数案から選ぶ基準は再現可能か。ここを測れない限り、「AIに任せた」とは言えない。
AIコーディング時代でも、評価からは逃げられない。むしろ、AIコーディングが進むほど評価の比重は上がる。これはAIプロダクト開発と同じ構造です。
Takeaways
specと設計の品質で差がつく
コードが安くなるほど、何を作るか、どこまでの品質で出すか、どう進化させるかの判断が希少になる。
知識はエージェントが読める形で育てる
ルールファイル、スキル、検証ログ、社内Wiki。人間が咀嚼した知識だけが次の作業を速くする。
テストは自動と手動の二段構えにする
Red/Greenで自動の手綱を握り、ブラウザやAPIの実操作で「動きました」を証跡に変える。
一発で正解を出させない
複数のエージェントに異なる試行をさせ、比較して選ぶ。オプショナリティのコストが下がった前提で設計する。
「Agentic Engineering Patterns」は、AIコーディングの実践知に名前を与えてくれるガイドです。GoFデザインパターンがオブジェクト指向の共通言語を作ったように、このガイドはAgentic Engineeringの共通語彙になりうる。少なくとも、日常的にエージェントを使っているエンジニアにとっては、「自分がやっていたことに名前があった」と感じる箇所が多いはずです。
References
「Agentic Engineering Patterns」を読んで、AIコーディング時代の型を考える
r.kagaya / Substack
Agentic Engineering Patterns
Simon Willison's Weblog
What is agentic engineering?
Simon Willison's Weblog
Writing code is cheap now
Simon Willison's Weblog
Hoard things you know how to do
Simon Willison's Weblog
How coding agents work
Simon Willison's Weblog
Using Git with coding agents
Simon Willison's Weblog
Subagents
Simon Willison's Weblog
Red/green TDD
Simon Willison's Weblog
Agentic manual testing
Simon Willison's Weblog
Cognitive debt
Simon Willison's Weblog