今更だけどよくやる Claude Code 活用法

Claude Code の会話が長くなるときの仕組みを整理し、私が日常的にやっているリセット、模範解答、計画、巻き戻しに加えて、トークン効率を意識した習慣をまとめます。

公開日
読了まで
8 分

/ 8 分

目次

Claude Code で長く会話を続けていると、最初に出した指示が無視されることがあります。

「同じことを何度も言わないと意図が伝わらない」「気づいたらトークンだけ消費して、思っていたのと違うコードができている」。私も以前はこの現象に悩んでいました。

原因はモデルの限界だけではなく、コンテキストウィンドウの圧迫にもあります。会話履歴を含むリクエストをモデルに送るため、長く話すほどコンテキストに含まれる情報が増加します。
この記事では仕組みを整理し、リセット、模範解答の提示、計画の立案、巻き戻しといった実践と、トークン効率を意識した工夫をまとめます。

メモ

仕様は 2026 年 9 月 14 日時点の公式ドキュメントに基づいています。キャッシュ TTL の設定には Claude Code v2.1.242 以降が必要です。

なぜ長く話すと困るのか

Claude Code は会話のたびに「今回の指示」だけでなく、これまでの会話履歴やシステムプロンプトも一緒にモデルへ送ります。

1 回目: [System] + [Q1] → [A1]
2 回目: [System] + [Q1+A1] + [Q2] → [A2]
3 回目: [System] + [Q1+A1+Q2+A2] + [Q3] → [A3]
4 回目: [System] + [Q1+A1+Q2+A2+Q3+A3] + [Q4] → [A4]

会話が進むほど、リクエストに含まれる会話履歴は長くなります。毎回すべてを一から処理するわけではなく、変更されていない部分はプロンプトキャッシュから再利用されます。

ただし、キャッシュは会話履歴を短くする仕組みではありません。履歴が長くなればコンテキストウィンドウを圧迫し、必要な指示が過去のやり取りに埋もれることもあります。そのため、コンテキストの長さとキャッシュの有無は分けて考える必要があります。
入力が長くなると必要な情報を取り出しにくくなる現象は、Context Rot に関する研究でも報告されています。

プロンプトキャッシュの有効期間と破棄条件

プロンプトキャッシュは、一定時間リクエストがないと期限切れになります。Claude のサブスクリプションをプラン内で利用している場合、メインの会話は標準で 1 時間、それ以外のリクエストは 5 分で期限切れとなります。期限が切れたあとの最初のリクエストでは、会話履歴が再処理されます。

モデルを途中で切り替えると、その会話のキャッシュは引き継がれません。effort の変更も多くのモデルではキャッシュを無効にします。私はタスクを始めるときにモデルと effort を選び、必要がなければ途中で変更しないようにしています。

依頼に目的と完了条件を書く

Claude Code は曖昧な依頼からでも作業を進めてくれます。依頼の解釈を任せきりにすると、想定より広い範囲に手を入れたり、ほしい結果と違うものを作ったりします。

私は、作業内容に応じて次の項目をプロンプトに入れています。

# 目的(なにをやってほしいのか)
# 範囲(どこまで対応してよいか)
# 進め方(どの順番で判断・実行してほしいか)
# 制約(守ってほしいルール・やってはいけないこと)
# 完了条件(なにを確認したら完了とするか)

簡単な質問に毎回この項目をすべて書く必要はありません。実装範囲や成功条件が曖昧な作業では、前提や条件をあらかじめ定めておくと手戻りを減らせます。

依頼したいことがまだ固まっていないときは、Claude Code に質問をさせてプロンプトを整理します。私が使っているのは次の指示です。

良いアウトプットを出すために、私に聞きたいことを厳選して質問してください。質問は推奨案と理由も提示。選択肢は数字で提示。

タスクに合わせてモデルを選ぶ

単純な調査やファイル探しまで、いつも最上位のモデルに任せる必要はありません。私は関連ファイルの確認や短い要約には軽いモデルを使い、要件の解釈が難しい設計や複数ファイルにまたがる実装には、より強いモデルを選びます。具体的には、調査や簡単な実装には Sonnet を使い、設計や要件定義、少し複雑な実装をするときなどは Opus や Fable を使っています。

サブエージェントもモデルを指定できます。別の既定値を設定していなければ、モデル指定のないサブエージェントはメインの会話で使っているモデルを引き継ぎます。
呼び出し元の Claude Code が簡易タスクと判断した場合は公式の Explorer サブエージェント(Haiku モデル)が使われますが、そうでない場合は親モデルを引き継ぐため注意が必要です。
もしプロジェクト専用の調査用サブエージェントを軽いモデルで動かすなら、定義ファイルの model にモデル名を記載します。

