1. はじめに
今年は AI の中でもとくに、AI エージェントが開発の中心になりましたね。
弊社でも今年の3月にAIエージェントを導入してからもう8ヶ月程度が経っています。最初は「便利なチャットボット」程度の認識でしたが、今では開発フローに完全に組み込まれ、なくてはならない存在になりました。
そんなふうに8ヶ月間ガッツリ運用してきて気づいたことがあります。
突然ですが、みなさん AI エージェントの気持ちを汲み取りながらプロンプトを書いていますか?
「AI エージェントの気持ち」というと少し変な言い方に聞こえるかもしれません。ですが、これは精神論ではなく、技術的な話です。要は 「AI エージェントとのやり取りの中で、AI が保持しているコンテキスト(文脈・記憶)を、我々人間側が意識できているかどうか」 ということです。
AI は人間が埋め込んでしまうようなしょうもないバグ(誤字や単純なロジックミス)はまず発生させません。正直、コーディングの正確性だけで言えば、もう AI を使わないと置いていかれてしまう時代になりました。
ただし、AI はプロンプトが甘いと、平気で目的から大きく外れたコードを生成してしまうことがあります。「えっ、なんでそこを変えちゃうの?」「いや、そういう意味じゃないんだけど...」という経験、ありますよね?
これは AI の性能が低いのではなく、「その瞬間に AI が保持しているコンテキストと、人間が脳内で想定しているコンテキストがズレている」 可能性が高いです。
この記事では、この「コンテキスト」を意識し、AI エージェントのポテンシャルを最大限に引き出すためのプロンプト術(という名の、AI との付き合い方)について書いていこうと思います。
2. AI エージェントとは
そもそも AI エージェントをざっくり説明すると、単に会話をするだけのチャットボットではなく、「コンテキスト(記憶)」を持った状態で自律的にタスクをこなすパートナーのことです。
具体的には以下のようなツールがあります。
- Cursor
- Claude Code
- Windsurf
- Cline / Roo Code
これらは、チャット画面の向こう側にいるだけでなく、ファイルの中身を見たり、ターミナルを実行したり、過去の修正履歴を把握したりする能力を持っています。
つまり、彼らは膨大な「短期記憶(コンテキスト)」 を抱えながら走っています。
私たち人間がすべきことは、細かい指示を出すことだけではありません。この**「彼らが抱えている記憶領域」を適切にマネジメントしてあげること**こそが、AI エージェント使いの腕の見せ所なのです。
3. コンテキストの意識
では、「コンテキストを意識する」とは具体的にどういうことでしょうか?
私が実際に行っている「大規模データの同期システム設計」の例を元に、悪い例と良い例を比較してみましょう。
× 悪い例:情報量がスカスカ(AIに考えさせていない)
Q1. ファイル同期したいんだけど、いい方法ある?
A1. rsync か lsyncd が定番です。
Q2. 100TBあるからrsyncだと遅いかも。
A2. 並列化を検討しましょう。
Q3. ファイル数も多いからinotifyも心配。
A3. ...
このやり取りの最大の問題は、AI の思考のベクトルが、最初からズレた方向に進んでしまう 点です。
最近の AI は非常に優秀なので、情報量が少なくても、自律的に文脈を補完して回答を広げてくれます。
しかし、その「補完された文脈」が、あなたの意図と合っているとは限りません。
「100TB」という重要な前提を知らない AI は、良かれと思って「一般的な同期手法」の深掘りを始めます。
一度ズレた方向に話が進んでしまうと、そこから軌道修正をするのは意外とストレスがかかります。「いや、そうじゃなくて...」と訂正を繰り返すうちに、AI も人間も疲弊してしまいます。
これでは、せっかくの AI の自律性が逆効果になってしまいます。
○ 良い例:AIに「コンテキスト」を作らせる
私はいつも、最初の一発目のプロンプトで、脳内にある前提条件をすべて「書きなぐり」ます。
非常に大規模なファイル数のデータの冗長化について
当初は lsyncd (ファイルの作成・更新検知) + rsync (別サーバーへの同期用) の組み合わせで別サーバー上のファイルシステムにバックアップすることを考えていました。
しかし、100TBクラスディスクを要求するシステムなので、ファイル数も普通では考えられないくらい多くなります。
そのため、lsyncd が使う inotify が監視するファイル数が通常運用では考えられないくらい多くなり、メモリ使用量が爆増します。
この問題についてまずは課題を整理し直して下さい。
まだ編集、実装はしないで。
このアプローチの真の狙いは、単に情報を伝えることだけではありません。
AI 自身に、状況を整理・言語化させること にあります。
このプロンプトを受け取った AI は、必死に情報を処理し、以下のような出力(=AI自身が生成した最強のコンテキスト)を返してくれます。
AIの回答(整理されたコンテキスト)
「100TB級かつ数億ファイルという条件下では、通常の同期手法は破綻します。
- 検知の限界:inotifyのメモリ消費量が物理メモリを超過するリスク。
- 同期の限界:rsyncのリスト生成だけでタイムアウトするリスク。
よって、ブロックレベル同期などの根本的な設計変更が必要です...」
これが出力された瞬間、AI のコンテキストには「人間が書いた雑なメモ」ではなく、「AI 自身が整理した高度な技術的要件」が刻まれます。
ここまで来れば、人間は「じゃあブロックレベル同期の詳細教えて」と一言返すだけでOKです。
AI は、直前に自分で整理した**「最強のコンテキスト」**を参照し、極めて精度の高い回答を返してくれます。
つまり、「最初に書きなぐる」とは、AI に「質の高いコンテキスト(プロンプト)」を生成させるための素材提供 なのです。
4. フォーマットの意識
「コンテキストを共有しろと言われても、毎回長文を書くのは面倒くさい...」
そう思いますよね? そこで重要になるのが 「フォーマット(型)」 です。
ここでのポイントは、「文章としての美しさは捨てていい」 ということです。
AI は「てにをは」の正しさや、丁寧な敬語なんて見ていません。彼らが見ているのは 「情報の構造」 です。
だからこそ、Markdown のフォーマット を活用して、情報を構造化して叩きつける(書きなぐる)のが最も効率的です。
おすすめの「書きなぐり」フォーマット
私はいつも、以下のようなテンプレートを辞書登録して使っています。
# 依頼内容
(ここにやりたいことを一言で。例:ユーザー検索機能の追加)
## 背景
(なぜこれやるの? 前提は? 例:管理画面で必要になった。DBは既存のUserテーブル使う)
## 現状の課題 / エラーログ
(何が困ってる? 例:検索クエリの書き方がわからん。以下のエラーが出る...)
## 期待する挙動
(どうなれば正解? 例:メアドの部分一致で検索したい。件数は20件ずつ。)
## 参考情報
(ヒントはある? 例:過去に実装した商品検索機能(products.ts)と同じロジックでいい)
このフォーマット(枠組み)さえあれば、中身は箇条書きでも、誤字脱字が少々混じっていても、口語でも構いません。
AI は ## 背景 というタグを見れば、「ああ、ここにある汚い文章は『背景情報』として処理すればいいんだな」と理解してくれます。
つまり、Markdown は単なる見出しではなく、AI に情報の種類を伝えるための「メタデータ」 なのです。
このメタデータさえ正しければ、中身の文章力が多少低くても、AI は文脈を見失いません。
人間側も、ゼロから文章を考える必要がなくなり、「空欄を埋めるだけ」 になるので、脳の負荷が劇的に下がります。
結果として、「日本語は雑だけど、情報は濃い(コンテキストがリッチ)」 という、AI にとって最高のご馳走が出来上がります。
5. オープンクエッションをしつつ、制約をちょうど良く与えるテクニック
最後に、AI の思考のベクトルを制御し、「発散」を防ぎつつ「良い提案」を引き出す ためのテクニックを紹介します。
第3章で「AI は情報が少ないと、思考のベクトルがズレる」という話をしました。
しかし、解決策がわからず「どう実装すればいい?」と聞きたい場面も多いはずです。
ここで単純なオープンクエスチョン(丸投げ)をすると、AI は広大な探索空間の中で迷子になり、教科書的な回答しか返してきません。
そこで有効なのが、「オープンクエスチョン + 過去の経験(制約)」 の組み合わせです。
テクニック:思考の「囲い込み」を行う
この機能の実装方針について相談したい。どう実装するのがベスト?(オープンクエスチョン)
ちなみに、私は過去に以下のような方法を取ったことがある。(囲い込み)
* lsyncd + rsync を使った方法はあります。
* lsyncd で大規模なファイルの運用をしたことがあるが、メモリリークらしき挙動を何度も見たことがある。
このあたりの観点も踏まえて、今回のプロジェクト(100TB級のファイル同期)に合う方法を整理して教えて。
こうすることで、AI の思考プロセスを強制的に以下のようにガイドできます。
- 発散: まずは広く解決策を探る(ブレーンストーミング)。
- 収束: ただし、「lsyncd」や「メモリリークの経験」といったユーザーが提示した技術スタックや懸念点の周辺に着地させる。
- 着地: 「lsyncdに近い構成だけど、100TB級ならブロックレベル同期ができる〇〇の方が良いですよ」という回答を生成する。
これにより、AI は「明後日の方向」に暴走することなく、かつユーザーの知識レベルに合わせた 「ちょうどいい提案」 をしてくれるようになります。
これぞまさに、AI にプロンプト(解決策)を作らせる ための究極の誘導テクニックです。
まとめ
- AI エージェントは「コンテキスト(記憶)」を持つパートナーである。
- プロンプトを書くときは、AI と「文脈」が共有できているかを意識する。
- 丁寧な日本語は不要。「フォーマット(構造)」さえあれば、中身は書きなぐりでOK。
- オープンクエスチョンには「ヒント」を添えて、AI の探索をガイドしてあげる。
これらは一見、AI のために人間が頑張っているように見えるかもしれません。
しかし実際は、これらを意識することで手戻りが減り、デバッグ時間が減り、結果として人間が一番ラクできるようになります。
今日からぜひ、AI の気持ちを少しだけ汲み取りつつ、遠慮なくガンガン書きなぐったプロンプトを投げてみてください!