世界を動かす技術を、日本語で。

エージェントAIハンドブック:実運用向けパターン

概要

  • Agentic AI は新しいモデル能力ではなく、「LLM+ループ+ツール+状態+停止条件」という新しいソフトウェア形態。
  • デモは簡単だが、「ループの信頼性確保」が本質的な課題。
  • 本記事はGitHubリポジトリ「Awesome Agentic Patterns」とサイト「agentic-patterns.com」に基づく実践的ガイド。
  • 失敗例・課題・パターン を整理し、実運用への橋渡しを解説。
  • エージェント失敗 の多くは「ループ設計の失敗」であり、モデルの限界ではない。

Agentic AIとは何か

  • Agentic AI は「LLMをループ内で使い、ツール・状態・停止条件を持つ」ソフトウェア形態。
  • 本質は「エージェントが状態を観察し、ツールを呼び出し、結果を記録し、終了判断やヘルプ要請を自律的に行う」点。
  • デモと本番運用 の間には大きなギャップ(スケール・安全性・コンテキスト管理)が存在。
  • パターン化により「制約・テスト・可観測性・安全性」を確保する設計が重要。
  • パターン は「プロンプトテクニック」ではなく、制御構造やツール連携、メモリ戦略、安全設計などの具体的アーキテクチャ。

本記事の位置づけ

  • 目的 :繰り返し現れるパターンを整理し、実運用での「デモ-to-プロダクションギャップ」を地図化。
  • 対象 :GitHubリポジトリ「Awesome Agentic Patterns」とサイト「agentic-patterns.com」のパターンライブラリ。
  • 非対象
    • 「エージェントが全て自動化できる」という主張ではない。
    • 全てのパターンが万能・必須・安定とは限らない。
    • どんなワークフローにも「エージェントモード」を付ければ速くなるという保証はない。

エージェントが「使い物にならない」と感じたとき

  • 現状の手作業ワークフロー (コピペでチャット→戻す)は依然有効なケースも多い。
  • 「エージェント的」なワークフローが本領を発揮するのは、次の2習慣を持ったとき:
    • Diffファースト :全変更をdiff(PRやパッチ)でレビュー
    • ループファースト :エージェントが明確な終了条件付きでループ実行(テスト合格・リンターOK・評価基準達成)
  • 30分でできるエージェントワークフロー例
    • 小さく範囲が明確なタスク選定(例:既知バグのユニットテスト追加、関数リファクタ、依存関係更新)
    • 正当性を証明する単一コマンドを指示(npm test/pytest/go testなど)
    • スコープ制限(触るファイル指定、無関係なリファクタ禁止、新規ファイルは要相談)
    • 明確な計画とチェックポイント必須(5-10ステップで計画提案→承認後編集→新情報で再計画)
    • 変更は必ずdiff形式で受け入れ(diff表示・各差分の理由要約・テスト実行)
    • 緑(合格)になるまで繰り返し

コスト・限界・エージェントが不要な場面

  • エージェント導入は無料ではない。タイピングや検索は減るが、レビュー・調整・安全設計のコストが増加。
  • 非推奨ケース
    • 手作業の方が速い
    • テストや自動検証がない
    • 「done」の定義が曖昧
    • 広範な権限が必要で失敗リスクが高い
  • 推奨ケース
    • 明確な受け入れ基準を記述できる
    • 客観的シグナル(テスト・リンター・コンパイラ・評価)がある
    • 定型作業(マイグレーション・ボイラープレート更新・大規模リネーム)
    • スコープ(ツール・ファイル・権限)を制限できる

関心の高まり(2025年12月末)

  • Awesome Agentic Patterns リポジトリのスター数が2025年末に急増、2026年1月時点で約2,800。
  • サイトのトラフィックも同様に増加。
  • 単一要因ではなく、Hacker News等での可視化、CLI/IDEツールの成熟、年末年始のまとまった作業時間が重なった結果。
  • 結論 :エージェントは「席に座って触る時間」に応じてリターンが増える。学習曲線あり。

公的なシグナル:著名開発者の反応

  • Linus Torvalds :AI支援コーディングは趣味プロジェクトで有用だが、Linuxカーネル等の重要インフラでは慎重。
  • Tobias Lütke(Shopify) :AI利用は社内の基本期待値。導入・実験のための時間を組織的に確保。
  • Armin Ronacher :熱心かつ批判的。特に「まとまった休暇にClaude Codeを試す」ことを推奨。
  • Ryan Dahl :人間によるコーディング時代は終わったと発言。コード執筆より判断・設計・監督が本質に。

