AI・機械学習

AIコーディングエージェントが失敗する本当の理由と「読んでから書く」Context Engineering入門

「AIにコードを直してもらったのに、なぜか別の場所が壊れてた…」そんな経験、ありませんか?😅

実はこれ、AIが「コードを書けない」から起きる問題じゃないんですよね。AIが読まずに書き始めてしまうことが根本的な原因なんです。

今回は、コーディングエージェントの失敗パターンと、それを防ぐContext Engineering(コンテキスト・エンジニアリング)というアプローチをわかりやすく解説します!

🤖 コーディングエージェントはなぜ失敗するのか?

AI coding agent
AI coding agent / Photo by Daniil Komov via Pexels

AIエージェントが起こしがちな失敗を整理するとこんな感じです。

  • ✅ 数ファイルだけ開いてアーキテクチャを「推測」する
  • ✅ 間違った場所を編集してしまう
  • ✅ リスクのないパスしかテストしない
  • ✅ 「修正しました!」と自信満々なサマリーを返す

プルリクエストは一見きれいに見えても、後からテナント境界の破壊・マイグレーションの見落とし・隠れた副作用が発覚する…というパターンです。怖いですよね。

イメージとしては、設計図をちゃんと読まずにリフォームを始めてしまう職人さんみたいな感じです。腕はいいのに、情報が足りない。

📚 Context Engineering(コンテキスト・エンジニアリング)とは?

Context Engineeringとは、AIエージェントが編集を始める「前に」、十分なコンテキスト(背景情報・構造・依存関係)を与えてあげる設計手法のことです。

つまり一言でいうと、「まず読ませてから、書かせる」という考え方です。

具体的には以下のような情報をあらかじめ与えます。

  • 📁 ディレクトリ構造の全体像
  • 🔗 モジュール間の依存関係
  • ⚠️ 変更してはいけない境界(テナント境界など)
  • 🧪 テストカバレッジの範囲
  • 📝 既存のアーキテクチャの意図・ドキュメント

🛠️ Pythonで試す:エージェントに渡すコンテキスト構築の例

実際にPythonでコンテキスト情報を収集して、エージェントへのプロンプトに含める簡単なサンプルを見てみましょう。

import os

def collect_context(root_dir: str, max_depth: int = 3) -> str:
    """エージェントに渡すためのディレクトリ構造を収集する"""
    lines = []

    for dirpath, dirnames, filenames in os.walk(root_dir):
        # 深さを計算して制限
        depth = dirpath.replace(root_dir, '').count(os.sep)
        if depth >= max_depth:
            dirnames.clear()  # これ以上深く掘らない
            continue

        indent = '  ' * depth
        lines.append(f"{indent}📁 {os.path.basename(dirpath)}/")

        # Pythonファイルだけ列挙(関係ないファイルは省く)
        for filename in filenames:
            if filename.endswith('.py'):
                lines.append(f"{indent}  📄 {filename}")

    return '\n'.join(lines)


def build_agent_prompt(task: str, root_dir: str) -> str:
    """エージェントへのプロンプトにコンテキストを含める"""
    context = collect_context(root_dir)

    # まず読ませてから書かせる!がポイント
    prompt = f"""## プロジェクト構造(まずこれを把握してください)
{context}

## 変更してはいけない境界
- `core/tenant/` 配下はテナント分離ロジックのため直接編集禁止
- `migrations/` は自動生成のため手動編集禁止

## タスク
{task}

上記の構造を十分に理解した上で、影響範囲を明示してから変更案を提示してください。
"""
    return prompt


# 使い方
prompt = build_agent_prompt(
    task="ユーザー認証のバリデーションロジックをリファクタリングしてください",
    root_dir="./myproject"
)
print(prompt)

ポイントをまとめるとこんな感じです👇

  • ディレクトリ構造を先に渡すことでエージェントの「推測」を減らせる
  • 禁止エリアを明示することで誤った編集を防げる
  • ✅ 「影響範囲を明示してから変更案を出して」と読んでから書くよう指示する

🎯 プロンプトを長くすればいいわけじゃない


「じゃあ、もっと長いプロンプトを書けばいいの?」と思いますよね。でも答えはNOです。

大事なのはプロンプトの長さではなく、構造化された正確なコンテキストを渡すこと。不要な情報が多すぎると、今度はエージェントが重要な部分を見落とします。

「何を渡すか」と「何を渡さないか」の設計センスが、Context Engineeringの核心なんですよね。

まとめ

コーディングエージェントの失敗の多くは「コードが書けない」のではなく、「読まずに書き始める」ことが原因です。Context Engineeringの考え方を使って、エージェントに正しいコンテキストを与えてから編集させる設計を意識するだけで、AIの精度は大きく変わります。

まずは今日のサンプルコードを参考に、自分のプロジェクトでコンテキスト収集を試してみてください! AIとの付き合い方、一緒にアップデートしていきましょう 🚀

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品]

もしも

ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品]

チュートリアル付きのArduino入門セット

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です