ClaudeのXMLタグ完全ガイド|精度が上がる構造化プロンプトの書き方

Claudeに渡すプロンプトって、施工図面と同じなんですよ。

私は元現場監督なんですが、建設現場では「施工図面」がすべてだった。寸法線、部材種別、仕上げ記号。どこに何をどう納めるか、全部図面に書いてある。逆に言えば、図面がテキトーだと職人は動けない。「このへんに壁を建てて」みたいなフワッとした指示を出したら、現場は100%混乱する。

Claudeも同じだ。「この文章を要約して、あとこのデータも分析して、ついでにアクション出して」みたいなベタ書きプロンプトを投げると、どこまでが指示でどこからがデータなのか判断できず、的外れな回答が返ってくる。

解決策がXMLタグだ。プロンプトに寸法線や部材種別を引くようなものだと思ってもらえればいい。

実際、2025年のChen et al.の査読付き研究では、XMLタグで構造化したプロンプトは事実誤認が37%減少したという結果が出ている。図面をちゃんと描けば施工精度が上がる。当たり前の話だ。

Key Takeaways

  • XMLタグ付きプロンプトで事実誤認が37%減少(Chen et al., 2025年査読付き研究)
  • Claudeはトレーニング段階でXMLを使用しており、タグで囲むと精度が上がる設計になっている(Anthropic公式ドキュメント
  • 基本5パターンを覚えれば、ほぼすべてのプロンプトに応用可能
  • 2026年時点で企業AIチームの68%が構造化プロンプティングを採用(State of AI Engineering 2026)
目次

ClaudeのXMLタグとは?なぜ他のAIと使い方が違うのか

2026年のState of AI Engineering調査によると、企業AIチームの68%が構造化プロンプティングを採用している。で、この「構造化」の話になると、ChatGPT勢は「Markdown使えばいいじゃん」と言う。Gemini勢も同じ。実際、それで十分な場面もある。

でもClaudeは違う。

なぜか? Claudeはトレーニングの段階でXMLを使用していたからだ。Anthropicの公式ドキュメントにこう書いてある。

XMLタグは、プロンプトに指示・コンテキスト・例・変数入力が混在している場合に、Claudeが曖昧さなく解析するのを助けます。
Anthropic公式: Use XML tags to structure your prompts

つまりClaudeにとってXMLタグは「外国語」じゃなくて「母語」みたいなもの。施工図面でいえば、JIS規格の記号を使うか、独自記号を使うかの違いだ。JIS記号なら職人は一瞬で理解できる。XMLタグはClaudeにとってのJIS記号なんだと思えばいい。

XMLタグの基本構文

構文はシンプル。開始タグと終了タグのペアで内容を囲むだけだ。

<タグ名>囲みたい内容</タグ名>

ルールは3つ。

  1. 開始タグと終了タグは同じ名前にする<instructions>で開いたら</instructions>で閉じる
  2. タグ名は内容を反映させる<a>より<instructions>の方がClaudeも人間も読みやすい
  3. ネストは4層まで — 5層以上でパフォーマンスが低下する可能性がある(Anthropic公式注記)

覚えることはこれだけ。HTMLやプログラミングの知識は一切不要だ。

なぜXMLタグでプロンプトの精度が上がるのか

施工図面がないと何が起きるか想像してほしい。職人が「たぶんこのへんだろう」で施工を始める。結果、壁の位置が10mmズレて、建具が入らない。最悪やり直し。

XMLタグが精度を上げるのも同じ理屈だ。

1. 境界が明確になる
タグなしの場合、Claudeは「ここまでが指示で、ここからがデータ」を文脈から推測しなければならない。図面で言えば寸法線が引かれていない状態。タグがあれば推測不要になり、解析精度が上がる。

2. 階層構造を表現できる
Markdownの見出しは「同列の区切り」しか表現できないが、XMLタグはネストで親子関係を作れる。施工図面で言えば、全体図→詳細図→部分詳細図の関係を1枚のプロンプトで表現できるということだ。

3. 出力の後処理が楽になる
Claudeの回答にもXMLタグを使わせれば、プログラムで特定の部分だけを抽出できる。APIやバッチ処理で使うなら、これが地味に効く。

XMLタグの基本5パターン|これだけ覚えればOK

Anthropic公式の推奨事項と私の実践経験を組み合わせると、使うパターンは5つに集約できる。

施工図面に必要な記号だって、覚えるのは結局10種類くらいだ。それと同じで、XMLタグも「基本の型」さえ押さえれば、あとは組み合わせでどうにでもなる。

パターン1: 指示と入力データの分離

最も基本的な使い方。「やってほしいこと」と「処理対象のデータ」を分けるパターンだ。図面で言えば「施工指示書」と「材料表」を分けるようなもの。

プロンプト:

<instructions>
以下の議事録を読み、3つのアクションアイテムを箇条書きで抽出してください。
各項目には担当者と期限を含めてください。
</instructions>

<meeting_notes>
4月5日の定例ミーティング。参加者:田中、佐藤、鈴木。
田中から新機能のデザインレビューについて報告。来週月曜日までにワイヤーフレームを完成させる。
佐藤はAPI連携のテストを今週金曜日までに終える予定。
鈴木はユーザーインタビューの日程調整を明日中に行う。
次回ミーティングは4月12日。
</meeting_notes>

Claudeの出力例:

1. 田中:新機能のワイヤーフレーム完成 → 期限: 4月7日(月)
2. 佐藤:API連携テストの完了 → 期限: 4月11日(金)
3. 鈴木:ユーザーインタビューの日程調整 → 期限: 4月6日(明日中)

タグなしで同じ指示を出すと、議事録の内容を要約してしまったり、アクションアイテム以外の情報まで含めてしまうことがある。<instructions><meeting_notes>で分けるだけで、Claudeの理解精度がまるで変わる。

パターン2: Few-shot(例示)の提示

Claudeに出力フォーマットを正確に伝えるなら、例を見せるのが一番確実だ。Anthropic公式は3〜5個の例示を推奨している。

現場で新人の職人にやり方を教えるのも、口で説明するより「見本」を見せた方が100倍早い。それと同じだ。

プロンプト:

<instructions>
顧客レビューを分析し、指定フォーマットで出力してください。
</instructions>

<examples>
<example>
<input>このアプリ最高!毎日使ってます。ただ通知が多すぎるのだけ何とかして。</input>
<output>
- 感情: ポジティブ(80%)
- 要約: アプリの日常的な使用価値を高評価。通知頻度に改善要望あり。
- アクション: 通知設定のカスタマイズ機能を検討
</output>
</example>

<example>
<input>使い方がさっぱりわからん。マニュアル読んでも意味不明。</input>
<output>
- 感情: ネガティブ(90%)
- 要約: UIの直感性とドキュメントの分かりやすさに深刻な不満。
- アクション: オンボーディングフローの刷新+FAQ動画の作成
</output>
</example>
</examples>

<review>
デザインはきれいだけど、読み込みが遅くてイライラする。
改善されたらずっと使いたい。
</review>

Claudeの出力例:

- 感情: ミックス(ポジティブ40% / ネガティブ60%)
- 要約: デザイン品質は評価するが、パフォーマンスの遅さが利用継続の障壁。改善意欲は高い。
- アクション: ページ読み込み速度の最適化(画像圧縮・遅延読込み等)

ポイントは<examples>の中に<example>をネストしている点だ。こうすることで「ここからここまでが1つの例」という境界がClaudeにはっきり伝わる。

パターン3: 変数テンプレート

同じプロンプトを繰り返し使い回すなら、変数部分をXMLタグで囲むのが鉄則だ。

うちのLANCE(フリーランス向け家計簿アプリ)でも、SNS投稿文を量産するときにこのパターンを使っている。

プロンプト:

<instructions>
以下の商品情報をもとに、SNS投稿文を3パターン作成してください。
各パターンは140文字以内、ハッシュタグ2つ付き。
</instructions>

<product_name>LANCE</product_name>
<product_category>フリーランス向け家計簿アプリ</product_category>
<key_feature>レシートをLINEに送るだけでAIが自動仕訳</key_feature>
<target_audience>確定申告が面倒なフリーランス</target_audience>

Claudeの出力例:

【パターン1】
レシート撮ってLINEに送るだけ。あとはAIが勝手に仕分けてくれる。確定申告の「めんどくさい」、LANCEで終わらせよう。
#フリーランス #確定申告

【パターン2】
経費の入力、まだ手打ちしてるの?LANCEならLINEでレシート送るだけで帳簿が完成。もう領収書の山とはサヨナラ。
#LANCE #経費管理

【パターン3】
確定申告のために1年分のレシート整理する地獄、知ってるよね。LANCEを使えば、撮って送って終わり。今日から始めない?
#確定申告 #AI家計簿

<product_name><key_feature>の中身だけ差し替えれば、別の商品でもそのまま同じテンプレートが使える。施工図面の「標準詳細図」と考え方は同じだ。一度作れば、現場(プロジェクト)が変わっても使い回せる。

パターン4: 出力フォーマットの指定

Claudeの回答にもXMLタグを使わせることで、プログラムでの後処理がぐっと楽になる。

プロンプト:

<instructions>
以下のメールから重要情報を抽出し、指定されたXMLタグで返してください。
</instructions>

<output_format>
- 送信者名: <sender>タグで囲む
- 主なトピック: <topic>タグで囲む
- 対応期限: <deadline>タグで囲む
- 必要なアクション: <action>タグで囲む
</output_format>

<email>
From: 佐藤花子
Subject: 新製品プレス発表の準備について

田中様

プロトタイプが6月末に完成予定です。
7月15日までにプレスリリース案をご提出ください。
8月上旬のプレス発表に向けて、広報チームとの打ち合わせも
来週中にセッティングをお願いします。

佐藤花子
</email>

Claudeの出力例:

<sender>佐藤花子</sender>

<topic>新製品プレス発表の準備</topic>

<deadline>
- プレスリリース案提出: 7月15日
- 広報チーム打ち合わせ設定: 来週中
- プレス発表: 8月上旬
</deadline>

<action>
1. プレスリリース案を7月15日までに作成・提出
2. 広報チームとの打ち合わせを来週中にセッティング
</action>

この出力をPythonで処理するなら、正規表現やBeautifulSoupで各タグの中身だけ抜き取れる。Claudeをバッチ処理パイプラインに組み込むとき、この手法は必須になる。

パターン5: ネスト構造で複雑タスクを整理

複数のドキュメントを同時に分析させるとき、Anthropic公式が推奨しているのが<documents>><document>のネスト構造だ。

プロンプト:

<instructions>
以下の2つの文書を比較分析し、共通点と相違点を整理してください。
まず各文書から関連する箇所を引用してから分析に入ってください。
</instructions>

<documents>
<document index="1">
<source>2025年度_事業計画.pdf</source>
<document_content>
来期はAI活用による業務自動化を推進。開発部門の人員を30%削減し、
その分のリソースをマーケティングに再配分する。
目標売上は前年比120%。
</document_content>
</document>

<document index="2">
<source>取締役会_議事録_0315.pdf</source>
<document_content>
AI導入による自動化は賛成だが、人員削減は段階的に進めるべき。
急激な組織変更はモチベーション低下を招くリスクがある。
売上目標は115%が現実的ではないか。
</document_content>
</document>
</documents>

Claudeの出力例:

## 引用

文書1(事業計画)より:
> 「開発部門の人員を30%削減し、その分のリソースをマーケティングに再配分する」

文書2(取締役会議事録)より:
> 「人員削減は段階的に進めるべき。急激な組織変更はモチベーション低下を招くリスク」

## 共通点
- AI活用による業務自動化の推進方針は両文書で一致
- 売上向上を目指す方向性は共有されている

## 相違点
| 項目 | 事業計画 | 取締役会 |
|------|---------|---------|
| 人員削減 | 30%を一括実施 | 段階的に実施 |
| 売上目標 | 前年比120% | 前年比115%が現実的 |
| リスク認識 | 記載なし | モチベーション低下リスクを指摘 |

<document index="1">のように属性を付けることで、Claudeが「文書1からの引用」と「文書2からの引用」を混同しない。これも施工図面の発想と同じだ。1階平面図と2階平面図を同じ紙に描くやつはいない。ちゃんと分けて、通り芯でつなげる。XMLタグのネストはその「通り芯」の役割を果たしている。

Anthropic公式ドキュメントでは、この形式で長文コンテキスト(20,000トークン以上)を扱う際に回答品質が最大30%向上するとされている(Anthropic公式)。

実務で即使えるXMLタグ活用プロンプト3選

基本パターンを押さえたところで、実務シーンで「そのままコピペで使える」レベルのプロンプトを3つ紹介する。

全部、私が実際に業務で使っているやつだ。

活用例1: 週次レポートの自動要約+ネクストアクション抽出

チームの週次報告を1つのプロンプトで要約し、来週やるべきことまで整理する。

プロンプト:

<role>あなたはプロジェクトマネージャーのアシスタントです。</role>

<instructions>
以下の週次レポートを分析し、次のフォーマットで出力してください。
1. 3行サマリー
2. 進捗率(推定%)
3. リスク・懸念事項
4. 来週のアクションアイテム(担当者・期限付き)
</instructions>

<weekly_report>
{{ここにチームの週次レポートを貼り付け}}
</weekly_report>

<output_format>
<summary>3行サマリーをここに</summary>
<progress>推定進捗率</progress>
<risks>リスク・懸念事項</risks>
<actions>来週のアクションアイテム</actions>
</output_format>

<role>タグでPMアシスタントという立場を明示し、<output_format>で期待する出力構造をXMLで見せている。こうすることで、Claudeが回答にも同じタグを使ってくれるため、後から自動処理しやすい。

活用例2: 競合サービス比較分析

複数の競合サービスを同時に分析し、自社の差別化ポイントを洗い出す。パターン5のネスト構造を応用したものだ。

プロンプト:

<role>あなたはSaaS市場のアナリストです。</role>

<instructions>
自社サービスと競合2社を比較分析してください。
各サービスの強み・弱みを評価し、自社が勝てるポジショニングを提案してください。
分析は事実ベースで、推測は「推測」と明記してください。
</instructions>

<services>
<service type="自社">
<name>LANCE</name>
<description>フリーランス向けAI家計簿。LINEでレシート送信→AI自動仕訳→確定申告サポート</description>
<pricing>無料(ベータ版)</pricing>
</service>

<service type="競合">
<name>freee</name>
<description>クラウド会計ソフト。確定申告・経費精算・請求書作成</description>
<pricing>月額1,980円〜</pricing>
</service>

<service type="競合">
<name>マネーフォワード クラウド確定申告</name>
<description>自動仕訳・確定申告書類作成・銀行口座連携</description>
<pricing>月額980円〜</pricing>
</service>
</services>

type="自社"type="競合"といった属性を使うと、Claudeが各サービスの立場を正確に把握できる。

活用例3: コードレビュー依頼(Claude Code連携)

Claude Codeを使った開発フローでも、XMLタグは活躍する。レビュー観点を明確に分離することで、的確なフィードバックが得られる。

プロンプト:

<instructions>
以下のコードをレビューしてください。
観点ごとにフィードバックを分けて出力してください。
</instructions>

<review_criteria>
<criterion name="セキュリティ">SQLインジェクション、XSS、認証バイパスのリスク</criterion>
<criterion name="パフォーマンス">N+1クエリ、不要なループ、メモリリーク</criterion>
<criterion name="可読性">命名規則、関数の長さ、コメントの適切さ</criterion>
</review_criteria>

<code language="python" file="api/users.py">
{{レビュー対象のコードを貼り付け}}
</code>

<review_criteria>で観点を事前定義しておくと、Claudeが「セキュリティの観点では…」「パフォーマンスの観点では…」と構造化されたレビューを返してくれる。「全体的に問題ないです」みたいな雑なレビューにはならない。

XMLタグでやりがちな失敗3つと対処法

XMLタグは簡単だが、ハマるポイントもある。これは現場でもよくある話で、図面が読めない新人が最初に犯すミスとだいたい同じだ。

失敗1: タグの閉じ忘れ

一番多いミス。開始タグを書いて終了タグを忘れるやつ。

現場で言えば、通り芯を引いたのに終点を書き忘れるようなもの。どこまでがその通りなのか分からなくなる。

<!-- NG: 閉じタグがない -->
<instructions>
議事録を要約してください。

<meeting_notes>
4月の定例ミーティング...
</meeting_notes>
<!-- OK: 閉じタグあり -->
<instructions>
議事録を要約してください。
</instructions>

<meeting_notes>
4月の定例ミーティング...
</meeting_notes>

対策はシンプルだ。タグを書くときは開始タグと終了タグをセットで先に書いてから、中身を埋める。これだけで閉じ忘れは防げる。

失敗2: ネストが深すぎる

XMLタグは入れ子にできるが、Anthropic公式ドキュメントによると5層以上のネストでパフォーマンスが低下する可能性がある。

施工図面でも、詳細図の中にさらに詳細図を描き始めたら「それもう別の図面に分けろよ」って話になる。プロンプトも同じだ。

<!-- NG: 5層以上のネスト -->
<level1>
  <level2>
    <level3>
      <level4>
        <level5>
          <level6>ここまで深いと精度が落ちる</level6>
        </level5>
      </level4>
    </level3>
  </level2>
</level1>

実務で4層以上のネストが必要になることはまれだ。もしネストが深くなりそうなら、プロンプトを分割して2段階で処理する「プロンプトチェイニング」を検討した方がいい。図面を分けろ、ということだ。

失敗3: タグ名が曖昧でClaudeが混乱する

<data1><data2>のような意味のないタグ名を使うと、Claudeがタグの役割を推測できない。

これは図面に「部材A」「部材B」としか書いてないのと同じだ。「何の部材だよ」ってなる。

<!-- NG: 何が入っているか分からない -->
<data1>新製品の仕様書</data1>
<data2>競合製品の比較表</data2>

<!-- OK: タグ名が内容を反映 -->
<product_spec>新製品の仕様書</product_spec>
<competitor_comparison>競合製品の比較表</competitor_comparison>

Anthropic公式も「タグ名は囲んでいるコンテンツに関連した名前をつけることを推奨」と明記している。英語でもかまわないし、日本語をローマ字にしてもいい。大事なのは「タグ名を見ただけで中身が想像できる」ことだ。部材番号と同じ。

Claude 4.5/4.6時代のXMLタグ新活用法

2026年4月現在、最新のClaude Opus 4.6ではXMLタグの活用シーンがさらに広がっている。Anthropic公式が推奨する新しい使い方を2つ紹介する。

adaptive thinkingとの組み合わせ

Claude 4.6では「adaptive thinking」(適応的思考)という機能が追加された。XMLタグと組み合わせることで、Claudeの思考プロセスを制御できる。

<instructions>
以下のデータを分析してください。
まず<thinking>タグ内で分析の計画を立ててから、<answer>タグで結論を出してください。
</instructions>

<data>
{{分析対象データ}}
</data>

Few-shotの例示に<thinking>タグを含めると、Claudeが同じ思考パターンを自分の回答にも適用する。ただし、Anthropic公式は「人間が細かい手順を指定するより、Claudeに自由に考えさせた方が良い結果が出ることが多い」とも言っている。

ここは正直、ケースバイケースだと思う。定型的な分析なら手順指定が効くし、創造的なタスクなら自由にさせた方がいい。私の体感だと、7割くらいのタスクは手順指定しない方がうまくいく。

ツール使用時の構造化指示

Claude Codeのようなエージェント環境では、ツール呼び出しの指示にもXMLタグが有効だ。

<default_to_action>
変更を提案するだけでなく、デフォルトで実装まで行ってください。
ユーザーの意図が不明な場合は、最も有用な行動を推測して実行し、
不足する詳細はツールを使って調べてください。
</default_to_action>

この例はAnthropic公式ドキュメントに掲載されている実際のシステムプロンプトだ。XMLタグで行動指針を囲むことで、通常のテキスト指示よりもClaudeが確実に従う。

よくある質問(FAQ)

Q: XMLタグはChatGPTやGeminiでも使えますか?

使えるが、効果はClaudeほど大きくない。ChatGPTやGeminiはMarkdownベースのプロンプトに最適化されている。ClaudeがXMLタグで特に精度が上がるのは、トレーニング段階でXMLを使用していたというClaude固有の特性による。道具は用途に合ったものを使え、という話だ。

Q: タグ名は日本語でもいいですか?

使える。<指示>内容</指示>のように日本語のタグ名も機能する。ただし、Anthropic公式のサンプルはすべて英語タグなので、英語の方がClaudeの理解精度は若干高い可能性がある。実用上は英語のタグ名(<instructions><context>など)を推奨する。

Q: XMLタグとMarkdownの見出し(## )はどう使い分ける?

Claudeへの指示にはXMLタグ、人間が読む最終出力にはMarkdownが基本だ。例えば、指示部分は<instructions>で囲み、「出力はMarkdownのH2見出しで構成してください」と指示する形が最も効果的。

Q: プロンプトが短い場合でもXMLタグは必要ですか?

1〜2文の短いプロンプトなら不要だ。「この文章を要約してください:〇〇」程度なら、タグなしで十分機能する。XMLタグが効くのは、指示・データ・例示・出力形式など複数の要素が混在する場面だ。目安として、プロンプトが3行を超えたらXMLタグの使用を検討するといい。

Q: Claude APIでXMLタグを使うとき、エスケープは必要ですか?

通常は不要。Claudeはプロンプト内のXMLタグをHTMLやプログラミング言語のXMLとは別物として扱う。ただし、プロンプトの内容自体にHTMLコードを含める場合は、<code>タグで囲むなどして区別するといい。

まとめ:図面を描け。話はそれからだ。

XMLタグによる構造化は、Claudeの精度を引き出す最も確実な方法だ。

覚えるべきは5パターン。指示と入力の分離、例示の提示、変数テンプレート、出力フォーマット指定、ネスト構造。施工図面で言えば、平面図・立面図・断面図・詳細図・仕上表。この5種類を描ければ、どんな建物でも建てられる。

プロンプトも同じだ。

XMLタグの力をさらに引き出したいなら、CO-STARフレームワークとXMLタグを組み合わせる方法も読んでほしい。CO-STARの6要素をXMLタグで囲むだけで、精度がもう一段上がる。

2026年時点でClaude Opus 4.6はadaptive thinkingやツール連携など機能が大幅に拡張されたが、XMLタグの重要性はむしろ増している。建物が大きくなるほど図面が重要になるのと一緒で、プロンプトが複雑になるほど構造化の価値が上がる。

フワッとした指示で「なんかいい感じにして」は、現場でもAIでも通じない。図面を描け。タグを書け。話はそれからだ。

XMLタグをもっと活用したい?

構造化プロンプトの技術は、AI時代のフリーランスにとって「見積もりが書ける」レベルの基本スキルになりつつある。XMLタグで仕事の精度を上げたら、次はお金の管理も自動化してみないか。

LANCE — レシートを撮るだけのAI家計簿(無料)

目次