Agentic Patternとは何か

  • エージェント =LLMをループでラップし、状態観察・ツール呼び出し・結果記録・自己判断を行うもの。
  • Agentic Pattern =本番運用可能なループ構築のための再利用可能なミニアーキテクチャ。
  • デモと本番のギャップ
    • デモは入力選別・権限なし・レート制限なし・障害対応なし
    • 本番はスケール・エッジケース・失敗ツール・部分的コンテキスト・セキュリティ・人間のワークフロー・正確性要件
  • パターンの要素
    • 制御構造(ループ・ゲート・停止条件)
    • ツールインターフェース
    • コンテキスト/メモリ戦略
    • 評価・監視手法
    • 安全境界
  • 収録基準
    • 再現性:複数実装や一次情報で確認
    • エージェント特有:ループの思考・行動・検証方法を変える
    • トレース可能:公開記事・論文・リポジトリに紐づく

Agentic Patternの8カテゴリ

  1. オーケストレーション&制御

    • ループの意思決定・停止・リカバリ方法
    • 例:Plan-Then-Execute、Inversion of Control、Swarm Migration、Language Agent Tree Search(LATS)、Tree of Thoughts
  2. ツール利用&環境

    • システムとの安全なインタラクション
    • 例:Progressive Tool Discovery、LLM-Friendly API Design、Egress Lockdown、Code-Over-API
  3. コンテキスト&記憶

    • コンテキスト制限下での運用・現実との接地
    • 例:Curated Code Context、Progressive Disclosure for Large Files、Episodic Memory、Retrieval、Context Window Anxiety Management
  4. フィードバックループ

    • イテレーションやチェックによる出力品質向上
    • 例:Reflection Loop、Coding Agent CI Feedback Loop、Rich Feedback Loops、Graph of Thoughts
  5. UX&コラボレーション

    • 人間とエージェントの協調・制御分担
    • 例:Spectrum of Control、Abstracted Code Representation for Review
  6. 信頼性&評価

    • 正常動作・リグレッション検知
    • 例:Workflow Evals with Mocked Tools、Anti-Reward-Hacking、Grader Design
  7. 学習&適応

    • システムの継続的改善
    • 例:Skill Library Evolution、Agent Reinforcement Fine-Tuning(Agent RFT)
  8. セキュリティ&安全性

    • データ漏洩・事故防止
    • 例:Lethal Trifecta Threat Model、PII Tokenization、Deterministic Security Scanning

最低限導入すべき4つのパターン

  1. Plan-Then-Execute(本番運用向け)

    • 問題 :不正な入力やツール出力がエージェントの行動を誘導する危険
    • 解決策
      • Planフェーズ:目標・手順・ツール・制約・「done」チェックを計画し、人間またはポリシーでレビュー
      • Executionフェーズ:許可ツールリスト・権限・ファイル境界・レート制限・監査をコントローラで強制
      • Replanチェックポイント:想定外出力時は必ず再計画(失敗ではなく機能)
    • 非対象 :固定シーケンス生成だけ、全プロンプトインジェクション防止ではない、制約強制がなければ無意味
    • 推奨場面 :不正入力を読む・明確な「done」と「許可行動」が定義できるワークフロー
  2. Inversion of Control

    • 問題 :細かく管理しすぎると人間がボトルネック化し、エージェントの探索性を阻害
    • 解決策
      • 目標・制約・ツール・テスト・レビュー方式(diffファースト)を明示し、中間ステップはエージェント任せ
    • 失敗例 :制約なしのInversion of Controlは「暴走エージェント」に。必ずスコープ制限・決定的チェック・レビューゲートとセットで。
  3. Reflection Loop(客観的チェック付き)

    • 問題 :一発生成は脆い。「自己批評」だけではモデルが合理化してしまう
    • 解決策
      • テスト・リンター・スキーマ検証・コンパイル・評価基準などの客観的シグナルに基づくループ
      • 例:for attempt in range(max_iters): draft = generate() results = run_checks(draft) if results.pass: return draft draft = fix_from(results)
    • 適用場面 :正確性が重要・チェックを定義できる場面
  4. Action Trace Monitoring & Interruption

    • 問題 :エージェントの逸脱は最終出力時点では手遅れ
    • 解決策
      • 観測・強制できるものを監視(ツール呼び出し種別・引数、編集ファイル、diffサイズ・リスクレベル、実行テストと出力、中間成果物)
      • 明示的な「キルスイッチ」追加(想定外ツール利用時停止、diffがN行超なら停止、禁止ファイル編集で停止、テスト2回連続失敗で停止など)

