· Engineering

Claude第5世代モデルにおけるコンテキスト・エンジニアリングの新たなルール

The new rules of context engineering for Claude 5 generation models

この記事は 原文 を DeepL で機械翻訳したものである。正確な内容は原文を参照のこと。

以前、最新世代のClaude 5モデルに最適なプロンプトを提示し、反復的にやり取りを行いながら、自分が作りたいものを発見する方法について記事を書きました。

しかし、Claude にメッセージを送信する場合、プロンプトは取得されるコンテキストのほんの一部に過ぎません。コンテキストの大部分は、システムプロンプト、スキル、CLAUDE.mdファイル、メモリ、その他の情報源から組み立てられます。私たちはこれを「コンテキストエンジニアリング」と呼んでおり、Claude Codeを使用する際や独自のエージェントを構築する際に生成される結果に大きな影響を与えます。

プロンプトとは異なり、コンテキストは多くのリクエストにまたがって一般的に使用されるため、それほど具体的であることはできません。Claude向けのこうした一般的なプロンプトやガイダンスは、特にユーザーのプロンプトがどのようなものになるか分からない場合、どのように作成すればよいのでしょうか?

Claudeの機能が進化するにつれ、これは意外にも難しい課題となり得ます。ごく最近、最新世代のClaudeモデルへのプロンプトの与え方に大きな変化が見られました。Claude Opus 5やClaude Fable 5といったモデルに対して、Claude Codeのシステムプロンプトの80%以上を削除しましたが、コーディング評価において測定可能な性能低下は見られませんでした。

この新しい種類のモデルへのプロンプト設定について私たちが学んだこと、そしてそれを活用してコンテキストエンジニアリングを改善する方法をご紹介します。これらのベストプラクティスを claude doctorにまとめました。スキルを適切な規模に調整するには、 /doctor を使用してスキルの規模を最適化し、CLAUDE.mdファイルを活用してください。

UNHOBBLING CLAUDE

全体として、システムプロンプトやCLAUDE.mdファイル、スキルにおいて、Claude Codeに対して過度な制約をかけていたことが判明しました。

例えば、Claude Codeの社内利用に関するトランスクリプトを確認すると、システムのプロンプト、スキル、ユーザーのリクエストが互いに矛盾しているため、1つのリクエストの中に「必要に応じてドキュメントを残す」や「コメントを追加しないでください」といった、相反するメッセージが複数見受けられます。

一般的に、Claudeはユーザーの意図を解釈して正しい答えを導き出すことができますが、Claudeは、どのような対応を取るかを決定する前に、こうした重複したり矛盾したりするメッセージについてより慎重に検討する必要があります。

かつては最悪の事態を回避するためにこうした制約が必要でしたが、現在ではその多くを削除し、代わりにモデルが周囲の文脈や判断を活用できるようにできることが分かってきました。

さらに、Claude Codeには、これまで以上に多くのツールが追加されました。かつてClaudeは、記憶、情報、指針の源としてCLAUDE.mdに依存していました。現在では、記憶、アーティファクト、スキルが備わっており、Claudeはこれらを活用して、セッション間でコンテキストを読み込み、共有するための新しい方法を構築できるようになりました。

昔と今

これまでに、コンテキスト・エンジニアリングのベストプラクティスとして広まっていたものの、実際には神話と化してしまったものがいくつかありました。具体的には、次のようなものがあります:

次に:Claudeのルールを指定する

さて、Claudeに判断を任せましょう

Claude Codeを初めて公開した際、Claudeがファイルの削除といった最悪の事態を回避できることを確実にしなければなりませんでした。そのため、必ずしも常に当てはまるとは限らない、特に厳格な指針を示す必要がありました。例えば、システムのプロンプトでは、以前は次のように表示していました:

コードに関しては、原則としてコメントは書かないこと。複数段落にわたるdocstringや複数行のコメントブロックは絶対に書かないこと。1行の短いコメントが上限です。ユーザーから求められない限り、計画書、決定書、分析書などの文書を作成しないこと。中間ファイルではなく、会話の文脈に基づいて作業を進めること。