たとえば、次の内容を .claude/agents/quick-investigator.md に保存すると、調査用サブエージェントの定義になります。

.claude/agents/quick-investigator.md
---
name: quick-investigator
description: 関連ファイルの調査に使う
tools: Read, Grep, Glob
model: haiku
---

関係するファイルと根拠を挙げ、調査結果を短く報告してください。

model: haiku を sonnet や opus に変えれば、別のモデルを指定できます。利用可能なモデル名は随時更新されるため、設定時は最新の情報を確認してください。

長いツール結果は必要な箇所だけ読む

ログや Web ページをそのまま Claude Code に渡すと、必要な情報以外までコンテキストに入ります。私は結果をファイルに保存し、検索で関連する箇所に絞ってから Claude Code に参照させています。

たとえば、ビルドログからエラーや警告の周辺だけを取り出せます。

rg -n -C 2 "ERROR|WARN" build.log > relevant-lines.log

-C 2 は一致した行の前後 2 行を含めます。relevant-lines.log だけを Claude Code に読ませれば、元のログ全体を会話に入れずに済みます。

使わない MCP サーバーとスキルの整理

MCP サーバーやスキルを追加したままにすると、使っていないツール定義が増えて管理が難しくなります。私は週に 1 回ほど、使わなくなったもの、役割が重複しているもの、接続に失敗しているものを見直して無効にしています。

現在の Claude Code は、対応している環境では MCP のツール定義を必要になったときに検索する仕組みが標準で有効です。そのため、MCP を 1 つ追加するたびに全ツールの定義が必ず会話のコンテキストへ入るわけではありません。それでも、不要なツール定義を残すと意図しない呼び出しの原因になり得ます。

CLAUDE.md と自動メモリの内容を絞る

CLAUDE.md は毎回の会話の開始時に読み込まれます。私は、プロジェクト固有のルール、テストの実行方法、コードからは分からない設計上の決定など、繰り返し必要になる情報を中心に書いています。

フォルダー構成や、ファイルを 1 つ読めば分かる情報は、必要になったときに Claude Code が調べられます。毎回の会話に不要な説明を CLAUDE.md に書くと、指示が長くなり、本当に必要な情報が見つけにくくなります。

Claude Code の自動メモリは初期状態で有効です。私は、些細な情報が保存されたり、終わった作業の前提が別の会話に入り込んだりするのを防ぐため、自動メモリをオフにしています。設定では "autoMemoryEnabled": false を指定できます。環境変数を使う場合は CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 です。

決まったことをファイルに残して会話を区切る

設計や要件が固まったら、GitHub Issue やローカルの Markdown ファイルに残します。チャットだけに決定事項を置かないようにすると、実装を別のセッションに分けたり、複数のタスクに切り出したりできます。

1 つの機能を長い会話のまま実装し続けず、決定事項と次の作業をファイルに残してから /clear で新しい会話を始めます。別のタスクに移るときも同じです。決めた内容に沿って作業を切り替えれば、関係のない過去のやり取りを持ち越さずに済みます。

次のセッションに作業を続けてもらうときは、リセット前に Claude Code 自身に引き継ぎ用の指示を作らせます。私がよく使うのは次の指示です(Mac OS の場合)。

次のセッションの指示を簡潔に考えて、pbcopy してクリップボードに入れてください。

これでクリップボードに次のセッション用のプロンプトが残るので、/clear の直後に貼り付ければ続きから再開できます。次のセッションに渡すだけなら、引き継ぎ用の長大なファイルを作る必要はありません。あとから見返したい決定事項は、Issue や Markdown に残しておきます。

他にも会話履歴を要約する /compact を使う方法もあります。作業の途中で文脈を保ったまま続けたいときには便利ですが、要約で詳細が抜けることがあります。
長い休止のあとに実行すると、要約のために履歴を再処理する場合もあります。私は、要件や設計の保存先を先に用意し、/compact は会話を続ける必要があるときに使っています。

指示を詰め込まず、模範解答を渡す

ルールを列挙した長文プロンプトよりも、良い例を 1 つ示すほうが意図通りの出力を得やすくなります。たとえば議事録を作成させる場面を考えます。

「箇条書きで、敬語で、堅苦しくなりすぎず、部署名は正式名称で、個人名は書きすぎないで議事録を作成して」

このように指示するのではなく、次のように指示します。

「過去に作成した meeting-2026-05-01.md と同じトーンで議事録を作成して」

この指示のほうが、求めている形式に近い出力が得られます。