このパターン群を意識的に使うことで、エージェントの信頼性・安全性・生産性を大幅に高めることが可能多くの失敗はモデルの限界ではなく、設計や運用のパターン選択ミスに起因する 点に留意。

Hackerたちの意見

エージェントのコーディングって、熟練した人間よりも認知コストが高い気がする。エージェントが暴走しないようにするための準備やプロセスがめちゃくちゃ多いし(絶対暴走するし)、目標に従わせるのも難しい(従わないし)。実際、問題を根本から解決するよりも、後から出てきた問題を修正する方がずっと手間がかかる。GitHubのイシューをエージェントが処理して→プルリクエストして→問題を解決するっていう夢が、エージェントに権限を与えすぎたせいで、後からのリグレッションや混乱を修正する悪夢になってる。エージェントに楽観的な人たちは、単純に無邪気か、詐欺師か、宣伝屋だと思う。AIにたくさんの資本を投入してきたのに、今のところあまり成果が見えないから、宣伝屋のパニックも理解できる。AIが無駄だとは言わないけど、実際の精度や能力に対する現実的な評価よりも、過度な楽観主義が多すぎる。

今はそう感じるかもしれないけど、それをうまく活用することを学んでいるっていうのが大きいと思う。だからこそ、こういうリソースがすごく価値があるんだよね。最初は痛みが伴うのは仕方ない。

認知オーバーヘッドは本当にあるよ。最初の数週間は、エージェントの混乱を修正するのに時間を使って、実際に出荷することができなかった。一つ助けになったのは、何か取り返しのつかないことをする前に、エージェントに自信を説明させること。ファイルを削除する?なんで確信してるのか教えて。コードをプッシュする?その理由を見せて。ちょっとしたスピードバンプだけど、結構効果がある。でも、イシュー→PRの夢はまだ信じてない。失敗のパターンが多すぎる。

この記事が生成されたプロンプトをそのまま読みたいな。

こういうのを読むときに感じることを完璧に表現する方法をやっと見つけた。

トークンを寄付してくれ、スラップPRはやめてくれ - オープンソースのメンテナー

誰かが質問するのを聞く方が、教科書の章を読むよりいいって言ってるようなもんだね。HNのフロントページに載るブログの99%は根本的に間違ってる。自信満々の初心者の熱い意見が多い。AIが書いたものは、実際には事実に近いことが多い。君が嫌いなことは大体正しいし、好きなことは大体間違ってる。それがフィクションを読みたいならそれでいいけど、自分が何に手を出してるかは知っておくべきだよ。

さあ始まった、現代のデザインパターンとアジャイル/Scrumの蛇油。

いやいや。この解決策には全然違う名前があるって約束するよ。

いや、君は全然わかってないよ。AIに「俺はスーパーパワーを持ってるから、スーパーパワーを見に行け!」って叫んで、スキルを新しく書くスキルを与えて、さらに「anti grader reward hacking grader design.md」をちょっとプロアクティブなエージェント状態外部化(更新版)で振りかけて、最後にプロンプトで感情的に虐待したら、プログラマーを置き換えて、昨日には癌を治すことができるってことだよ。これが進歩なんだ。

AIの使い方について書かれたAIの記事で、他の人が自分のAIを作るために使うものをAIで作るってこと。未来は今、まさにその通りだね。

HNには、記事や他のコメントがAIによって書かれていると非難するコメントを控える方針があった方がいいと思う。みんなこれが起こることは知ってるし、可能性もある。たまにはそういうコメントが正しいこともあるけど、いろんなコンテンツに対して一日に何度も見るのはうんざりだよ。誰もが何かを書くと、すぐに「それAIで書いたんでしょ!」って言われる気がする。

これ全部、俺にはギリシャ語みたいだわ。ChatGPT使ってコードスニペットをコピー&ペーストしてるだけ。1、2年前は最先端だったのに、今はこういう記事を読むと石を叩き合わせてる気分になる。エージェントやMCPを統合するのは全然うまくいかなかったし、AIを使った特別なIDEに飛び込む準備ができてないなら、ただ石を叩き合わせるだけになるの?なんか、こういうAIエージェントの会社は「古いIDEにはこれを取り入れられないから、新しい特別なIDEを作ろう」って決めたみたいだよね。もしかして、俺が間違ったツールを使ってるだけなのかな?(RiderとVSを使ってて、今のところCopilotしか試してないけど、そのIDEでのCopilotの「エージェントモード」は基本的に役に立たないと感じてる。)

ただClaudeのコードを使えばいいと思う。それだけ。使ってみれば感覚がつかめるよ。みんな複雑に考えすぎなんだよ。コーディングを学ぶのと同じで、フライトアワーが必要なんだ。

