CLAUDE.mdを書こう ─ AIに自分を覚えさせる方法

この記事の内容

  • CLAUDE.md はClaude Codeが毎回自動で読み込む「永続的な指示書」である
  • グローバル・プロジェクト・ローカルの3階層で使い分けができる
  • 書きすぎるとかえって効果が薄れるため、短く要点だけ書くことが鉄則
  • /init コマンドでプロジェクトの CLAUDE.md を自動生成できる
  • 詳細は別ファイルに切り出し、CLAUDE.md はポインター(目次)として使うと効果的

CLAUDE.mdとは何か

Claude Codeは何もしなくても十分に優秀で、ほとんどのリクエストに対応できます。ただし、使い続けていると「毎回同じことをお願いしているな」「いちいち説明しなくても分かっていてほしいな」と感じる場面が出てきます。そのような場合に活躍するのが CLAUDE.md というファイルです。

CLAUDE.md は、各セッションの開始時にClaude Codeが自動で読み込む永続的な指示書です。通常であれば毎回チャットの冒頭に入力が必要な内容を、このファイルに書いておくことで省略できます。

優秀な新入社員が入社したとき、何も言わなくても仕事はできますが「うちのプロジェクトはこのルールに従ってね」と教えておけばよりスムーズに動いてくれる、そのようなイメージです。


3階層の仕組み

CLAUDE.md は配置する場所によって、読み込まれるスコープが変わります。

グローバル

~/.claude/CLAUDE.md

ホームディレクトリ配下の .claude フォルダーに置くファイルです。Claude Codeをどこで起動しても必ず読み込まれます。全プロジェクト共通の設定、自分の好みやスタイル、応答のトーンなど「どこでやる時も変わらない自分らしさ」を書く場所です。

例として、「常に明るく、絵文字を多用して励ましながら応答してください」といった内容を書いておくと、Claude Codeがどこで起動されてもその雰囲気で返答してくれます。

プロジェクト(リポジトリ)

{}/CLAUDE.md

Claude Codeを起動したフォルダーに置くファイルです。そのプロジェクト固有のルール、使用している言語やフレームワーク、よく使うコマンドなどを書きます。チームで共有することを前提としており、全員のClaude Codeに同じ指示を与えることができます。

ローカル(個人設定)

{}/.claude/CLAUDE.md

プロジェクト内でさらに自分だけの設定を追加したい場合に使います。.gitignore に追加してチームには共有しないという使い方です。チーム開発をしていない場合はこの階層は不要です。


コンテキストへの影響を理解する

CLAUDE.md の内容はセッション開始時にコンテキストへ読み込まれます。つまり、人間が最初のメッセージを送る前の段階で、すでにClaude Codeへ渡されている状態です。

ここで重要な点があります。コンテキストは会話が進むにつれて「遠い過去の話」になっていきます。CLAUDE.md はセッション開始時に一度読み込まれるだけのため、会話が長くなると内容が忘れられていきます。

また、CLAUDE.md の内容が多いほどトークン消費量が増え、他の情報を押しのけてしまいます。実際に、小さな CLAUDE.md では数十トークンの消費だったものが、約1,000文字の内容を書くと583トークンにまで増えます。


少なく書いて多く制御する

CLAUDE.md で最も大切な鉄則は「短く書く」ことです。

あれもこれもと書いてしまうと、大事な指示が埋もれてしまいます。また、会話が長くなるにつれて忘れられやすくなるため、多く書けば書くほど全部は守ってもらえなくなります。

書くべきこと

  • 仕事の進め方のルール:大きい作業は計画を先に立ててから始めてください、など。Claude Codeの振る舞いそのものを変えるものが最も効果的です
  • 使っているツールやバージョン:どの言語・フレームワークを使っているか。バージョンが違うと誤った対応をされることがあるため、明示しておくと動きが良くなります
  • よく使うコマンド:プロジェクト固有のビルドコマンドやテストコマンドなど
  • プロジェクトの概要:フォルダー構成の役割など、知らないと誤った場所にファイルを作ってしまうような情報

書かない方がよいこと

  • Claude Codeがデフォルトで知っていること(わざわざ書く必要のない常識)
  • 細かすぎる指示(量が多すぎると他の指示も忘れられやすくなる)
  • 「間違えないでください」など、書いても効果が薄いこと

/init コマンドで自動生成する