開発タスクでも同様です。設計方針、命名規則、テストパターンを長文で説明するより、「UserService.ts を参考に同じスタイルで実装して」と書いたほうが意図が伝わります。

模範解答が最初から手元にあるとは限りません。その場合は、Claude Code と対話しながら模範解答を作成します。満足できる出力が得られたら、それを次回以降のリファレンスとして保存しておきます。

ただし、模範解答を育てる過程でも会話は長くなるので、忘れずにこまめにリセットしましょう。

実装前に計画を立てる

前述のとおり、Claude Code はユーザーからの依頼をよしなに解釈してすぐに実装を始める傾向があります。その結果「は?思ってたのと違うんだけど🤮」となってトークンと時間を失います。
これを防ぐには、実装前に計画を立てさせるか、事前のヒアリングで要件を深掘りしてから作業を依頼します。

  • Shift+Tab で Plan mode を選ぶか、1 回の依頼に /plan を付けて、実装計画を先に立てさせる
  • 設計や要件の曖昧な箇所を徹底的に洗い出したいときは、/grill-me スキルを使ってインタビューさせる
/grill-me

作成した計画ファイルをそのまま採用せず、サブエージェントにレビューさせるのも有効です。私は「プランファイルはシニアエンジニアのサブエージェントにレビューさせ、妥当な指摘だけ修正し、判断に悩むものは必ず私に質問する」と指示しています。計画は立てただけでは観点が漏れていることがあるため、別の視点を通すと安全です。

/rewind による指示の巻き戻し

エスケープキーを 2 回押す(または /rewind)と、過去の会話に戻れます。意図と異なる回答が返ってきたときは、追加で説明を重ねる前に最初の指示まで巻き戻します。そこで、より具体的に依頼し直せば無駄な情報を増やさずに済みます。

私「議事録作成して」
🤖「はい、作成しました」
私「これ、敬語が丁寧口調すぎるな…もうちょいフレンドリーにして。」
🤖「はい、フレンドリーにしました(もはやタメ口)」
私「え?フレンドリーすぎん?相手はお客様で取引相手だよ?」
私「なんか思ってたんと違うなぁ….」

このようなやり取りが重なると、不要な修正履歴が会話に蓄積されます。意図と異なる回答が返ってきたときは追加の指示を重ねるのをやめ、過去の指示へ巻き戻して要件を整理し直します。

私「議事録作成して」
🤖「はい、作成しました」

// このタイミングでエスケープキー 2 回(または `/rewind`)で最初の指示まで戻す

私「議事録作成して。相手はお客様で取引相手です。敬語がベースだけど、堅苦しくなりすぎず、過去に作成した `meeting-2026-05-01.md` くらいの少しだけフレンドリーな口調で作成して。」
🤖「はい、作成しました」

ここでも、具体的な模範解答をあわせて提示する方法が役立ちます。

Claude Code の公式ドキュメントに質問する

Claude Code の公式ドキュメントには、機能や制限についてチャットで質問する機能があります。私がサブエージェントのモデル指定方法を質問したときは、回答と一緒に該当する公式ドキュメントへのリンクが表示されました。仕様を覚えておく必要はなく、回答のリンクから詳細を確認できます。

Claude Code Docs Assistant がモデル指定を説明し、サブエージェントの公式ページへのリンクを示している画面

私は設定を変更する前に、まず公式ドキュメントのチャットで仕様を調べるようにしています。

まとめ

  • 会話が長くなるほど会話履歴が増加する。プロンプトキャッシュは処理を効率化するが、コンテキストの圧迫自体を防ぐものではない
  • 長い作業はタスクに分け、決定事項をファイルに残して /clear する。次のセッション用の指示はクリップボードに用意する
  • ルールを羅列するだけでなく、模範解答を 1 つ提示して意図を伝える
  • 実装前に計画を立て、考慮不足を防ぐためにサブエージェントにレビューさせる
  • 意図と異なる回答が返ってきたときは、追加の指示を重ねず /rewind で過去の指示に戻って修正する
  • プロンプト、モデル、ツール結果、CLAUDE.md、MCP、スキルを必要な情報量に整える
  • Claude Code の仕様は、公式ドキュメントのチャットで回答とリンクを確認する

参考

付録: settings.json の最小例

~/.claude/settings.json に設定する場合の例です。メインの会話は、サブスクリプションの利用枠内では標準で 1 時間キャッシュされます。サブエージェントなど、それ以外のリクエストは標準で 5 分です。キャッシュ設定は Claude Code v2.1.242 以降で使用できます。

~/.claude/settings.json
{
  "promptCacheTtl": "1h",
  "subagentPromptCacheTtl": "1h",
  "autoMemoryEnabled": false
}
この記事を Markdown で取得