そう思わないな。このツールの目指すところは、エージェントが全てをやるって感じだよ。高レベルのタスクが与えられて、動作するソリューションが出てくる。A) プログラミングできなくて、何かが動いてるだけで満足なら大丈夫。B) 経験豊富なプログラマーで、ソリューションの構造を指定できるなら大丈夫。AからBに行くところが、みんなが苦労するところみたいだね。

エージェントを統合するのは全然うまくいかなかった 具体的に「エージェントを統合する」ってどういう意味?何を試したの?俺がやってる一番シンプルな方法は、どこにも「統合する」ことじゃなくて、「コピー&ペーストのコード + プロンプトを書く + コードに出力をコピー」を「プロンプトを書く > エージェントがコードを読む > エージェントがコードを変更 > 俺がレビューして受け入れる/拒否する」に置き換えることだよ。あんまり「統合」って感じじゃなくて、単なるワークフローの変更なんだ。

そうだね、もしまだCodexやエージェントツールを使ってないなら、作業のやり方がパラダイムシフトしてるから、一度慣れちゃうとコピー&ペーストの技術に戻るのはすごく難しいよ。ここには明らかにたくさんの誇大広告があるけど、実際に得られる価値もある。例えば、昨日、リセットを呼び出したときに埋め込みデバイスがハードクラッシュするバグがあったんだ。それを使っていたツールに原因があることがわかった。リポジトリをダウンロードしてCodexに飛び込んで、症状を説明したら、10分もかからずにバグを見つけて修正してくれた。自分であのスピードで解決できたとは絶対に思えない。

俺も昔は君がやってたやり方でやってたよ。友達がハッカソンに行って、みんながCursorを使ってて、俺にも試してみろって言われたんだ。それはプロジェクトレベルの「ルール」を設定できて、基本的にはやりたいことのプロンプトなんだ。リポジトリ全体にアクセスできるし、エージェントにやりたいことを伝えると、エージェントがそれをやってくれて、レビューもできる。そんなにシンプルなんだ。ただ、必要があればもっと進めることもできる。俺にとっては、これだけでも大きな前進だよ。TFAが言ってる再現可能なプロンプトパターンにまだ慣れてないけど、より良い結果に向けて徐々に進んでいくのは全然OKだよ。

誰かがこれを言ってくれて嬉しい、俺も全く同じことをしてるから。VS Codeのエージェントモードを使おうとしたけど、出力がまだ悪かった。例えば「テストを書くために使う」とか、シンプルなことを読むだけ。すごくシンプルなリポジトリを渡してテストを書くように言ったけど、結果は全然使えなかった。俺が間違ってるのか本当に不思議だ。

私はもう一方の側にいて、コンピュータの完全な制御をClaude Codeに渡してるんだ。Yoloモードでね。Sudo。これがほんとにうまくいくんだ。サーバーも同じように動かしてる。そこでClaude CodeにSSH接続して、必要な作業をやってもらってる。だから、私の意見としては、Claude Codeを使うべきだよ。Yoloモードでね。使ってみて、学んでみて。こういうことを書くと、いつもダウンボートがたくさん来るけど…2026年の終わりには、今のような使い方はしなくなると思う。Claude Codeは2025年2月に最初のステップを踏んで、今は2026年1月にCoWork(他の人のためのClaude Code)が登場した。これはコンピュータの使い方をもっともっとパワフルにしてくれるんだ。

そのアプローチには共感するし、エージェントよりも良い場合もあると思う。エージェント系のIDEには「制限モード」が欠けてることがあるよね。このプロンプトで編集を許可するコードの行を選ばせてほしい。そうすれば、「xをする関数を追加して」なんて言っても、めちゃくちゃにならないから。

最近、見つけたエラーをClaude Codeに貼り付けて、「誰が壊したの?」って聞いたんだ。そしたら、そのコミットを見つけて、別のブランチで誰かが修正してたこともわかった。Claude Codeを使うべきだよ。

もっとクールエイドを飲まなかったから、頭がしっかりしてるんだね。