既存のプロジェクトフォルダーで以下のコマンドを実行すると、Claude Codeがフォルダー内のファイルを調査し、CLAUDE.md を自動生成してくれます。

/init

例えばPowerShellのソースコードが入ったフォルダーで /init を実行すると、以下のような内容を自動で生成してくれます。

  • プロジェクトの概要(何のためのプロジェクトか)
  • ビルドコマンド(フルビルド・クイックリビルド・リリースビルドなど)
  • テストコマンド
  • ソースコードのレイアウト・アーキテクチャ

家計簿フォルダーや日記フォルダーでも同様に、そのフォルダーの内容を理解した上で適切な CLAUDE.md を作成してくれます。人間が手で書いても構いませんが、/init を使うことで初期の CLAUDE.md 生成を自動化できます。


動作確認:言語ごとのフォルダー設定

CLAUDE.md の効果を確認する分かりやすい例として、言語ごとに異なるフォルダーを作り、それぞれに異なる指示を書くデモがあります。

jecanhpCgCiCaLlLnLnAiAeAeUsUsUsDhDeDeEEE/...mmmddd

それぞれのフォルダーでClaude Codeを起動して「こんにちは」と入力すると、起動した場所の CLAUDE.md の指示に従って、日本語・英語・中国語それぞれで返答してくれます。

グローバルの CLAUDE.md(「絵文字を多用して励ましながら」)とプロジェクトの CLAUDE.md(「英語で応答」)が両方存在する場合は、両方が同時に読み込まれ、英語で絵文字を使った返答をしてくれます。コンテキストを確認すると、グローバルとプロジェクト両方のファイルが読み込まれていることを確認できます。


上級テクニック:ポインターで参照させる

CLAUDE.md を長くしたくないが、詳細な指示も与えたい。そのような場合に有効なのが「別ファイルへのポインター」パターンです。

例えば個人ブログを管理するフォルダーの場合、以下のような構成が効果的です。

CwddLreeAispUtilDigoEnny.g..m.mmdmddd

CLAUDE.md にはポインターだけを書きます。

# 行動原則
- 勝手に公開しないこと

# 参照先
- 記事を書く時は writing.md を読むこと
- デザインを変更する時は design.md を読むこと
- 記事を公開する時は deploy.md を読むこと

こうすることで、Claude Codeは記事を書く作業をする時だけ writing.md を読みに行き、デザインを変更する時だけ design.md を読みます。関係ないファイルはコンテキストに載せないため、トークンを節約しながら必要な時だけ最新の情報として取り込んでもらえます。

CLAUDE.md を目次として使い、詳細は別ファイルに切り出す。このパターンがおすすめの活用方法です。


CLAUDE.mdは「お願い事」である

重要な注意点として、CLAUDE.md に書いた内容は100%守られるわけではありません

  • 会話が長くなると遠い過去の話になり忘れられる
  • 会話中の直近の指示の方が優先されることが多い
  • 長い会話ではコンテキストの圧縮処理が走り、さらに薄れていく
  • 矛盾する指示を会話の中でしてしまうこともある

CLAUDE.md はあくまでお願い事であり、強制ではありません。書いておいたからといって過信せず、重要なことは会話の中で改めて伝えることも大切です。

絶対に守らせたいルールがある場合は、「フック」という別の仕組みを使う方法があります。これについては今後の回で解説が予定されています。


まとめ

  • CLAUDE.md はClaude Codeが毎セッション自動で読む指示書。毎回同じことを入力する手間を省けます
  • **3階層(グローバル・プロジェクト・ローカル)**で使い分けることで、全体共通の設定とプロジェクト固有の設定を分離できます
  • 短く書くことが鉄則。書きすぎると大事な指示が埋もれ、逆効果になります
  • 最も効果が高いのは「仕事の進め方のルール」。Claude Codeの振る舞いそのものを変える指示を優先して書きましょう
  • /init コマンドで自動生成できます。既存プロジェクトでの初回作成に活用できます
  • 詳細は別ファイルに書いてポインターで参照させると、コンテキストを節約しながら必要な時だけ読み込ませることができます
  • 100%守られるわけではないという前提で使い、絶対守らせたい場合はフックという仕組みを検討しましょう

まずは1行でも構いません。グローバルの CLAUDE.md に自分の好みを書いてみることから始めてみてください。