Tech

Claude Codeの記憶の仕組み

投稿日:

はじめに

前回の記事からClaude Codeを使い始めました。使っているうちに、前のセッションで伝えたはずのルールを守ってくれないことが何度かありました。

これは、Claude Codeが毎回まっさらな状態でセッションを始めることが原因です。

今回は、Claude Codeがセッションをまたいで情報を記憶する仕組みである「CLAUDE.md」と「自動メモリ」についてまとめました。

Claude Codeの記憶の仕組み

まずは、Claude Codeがどのように情報を覚えているのか、全体像を見ていきます。

セッションは毎回リセットされる

Claude Codeでは、セッションごとに新しいコンテキストウィンドウが用意されます。

コンテキストウィンドウとは、モデルが一度に参照できる情報の入れ物のようなものです。会話の履歴、読み込んだファイル、コマンドの実行結果などはすべてここに入ります。

コンテキストウィンドウには上限があるため、会話が長くなると、それまでのやり取りが要約に置き換えられます(コンパクト)。また、新しいセッションを始めると、前のセッションの会話は引き継がれません。

そこで、セッションをまたいで情報を引き継ぐために、以下の2つの仕組みが用意されています。

  • CLAUDE.md:自分で書く指示ファイル
  • 自動メモリ:Claudeが自分で書くメモ

どちらもセッション開始時にコンテキストへ読み込まれます。つまり、最終的にはコンテキストウィンドウに載ることで初めて効果を発揮します。

CLAUDE.mdと自動メモリの違い

2つの仕組みの違いは以下の通りです。

CLAUDE.md 自動メモリ
書く人 自分 Claude
内容 指示やルール 学習した内容やパターン
スコープ 組織・ユーザー・プロジェクト リポジトリごと
読み込み 全セッション 全セッション(MEMORY.mdの先頭200行または25KBまで)
用途 コーディング規約、ワークフロー、アーキテクチャ 自分の好み、Claudeへの修正指示、コードからは分からない背景

注意点として、どちらも「設定」ではなく「コンテキスト」として扱われます。そのため、Claudeが必ず従うとは限りません。指示は具体的かつ簡潔に書くほど守られやすくなります。

CLAUDE.md

CLAUDE.mdは、Claudeに永続的な指示を与えるためのマークダウンファイルです。

GitHub Copilotでいうcustom instructionsに近いものです。

配置場所とスコープ

CLAUDE.mdは配置する場所によってスコープが異なります。

スコープ 配置場所 用途
組織(管理ポリシー) macOS: /Library/Application Support/ClaudeCode/CLAUDE.md
Linux / WSL: /etc/claude-code/CLAUDE.md
会社のコーディング標準やセキュリティポリシー
ユーザー ~/.claude/CLAUDE.md 全プロジェクト共通の個人設定
プロジェクト ./CLAUDE.md または ./.claude/CLAUDE.md チームで共有するルール(Gitで管理)
ローカル ./CLAUDE.local.md 自分だけのプロジェクト設定( .gitignore に追加する)

組織向けのCLAUDE.mdは、個人の設定で除外することはできません。

読み込まれるタイミング

作業ディレクトリと、その上位にあるディレクトリのCLAUDE.mdは、起動時にすべて読み込まれます。

読み込まれたファイルは上書きされるのではなく、連結されます。並び順はルートに近いものが先で、作業ディレクトリに近いものほど後になります。

一方、作業ディレクトリより下のサブディレクトリにあるCLAUDE.mdは、起動時には読み込まれません。Claudeがそのディレクトリ内のファイルを読み書きしたタイミングで、必要に応じて読み込まれます。

また、CLAUDE.md内のHTMLコメントはコンテキストに渡される前に削除されます。人間向けのメモを残したい場合に、トークンを消費せずに書けるので便利です。

/initで雛形を作成する

CLAUDE.mdを一から書くのは大変なので、まずは /init コマンドで雛形を作成するのがおすすめです。