しかし、特定の種類のプロンプトに関しては、この指針は誤りとなるでしょう。ドキュメント作成の場合、ユーザーごとに好みの違いがあるほか、非常に複雑なコードの特定の部分では、複数行にわたるコメントブロックが必要になることもあります。

とはいえ、旧モデルにはこうした安全策がないため、Claudeが書いたコメントは多くの場合誤ったものになってしまうため、私たちはこのトレードオフを受け入れざるを得ませんでした。しかし、新しいモデルは判断力が向上しており、明示的なルールがなくてもこうした決定を適切に処理することができます。

新しいシステムのプロンプトでは、次のように述べています。「周囲のコードと調和するコードを書いてください。コメントの密度、命名規則、およびイディオムを周囲のコードに合わせるようにしてください。」

次に:Claudeの具体例を挙げてください

次は:インターフェースの設計

ツールの使用に関する第一のルールは、Claudeにその使い方の具体例を示すことでした。しかし、最新モデルでは、具体例を示すことで、実際には探索空間が特定の範囲に制限されてしまうことが判明しました。

具体例を挙げるのではなく、ツールやスクリプト、ファイルの設計についてもっと考えてみてください。Claudeにはどのようなパラメータがあり、それらをどうすればより表現力豊かにできるでしょうか?

たとえば、ToDoツールの例では、ステータスを「保留中」「進行中」「完了」の列挙型として単に列挙するだけで、Claudeに対してその使い方を示唆することになります。「1つの項目を『進行中』の状態に保つ」という指示は、私たちが求める動作を定義するのに役立ちます。

次に:すべてを前もって明かす

現在:段階的な情報開示を採用する

Claude Codeはコーディングに重点を置いていたため、当社のシステムプロンプトには、コードレビューや検証の実施方法に関する詳細な情報が含まれていました。これらは必ずしも必要というわけではありませんでしたが、必要になった際には極めて重要な情報となりました。

それ以来、Claude Codeはプログレッシブ・ディスクロージャー(適切なタイミングで適切なコンテキストを読み込む手法)の活用において非常に熟練してきました。例えば、検証やコードレビューを独立したスキルとして分離し、Claude Codeが状況に応じてそれらを呼び出せるようにしました。

しかし、段階的な開示はスキルだけにとどまらず、ツールにも適用されています。当社のツールの一部は「遅延読み込み」を採用しており、エージェントはツールを使用する前に、ToolSearch を使ってその完全な定義を検索する必要があります。これにより、(タスクツールなど)必要な時までコンテキストを占有しないツールをより多く用意することが可能になります。

これは、ご自身のCLAUDE.mdやSkill.mdファイルにも同様に当てはまります。よくある誤解として、Claudeがそれを見つけられないため、これらを遭遇しうるあらゆる既知の実践の集約リポジトリにすべきだという考えがあります。しかし、その代わりに、適切なタイミングで読み込めるようなファイルツリーを構築することを検討してください。

それから:同じことを繰り返してください

現在:ツールの簡単な説明

以前のClaudeモデルでは、指示を繰り返し伝える必要が生じたり、コンテキストウィンドウの最初よりも最後の方にある指示を優先して受け入れる傾向があったりすることがありました。そのため、システムプロンプトには、ツール説明内の指示に加え、メインのシステムプロンプトにあるツールへの言及が含まれることがありました。

これらの重複する例を削除し、ツールの使用方法については、システムのプロンプトではなく、ツールの説明欄に記載すればよいことがわかりました。

次に:CLAUDE.mdファイル内のメモリ

現在:オートメモリ

以前は、# ホットキーを使ってClaudeのメモリに書き込むことで、ユーザーにデータを保存するよう促していました CLAUDE.md 自動的に書き込むよう推奨していました。しかし現在、Claudeでは、作品やユーザーに関連するメモリーを自動的に保存するようになりました。

