メインコンテンツまでスキップ

CLAUDE.md とメモリファイル

初級

Claude Code をより良くするために一つだけやるなら、これをやってください。CLAUDE.md は Claude が毎回のセッション開始時に読むプレーンテキストファイル——あなたのプロジェクトの恒久的なブリーフィングです。

What you'll learn
  • なぜ CLAUDE.md が Claude Code で最も効果の高い設定なのか
  • メモリの階層がグローバルからプロジェクト固有へどうマージされるか
  • /init で初期ファイルを生成し、それを削ぎ落とす方法
  • CLAUDE.md に何を入れるべきか——そして何を入れないべきか
  • @imports でドキュメントを複製せずに参照する方法

なぜ最も効果の高い設定なのか

これがないと、毎回のセッションでプロジェクトを説明し直すことになります(「pnpm を使っている、テストは __tests__ にある、/generated は触らないで…」)。これがあれば、Claude はすでに知っています。ここに良い指示を書けば、今後すべてのやり取りを一度に改善できます。

メモリの階層

Claude Code はいくつかの場所からメモリを読み込み、おおむねグローバルなものから固有なものへとマージします:

  • ユーザーメモリ — すべてのプロジェクトに渡るあなた個人の好み。
  • プロジェクトメモリ./CLAUDE.md、コミット済み) — このリポジトリがどう動くか。チームと共有されます。
  • ネスト — そのフォルダ内だけに適用されるルールのために、サブフォルダに CLAUDE.md を置きます。
メモリの各レイヤーを知る
Enter キーまたはスペースキーでカードを裏返します。左右の矢印キーでカードを移動できます。用語を表示しました。
1 / 4

出発点を生成する

Guided walkthrough1 of 3
  1. Claude がコードを調べ、自動で CLAUDE.md のドラフトを作成します。

CLAUDE.md のドラフトを生成する

/init

CLAUDE.md テンプレート から既成のスターターを取得してください。

何を入れるか

  • プロジェクトが何であるかを、2 文で。
  • 技術スタックと、実行 / テスト / リントの方法。
  • Claude が推測できない規約(命名、構造、コミットスタイル)。
  • ガードレール:「完了を宣言する前にテストを実行する」「/vendor は絶対に編集しない」「シークレットを決してコミットしない」。

何を入れないか

Watch out
  • Claude は CLAUDE.md を文字通り従います——古い、曖昧、または願望的な指示はむしろ害になります。
  • プロジェクトが今日実際にどう動くかを記述してください。短くて真実な方が、長くて理想的なものより優れています。
  • 巨大な貼り付けドキュメント(代わりに @imports を使う)、シークレット、実際には守らないルールは避けてください。
  • プロジェクトの進化に合わせて正確さを保つよう、定期的に見直してください。

インポート

ドキュメントを複製する代わりに既存のものを取り込みます——たとえばスタイルガイドを @path/to/file インポートで参照すれば、信頼できる情報源が一つになります。正確な構文は公式メモリドキュメントを参照してください。

Pro tip
  • 信頼できる情報源を一つに:内容を CLAUDE.md に貼り付けるのではなく、@imports でファイルを参照しましょう。
  • ドキュメントがすでに存在するなら、コピーせずリンクしましょう。コピーは古くなっていきます。

確認しよう

確認しよう

0/3
  1. Claude Code がプロジェクトの恒久的なブリーフィングとして毎回のセッション開始時に読むファイルはどれですか?
  2. プロジェクトで /init を実行すると何が起きますか?
  3. スタイルガイドのような大きな既存ドキュメントを取り込む推奨方法は何ですか?
Key takeaways
  • CLAUDE.md は最も効果の高い設定:今後すべてのセッションを一度に改善します。
  • メモリはグローバルから固有へとマージされる:エンタープライズポリシー、次にユーザー、プロジェクト、ネストされた CLAUDE.md ファイル。
  • /init で始め、ドラフトを実際に真実な内容まで削り落とす。
  • プロジェクトの概要、実行/テスト/リントのコマンド、規約、ガードレールを含める。
  • 短く真実に保つ——大きなドキュメントには @imports を使い、シークレットは決してコミットしない。

次へ