Claudeがコードベースを分析し、ビルドコマンドやテスト方法、プロジェクトの規約などを含むCLAUDE.mdを生成してくれます。すでにCLAUDE.mdがある場合は、上書きではなく改善案を提案してくれます。

ちなみに、 .cursorrules や .github/copilot-instructions.md があれば、その内容も取り込んでくれるので、Copilotからの移行時にも便利です。

効果的な指示の書き方

CLAUDE.mdは書き方次第で守られやすさが変わります。ポイントは以下の通りです。

  • 検証できるくらい具体的に書く
  • 1ファイルあたり200行以内を目安にする
  • 見出しや箇条書きで整理する
  • 矛盾する指示を残さない

具体的な書き方の例は以下の通りです。

NG OK
コードを適切にフォーマットする インデントは2スペースにする
変更をテストする コミット前に npm test を実行する
ファイルを整理する APIハンドラは src/api/handlers/ に置く

指示同士が矛盾していると、Claudeはどちらか一方を任意に選んでしまいます。定期的に見直して、古い指示は削除しておきましょう。

他のファイルをインポートする

CLAUDE.mdでは、 @パス と書くことで他のファイルを取り込むことができます。

相対パスは、作業ディレクトリではなくインポート元のファイルを基準に解決されます。また、インポートは最大4階層までネストできます。

ただし、インポートしたファイルも起動時に読み込まれるため、コンテキストの節約にはなりません。あくまでファイルを整理するための機能です。

.claude/rulesでルールを分割する

プロジェクトが大きくなってきたら、 .claude/rules/ ディレクトリにトピックごとのルールファイルを置くことができます。

さらに、ファイルの先頭に paths を書くことで、特定のファイルを扱うときだけ読み込まれるルールにすることができます。

この例では、Claudeが src/api/ 配下のTypeScriptファイルを扱うときだけルールが読み込まれます。常に読み込む必要がない指示はこちらに移すことで、コンテキストを節約できます。

なお、全プロジェクト共通の個人ルールは ~/.claude/rules/ に置くこともできます。

AGENTS.mdとの関係

Claude Codeは、他のコーディングエージェント向けの AGENTS.md も読み込むことができます。

デフォルトでは、CLAUDE.mdがない場合にのみAGENTS.mdが読み込まれます。両方を読み込みたい場合は、 /config の「Project instructions」で設定を変更するか、CLAUDE.mdの中で @AGENTS.md とインポートします。

自動メモリ

自動メモリは、Claudeが作業中に自分自身でメモを取ってくれる機能です。ローカルのセッションではデフォルトで有効になっています。

保存される内容

自動メモリでは、以下の4種類の情報が保存されます。

種類 内容
user ユーザーの役割や専門知識、作業の好み
feedback Claudeに対して行った修正や、良いと伝えたアプローチ
project 進行中の作業や期限など、コードやGit履歴からは分からない情報
reference 課題管理ツールやダッシュボードなど、外部情報の場所

逆に、ファイル構成やアーキテクチャなどコードを読めば分かること、CLAUDE.mdにすでに書かれていることは保存されません。

また、毎回のセッションで必ず保存されるわけではなく、将来役に立つかどうかをClaudeが判断して保存します。

保存場所

自動メモリは、プロジェクトごとに以下の場所に保存されます。

<project> はGitリポジトリから決まるため、同じリポジトリであればworktreeやサブディレクトリでも同じメモリが共有されます。

ただし、自動メモリはマシンローカルなので、別のマシンやクラウド環境とは共有されません。

読み込みの仕組み

セッション開始時に読み込まれるのは、インデックスである MEMORY.md の先頭200行、または25KBまでです。それを超えた部分は読み込まれません。

個別のメモファイルは起動時には読み込まれず、必要になったタイミングでClaudeが読みに行きます。

作業中に「Saved 2 memories」や「Recalled 2 memories」と表示された場合は、Claudeがメモリを保存、または参照しています。

有効・無効を切り替える

自動メモリのオン・オフは、 /memory コマンドから切り替えることができます。

