CLAUDE.mdとMEMORY.mdの違いとは?Claude Code初心者が押さえるべき2つの役割

どっちに書く? 迷わない使い分け

CLAUDE.mdに「この関数は非推奨」と書くべきか、MEMORY.mdに書くべきか――Claude Codeを使い始めると、この2つのファイルの違いで迷う場面が結構あります。CLAUDE.mdは人が事前に書く「ルールブック」。MEMORY.mdはClaude Codeが作業中に蓄積する「学習ノート」。書き手が違うのだから、中身も書き方も当然違ってきます。

目次

一言でいうと

CLAUDE.mdは人が事前に書く指示書・ルールブック。MEMORY.mdはClaude Codeが作業中に蓄積する知見ノート

一番の違いは「誰が書くか」。CLAUDE.mdはあなたが書く。MEMORY.mdはClaude Codeが書く。これを混同すると「せっかく書いたのに反映されていない」という事態につながりがちです。

  • CLAUDE.md = セッション開始前に人が用意する「ルール」
  • MEMORY.md = セッション終了時にClaude Codeが蓄積する「発見」

なぜ2つも設定ファイルがあるのか

Claude Codeはセッションという単位で動きます。セッションを開始すると、まずCLAUDE.mdが読み込まれます。ここには「このプロジェクトではTypeScriptを使う」「テストは必ず実行すること」などのルールが書かれています。

作業が進むと、Claude Codeはいろいろなことを学習します。「このリポジトリのテストはpytestではなくunittestを使っている」「この関数は内部で非推奨になっている」など、作業を通じて発見した知見です。この知見をどこかに保存しておかないと、次のセッションでまた一から学び直しに。

そこでMEMORY.mdの出番です。セッションが終わるタイミングで、Claude Codeが学習した内容をMEMORY.mdに保存します。次回のセッションでは、CLAUDE.mdの「ルール」とMEMORY.mdの「前回までの知見」の両方が読み込まれる仕組み。

要するに、「指示を出す」と「学習を蓄積する」は別の役割だから2つに分かれています。1つのファイルに詰め込むと、人が書いたルールとAIが蓄積した知見が混ざって管理しづらくなります。

4つの軸で徹底比較

CLAUDE.mdとMEMORY.mdの違いを、4つの軸で整理してみます。

CLAUDE.md MEMORY.md
**書き手** 人間 Claude Code
**タイミング** セッション開始前(事前) セッション終了時(事後)
**目的** ルールの強制・指示の伝達 知見の蓄積・学習の引き継ぎ
**更新頻度** 手動(人が必要だと思った時) 自動(セッション終了時など)

書き手 — 一番シンプルです。CLAUDE.mdはあなたがエディタで開いて書く。MEMORY.mdはClaude Codeが自分で更新する。

タイミング — CLAUDE.mdは作業を始める前に用意しておくもの。たとえば架空のWebアプリプロジェクトなら、開発を始める前に「このプロジェクトではReactを使う」「CSSはTailwind CSSで統一する」といったルールを書いておきます。一方、MEMORY.mdは作業が終わった後に「このプロジェクトのテストコマンドはnpm run testではなくnpm run checkだった」といった発見が蓄積されます。

目的 — CLAUDE.mdは「こうしてほしい」という指示。MEMORY.mdは「こういうことが分かった」という記録。

更新頻度 — CLAUDE.mdは「プロジェクトの方向性が変わった時」に人が手動で更新。MEMORY.mdはセッションのたびにClaude Codeが自動で追記・更新します。

初心者がよく混同するポイント

実際に使い始めると、「あれ、どっちに書くんだっけ?」という場面に出くわします。よくある混同パターンを3つ整理しておきましょう。

「この関数は非推奨」はどちらに書く?

CLAUDE.mdに書くべきは「ルール」と「指示」です。「非推奨のAPIは使わないこと」という方針ならCLAUDE.md。でも「〇〇の関数が非推奨になっている」という事実の発見は、本来MEMORY.mdに蓄積されるべき知見。混同しやすいのが、「非推奨の関数を見つけたから、CLAUDE.mdに書いておこう」としてしまうケース。ルール(「非推奨APIは使わない」)はCLAUDE.md、発見(「〇〇が非推奨だった」)はMEMORY.md — と分けるのが自然です。

MEMORY.mdを手動で編集していいか