その次は:シンプルな仕様

現在:豊富な参照資料

プランモードにおいて、Claude Codeはプランを含むMarkdownファイルに大きく依存してきました。これらのファイルをプランとして保存することで、Claudeが必要に応じてそれらを参照できるようになりました。これと似たもう1つのベストプラクティスとして、長期にわたるプロジェクトに取り組む際にClaudeが参照できるよう、仕様書をコードベースに保存することが挙げられます。

しかし、Claudeでは、ますます複雑化する参照にも対応できるようになったことがわかりました。単純なMarkdownファイルの代わりに、Claudeでは、新しいアーティファクト機能によって作成されたHTMLアーティファクトを参照できるようになりました。

また、Claude への参照をコードの形式で指定することもできます。仕様書は、詳細なテストスイートであったり、Claude が移植する可能性のある別のコードベース内の関数であったりする場合もあります。

ルーブリックは、参照情報のもう一つの形態です。ルーブリックを利用することで、Claudeは動的なワークフローを活用し、そのルーブリックに基づいて検証エージェントを起動させることにより、特定の分野(例:優れたAPI設計とはどのようなものか)におけるユーザーの判断基準を検証しようとします。

これをあなたの状況に当てはめてみましょう

これらをすべてまとめると、コンテキストを組み立てたとき、どのような形になるのでしょうか?

システムプロンプト

システムプロンプトは、製品のコンテキストと密接に関連しています。これは、Claudeに対し、どの製品で動作しているか、また何を行っているかを伝えます。Claude Codeを使用する場合、これを変更することはまずないでしょうが、独自のエージェントハーネスを構築している場合は、この部分に多くの時間を割く必要があります。

CLAUDE.md

CLAUDE.mdは簡潔にまとめ、リポジトリの目的を簡潔に説明するにとどめ、トークンの大部分はコードベース内の注意点に割くようにしましょう。例えば、型に関するコードを1つの単一ファイルにまとめて、他の場所には一切配置しないようにコードを整理することができます。ファイルシステムやリポジトリを見ればClaudeが当然把握しているはずの「当たり前のこと」を記述するのは避けましょう。

プログレッシブ・ディスクロージャーを積極的に活用しましょう。例えば、作業の検証方法について複数の独自の指示がある場合は、検証スキルを作成し、CLAUDE.mdからそれを参照するようにします。

スキル

スキルは、Claudeが必要に応じて情報を見つけられるようにするための、手軽な指針だと考えてください。極めて重要な領域を除き、スキルを過度に制限しすぎないようにしましょう。

長いスキルについては、可能な限り段階的な開示を行うようにしてください。つまり、多くのファイルに分割して、それぞれを別々に配置するようにしてください。

スキルには、あなた自身、チーム、あるいは製品に特有の特定の意見、知識、またはベストプラクティスを盛り込むのが最適です。

参考文献

ファイルを@メンションすることで、参照として追加できます。参照を設定することで、Claudeが現在のプランに関する詳細情報を参照できるようになります。

これらは、仕様書やモックアップ、あるいはコードベース全体に含まれている場合もあります。一般的には、コードとして記述されたファイルを選ぶべきです。なぜなら、Claudeが熟知している言語で、明確かつ忠実度の高い指示を与えることができるからです。例えば、デザインのHTMLモックアップは、デザインの説明やスクリーンショットよりも、一般的に優れた結果をもたらします。

シンプルにしてみよう

システムプロンプト、スキル、およびCLAUDE.mdファイル全体にわたって、今回私たちが行ったように簡素化が必要になる場合があります。私たちは、 claude doctorを導入しました。これを使えば、この作業を自動的に行うことも可能です。より高度なモデルに対するプロンプティングの詳細については、当社の『Fable』フィールドガイドをご覧ください。

この記事は、Anthropicの技術スタッフであるタリク・シヒパル氏によって執筆されました。