本当のボトルネック:時間 すでに「ノー」だよ、ボトルネックは「自分の泥の中で溺れている」こと。プロジェクトの最初ではエージェントがすごく早く仕事をこなすのに、規模が大きくなるにつれて、他のものを壊さない良い変更をするのが遅くなるのに気づいたことある?これは、ソフトウェアエンジニアリングの「エンジニアリング」部分が欠けているからで、誰かがドメインやデザイン、トレードオフ、そして何かがどう使われるかを考えなきゃいけないんだ。これには良い判断力と、やりたいことを考慮した適切で良いデザインに関する知恵が必要なんだ。最近(去年くらいから)、俺のクライアントの仕事は「ねえ、誰かがLLMで作ったプロジェクトがあって、彼らはどう動くかわからないけど、今はたくさんのユーザーがいるから、ちゃんとやり直してくれない?」って感じのが多い。どの場合も、アプリケーションはエンジニアリングゼロで、デザインやアーキテクチャに関してもゼロの状態で作られてる。俺のところに「今のバイブコーダーが忙しくて時間がないから、Xを手伝ってくれ」って言ってくるクライアントはいまだにいない。「髪の毛の塊Xを作ったから、助けてくれ」っていうのばかりで、これがこの種のコーディングの最大のボトルネックが何かをはっきり示してると思う。デザインを考えれば、遅く進む方が長期的には早いことが多いけど、短期的には遅くなるから、ちょっと直感に反するよね。

デザインについて考えるなら、遅く動く方が長期的には速いけど、明らかに短期的には遅いから、ちょっと逆説的だよね。俺の古いメンターが言ってたけど、「遅いはスムーズ、スムーズは速い」ってね。

俺が気づいたパターンがあるんだけど、何かうまくいってるパターン(例えば、計画やTODO管理)を見つけると、そのパターンがしっかりしていれば、ブラックボックスに統合されてエージェントが内部でそれをやり始める。そうなると、上にある抽象化が壊れちゃって、エージェントが計画の計画について混乱するんだ。だから、トップパフォーマーには、最終的に何を望んでいるのかをはっきり伝えるのが一番効果的だと思う。結果の検証のためのヒントを少し加えるのもいいかもね。

ウェブサイトのレイアウトが読みにくいだけじゃなくて、記事がAIによって書かれたように感じる。読むとき、脳が「いやだ!」って叫ぶんだよね。

それは合理的な感情だと思う。書く価値がないものは、読む価値もないと思う。

心配しなくていいよ、読むためのものじゃないから。FOMOを引き起こして、著者のニュースレターに登録させるのが目的なんだ。

これ、ただの無駄な情報で、ところどころ間違ってるよね。人間がチェックしたわけじゃないか、少なくとも不正確なところを見抜ける人じゃない。例えば「計画してから実行する」っていうのは、まるで新しいパターンみたいに言われてるけど、実際はClaude Codeがそのまま動く方法なんだよね。で、こう書いてある:「計画フェーズ – LLMは信頼できないデータを見る前に、固定されたツールコールのシーケンスを生成する。実行フェーズ – コントローラーがそのシーケンスを実行する。ツールの出力はパラメータを形作るかもしれないが、どのツールが動くかは変えられない。」でも、実際にはエージェントは固定されたツールコールのシーケンスを計画してそれに固執するわけじゃない。出力に応じて反応するから、事前に分からないことが多いんだよね。Claudeが仕事してるのを見たことがある人なら、これを毎日見てるはず。これはただのゴミ情報がHNのトップに上がってきてるだけで、外の人たちがエージェントについて追いつこうとして、期待できそうなソースをブックマークしてるんだ。

ゲートキーパーになりたくはないけど、著者は「AI成長のイノベーター」みたいな人で、実際にAIを使って何が効果的かを見ているエンジニアではないみたいだね。https://www.nibzard.com/about GitHubのスターを20,000以上にスケールアップしたり、プラットフォーム間でエンゲージしたコミュニティを作ったり(Xで2.8K、LinkedInで5.4K、YouTubeで700以上)とか、すごいことだと思うけど、AIエージェントを実際に使うにはちょっと塩を振る必要があるかもね。

それって本当に陳腐だよね。なんで人はこんな文を書くのか、恥ずかしくないのかな?昔は、適当なことを自慢するのって嫌われることだったのに、今はどうなっちゃったんだろう?今はみんな、自分のやってることを自慢することが多くて、実際にやってることよりも目立ってるし、他の人もそれを気にしないみたいで、ただの「ハッスル」の一部になってる。どこで間違ったんだろう?

俺は、地下室でLLMと遊んでるやつの投稿だと思ってたんだけど。あれは、実際の研究をしてるんじゃなくて、GitHubのスターを増やしてるだけってバレバレだよね。

こういう現象が出てきたのは本当に驚きだよ。同じような人たちが、自分たちの会社でシステムの些細なことに執着して、信号対雑音比を壊してしまったのに、LLMでも同じことをやる方法を見つけたんだ。これはこの手の忙しい作業の終焉だと思ってたのに。