基本的にはClaude Codeに任せるのが無難です。手動で編集しても動かなくなるわけではありませんが、Claude Codeが次回のセッションで上書きする可能性があります。どうしても手動で残したい知見があるなら、CLAUDE.mdの側に書くのが安全。

迷ったら、これだけ考えればOK

  • 「こうしてほしい」→ CLAUDE.md
  • 「こういうことが分かった」→ MEMORY.md

指示やルールならCLAUDE.md、発見や知見ならMEMORY.md。この切り分けができると、両方のファイルがすっきり整います。

内容が矛盾したら?

CLAUDE.mdに書かれたルールが優先されます。たとえばCLAUDE.mdに「テストにはvitestを使う」と書いてあるのに、MEMORY.mdに「このプロジェクトはjestを使っている」と蓄積されている場合、Claude CodeはCLAUDE.mdの指示に従います。ただし、この状態は混乱の元なので、矛盾に気づいた時点でどちらかを直しておくのが望ましいです。

CLAUDE.local.mdという3つ目の選択肢

CLAUDE.mdとMEMORY.mdの他にもう1つ、知っておくと良いファイルがあります。CLAUDE.local.mdです。

CLAUDE.local.mdは、CLAUDE.mdの「ローカル版」。CLAUDE.mdはプロジェクトのルートに置かれてGitで管理されますが、CLAUDE.local.mdは同じ場所に置かれつつも.gitignoreの対象になります。つまり、自分のPCだけで有効にしたい設定を書く場所。

たとえば「自分の環境ではNode.jsのパスが特殊」「ローカルでのみ使いたいデバッグ用の指示」などをCLAUDE.local.mdに書いておけば、チームの他の人には影響しません。

3つのファイルの関係を整理するとこうなります。

  • CLAUDE.md = チーム共有のルール(Git管理)
  • CLAUDE.local.md = 自分だけのルール(Gitignore)
  • MEMORY.md = Claude Codeが蓄積する知見

CLAUDE.local.mdの詳しい使い方は、専用の記事で取り上げています。まずは「そういうファイルもある」と覚えておけば十分です。

自分のプロジェクトでどう使い分けるか

架空のブログプロジェクトを例に、CLAUDE.mdとMEMORY.mdがどう使い分けられるか見てみましょう。

CLAUDE.mdに書くこと(ルールの例):

# このプロジェクトのルール
- 記事は日本語で書く
- 画像のalt属性は必ず設定する
- 公開前にリンク切れを確認する

「こうしてほしい」という指示。セッションを開始する前に人が書いておきます。

MEMORY.mdに蓄積されること(知見の例):

# このプロジェクトで分かったこと
- 記事のテンプレートはlayouts/post.htmlを使っている
- 画像はstatic/images/に配置する
- ビルドコマンドはnpm run buildではなくnpx hugo

「こういうことが分かった」という記録。Claude Codeが作業中に発見し、セッション終了時にMEMORY.mdに保存されます。

「小さいプロジェクトだから使い分けなくてもいいのでは?」と思うかもしれません。確かに、CLAUDE.mdだけでもClaude Codeは動きます。ただ、MEMORY.mdが育ってくると「前回のセッションで見つけた〇〇」という情報が自動で引き継がれるため、毎回同じ説明をしなくて済むようになります。小規模でも、使い分ける意味はあります。

まとめ

CLAUDE.mdとMEMORY.mdの違いは、ひとことで言えば「ルールはCLAUDE.md、知見はMEMORY.md」です。

  • CLAUDE.md = 人が事前に書くルールブック
  • MEMORY.md = Claude Codeが作業中に蓄積する学習ノート
  • 迷ったら「こうしてほしい」か「こういうことが分かった」かで判断する
  • CLAUDE.local.mdは自分だけのローカル設定(Gitignore対象)

まずはCLAUDE.mdに基本的なルールを書いて、あとはClaude CodeにMEMORY.mdを育ててもらう。この分担を意識するだけで、Claude Codeとの作業がぐっとスムーズになります。

CLAUDE.mdの具体的な書き方や、CLAUDE.local.mdの詳しい使い方は関連記事で取り上げています。

まとめ

CLAUDE.mdは人が書くルール、MEMORY.mdはClaude Codeが育てる知見。この切り分けを押さえておけば、設定ファイルで迷うことがぐっと減ります。

目次