特定のプロジェクトだけ無効にしたい場合は、そのプロジェクトの設定ファイルに以下を記述します。

環境変数 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 を設定して無効にすることもできます。

メモリをうまく使うために

最後に、メモリ周りでよく使うコマンドと、困ったときの対処法を紹介します。

よく使うコマンド

コマンド 説明
/init CLAUDE.mdの雛形を生成する
/memory CLAUDE.mdや自動メモリのファイルを開いて編集する、自動メモリのオン・オフ
/context 読み込まれているメモリファイルやコンテキストの使用状況を確認する
/compact 会話を要約してコンテキストを空ける
/doctor prompt-audit 指示ファイルの古い内容や矛盾をチェックする

チャットで「〇〇を覚えておいて」と伝えると、Claudeは自動メモリに保存します。CLAUDE.mdに追記してほしい場合は「これをCLAUDE.mdに追加して」と明示しましょう。

CLAUDE.mdが守られないとき

まずは /context を実行し、「Memory files」に対象のファイルが表示されているか確認します。表示されていなければ、Claudeはそのファイルを見ていません。

読み込まれているのに守られない場合は、指示が曖昧になっていないか、他のファイルと矛盾していないかを確認します。

コミット前に必ずLintを実行するなど、確実に実行させたい処理は、CLAUDE.mdではなくHooksで設定するのが確実です。

/compact後に指示が消えたとき

プロジェクトルートのCLAUDE.mdは、コンパクト後にディスクから再度読み込まれるため消えることはありません。

消えてしまうのは、チャットの中だけで伝えた指示です。何度も伝えている指示は、CLAUDE.mdに書いておきましょう。

さいごに

Claude Codeがセッションをまたいで情報を記憶する仕組みとして、CLAUDE.mdと自動メモリについてまとめました。

どちらも最終的にはコンテキストに読み込まれるものなので、簡潔に保つことが大切です。同じ指示を2回したらCLAUDE.mdに書く、くらいの感覚で育てていくのが良さそうです。

おすすめ書籍

直感 LLM ―ハンズオンで動かして学ぶ大規模言語モデル入門 実践 LLMアプリケーション開発 ―プロトタイプを脱却し、実用的な実装に迫るための包括的な手引き LLM入門:しくみから学ぶ生成AIの基礎: “使うだけ”から卒業するための、易しいけど深く言語モデルを探求する本 (LLMマスターシリーズ)

blog-page_footer_336




blog-page_footer_336




-Tech
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

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

CAPTCHA


関連記事

マイGPTs入門

はじめに ChatGPTでは、特定の目的やタスクに特化した、カスタマイズGPTを作成することができる「GPTs」という機能があります。今回は、GPTsを自作して、GPTsならではの機能を試してみたいと ...

【Unity】URP対応のAssetのPrefabがピンク色になる件

はじめに こんにちは、suzukiです。以前のStarterAssetsのThirdPersonControllerを使った際にモデルがピンク色になってしまい、正常な表示がされていなかった件を掘り下げ ...

iOS13で申請するために押さえておきたいポイント

はじめに こんにちは、nukkyです。 来年の4月からiOS13での申請が必須になるため、今Xcode10で申請している方もXcode11以上での申請が必要ということで、iOS13で申請するために押さ ...

Bluetooth Low Energy(BLE)とは? Bluetoothの開発が初めての人向け!

はじめに Bluetoothは今やとても身近な存在になりました。ワイヤレスイヤホン、スマートウォッチ、忘れ物防止タグなど、様々な製品に使用されています。 今回は、そんな身近なBluetooth規格のう ...

[React]MUIのコンポーネントを使用したUI作成(Button、Alert編)

はじめに 最近は仕事でReactを使用しており、コンポーネントに関してはほぼMUIを使用しているので、今回はMUIの代表的なコンポーネントの使い方やデザイン、私がどのように使用しているかの紹介をしたい ...

フォロー

blog-page_side_responsive

2026年10月
日 月 火 水 木 金 土
 123
45678910
11121314151617
18192021222324
25262728293031

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。