Claude Code の環境設定4点セット:CLAUDE.md、Rules、Memory、Hooks をまとめて理解する

Claude Code を使い込むほど、なぜプロンプトより環境設定のほうが重要になるのか。この記事では CLAUDE.md、Rules、Memory、Hooks の4層をまとめて整理し、実用的な導入順も紹介します。

Claude Code をしばらく使っていると、すぐに気づくことがあります。モデルそのものが重要なのは当然ですが、どんな環境を与えるか、どんな境界を置くか、どんなルールを持たせるかも同じくらい重要だということです。

最初のうちは「今回の prompt をどう書くか」に意識が向きがちです。ですが、本当に Claude Code を使いこなすようになると、気になるのは別のことです。

  • それは自分が誰かを分かっているか
  • 自分がどう働くかを分かっているか
  • 破ってはいけないルールを分かっているか
  • 先に確認すべきことを分かっているか
  • そうした境界を長期的に覚えていられるか

Claude Code が成熟したツールになる理由は、単にモデルが強いからではありません。こうした働き方を仕組みとして定着させる一式があるからです。大きく分けると、その中核は次の4層です。

  • CLAUDE.md
  • Rules
  • Memory
  • Hooks

この記事では、この4つをまとめて整理します。

なぜ単発のプロンプトより環境設定のほうが重要なのか

Claude Code を、雇ったアシスタントだと考えてみてください。

初日に「何か手伝って」と一言だけ伝えることはないはずです。普通は説明書を渡して、次のようなことを伝えます。

  • 自分はどんな立場なのか
  • どんなコミュニケーションのトーンを好むのか
  • どんな操作は必ず事前確認が必要か
  • 以前起きたどんなミスを今後は避けたいか
  • 重要な文書がどこにあるか

だからこそ、長い目で見ると、環境設定は単発の prompt より重要になりやすいのです。

prompt が解決するのは「今回は何をするか」です。環境設定が解決するのは「これから毎回どう働くか」です。

第1層:CLAUDE.md

まず一番基本から始めます。CLAUDE.md は本質的にはただのテキストファイルです。

そこには Claude への説明を書けます。たとえば:

  • 自分が誰か
  • 何に取り組んでいるか
  • どんなコミュニケーションを好むか
  • 守るべきルール
  • 現在のプロジェクトの特殊事情
  • 重要な文書やディレクトリの場所

Claude Code が起動するたびに、この文書は自動的にコンテキストに入るので、モデルは必ず目を通します。

私はこれを「共有された暗黙知のファイル」だと考えることが多いです。実際、それがあなたとモデルの長期協業における前提になるからです。

CLAUDE.md に書くのに向いていること

CLAUDE.md に最も向いているのは、おおむね次のような内容です。

  • 身元や仕事上の背景
  • 話し方や出力の好み
  • グローバルな行動ルール
  • よく参照する重要なプロジェクト背景
  • よくあるミスとその防ぎ方

たとえば:

  • 自分のタイムゾーン
  • モデルによるメールやメッセージの直接送信を許可するか
  • どの操作が不可逆か
  • 文書やファイルの扱い方の癖
  • セキュリティ方針や機密情報の境界

とても大事な原則:できるだけ簡潔にする

CLAUDE.md には非常に大事な原則があります。それは、できるだけ簡潔に保つことです。

理由は単純で、毎回コンテキストに強制的に入るからです。

長くなりすぎると、大量のコンテキストを消費してしまい、本当に重要な情報が薄まります。モデルが読まないのではなく、注意が分散し、最も重要なルールを取りこぼしやすくなるのです。

公式の目安としては、400 行を超えないほうがよいと言われることが多いです。

私自身はもう少し保守的で、できるだけ 200 行以内に収めるようにしています。

CLAUDE.md のよくあるスコープ

CLAUDE.md には実際には複数の配置レベルがあり、そのレベルによって効く範囲が変わります。最もよく使うのは次の2つです。

1. User Level

これはグローバルレベルです。

ローカル環境に置かれ、そのマシン上で扱うすべてのプロジェクトに効きます。

ここに向いているのは:

  • 自分の基本情報
  • 汎用的なコミュニケーションの好み
  • プロジェクトをまたいで通用する作業習慣
  • グローバルな安全ルール

たとえば、あなたのタイムゾーンが一般的に想定されがちなものではなく、バンコク時間であるなら、それは user level に置くのが自然です。そうすれば、後で日時を扱うときのミスが減ります。

2. Project Level

こちらはプロジェクトレベルです。

特定のプロジェクトディレクトリの下に置かれ、そのプロジェクトにだけ効きます。

ここに向いているのは:

  • プロジェクト固有の背景
  • そのプロジェクトでしか成立しないルール
  • ディレクトリ構成の説明
  • 重要文書の入口

たとえば、あるプロジェクトが財務を扱い、別のプロジェクトが人事を扱うなら、背景も制約も違うので、同じグローバル説明に混ぜるべきではありません。

どのレベルに置くかをどう判断するか

判断基準はシンプルです。

別のプロジェクトに移っても成立するなら user level に置く。

プロジェクトを変えた瞬間に成立しなくなるなら project level に置く。

最初の版をどう書き始めるか

よくある始め方は2つあります。

1. /init を使う

ターミナルで /init を実行して、Claude に現在のプロジェクトをスキャンさせ、基礎的な CLAUDE.md を自動生成してもらう方法です。

2. Claude に整理してもらう

他の人がどう CLAUDE.md を書いているかを Claude に調べてもらい、自分の状況に合わせて質問してもらった上で、最終的に自分向けの版に整理してもらうこともできます。

多くの場合、ゼロから自分で書くよりずっと楽です。

とても実用的な習慣

長く協業していると、「これは今後も必ず覚えておくべきだ」「これは二度と繰り返してほしくない」と思うことが出てきます。そういう内容は、そのまま CLAUDE.md に書き足していくと便利です。

ただし、その前に考えるべきことがあります。

  • それはグローバルルールか
  • それとも今のプロジェクト専用のルールか

何でも1つのファイルに詰め込まないことが大切です。

第2層:Rules

次が Rules です。

CLAUDE.md との最大の違いは、ファイル形式ではなくロードの仕方です。

CLAUDE.md は何をしていても常に読まれます。

一方、Rules の強みは 条件付きで読み込める ことです。

つまり、特定のパス、ファイル、ツール、場面でだけ、そのルールを読ませることができます。

なぜ条件付きロードが重要なのか

コンテキスト空間は常に限られています。

すべてのルールを無差別に毎回押し込むと、次の2つが起きます。

  • モデルの負担が増える
  • 本当に重要なルールが埋もれる

必要なときに必要な情報だけ読ませる。これが条件付きロードの価値です。

CLAUDE.md から Rules に移すべきタイミング

典型的には2つあります。

1. CLAUDE.md が長くなりすぎたとき

CLAUDE.md200 行を超え始め、ルールが増えすぎて重要な内容が薄まってきたら、一部を切り出すタイミングです。

2. 特定のルールが特定のパスにしか関係しないとき

たとえば、あるルールが:

  • Python スクリプトにだけ有効
  • hooks ディレクトリにだけ有効
  • 特定のサブプロジェクトにだけ有効

のように、適用対象が明確なら、それは Rules に移したほうが自然です。

Rules が最も向いている場面

典型的なのは「特定状況・特定パス・特定ファイル種別」です。

たとえば:

  • hook ファイルにだけ適用したい規約
  • 特定種類のスクリプトだけで守らせたいコーディング規則
  • 特定ディレクトリだけで有効な作業方針

そうした内容を CLAUDE.md に入れ続けるのは、あまり効率的ではありません。

第3層:Memory

3つ目の層が Memory です。

これも CLAUDE.mdRules と同じくコンテキストに入りますが、本質的な違いがあります。

CLAUDE.md はあなたが意図的に定義するものです。

Memory は、協業の中で Claude が自分用に残すメモに近いものです。

Memory に入るもの

Claude が「これは覚えておく価値がある」「しばらく保持したほうがよい」と判断した内容は Memory に入ります。

たとえば:

  • あなたが修正したやり方
  • 最近追加された好み
  • 現在のプロジェクトの一時的な状態
  • 今日終わらず、明日続きが必要なこと
  • 最近誰と協業しているか
  • 最近出てきた個人的な情報や文脈

つまり、Memory は長期制度というより、動的な知識に近いのです。

最初の2層との違い

簡単に分けるなら:

  • CLAUDE.md / Rules:長期的、制度的、明示的なルール
  • Memory:一時的、動的、作業の中で新しく得た理解

ここ数日しか有効でないことや、状態が継続的に変わることなら、長期ルールではなく Memory に向いています。

Memory は手動でも書ける

Memory は自動整理されることがありますが、こちらから明示的に指示して書かせることもできます。

たとえば:

  • 明日やることを覚えておいて
  • 誰の状況を追う必要があるか覚えておいて
  • 今月のプロジェクトの重要な節目を覚えておいて

といった内容です。

また、/memory コマンドで現在の記憶を確認し、手動で編集・削除することもできます。

ただ、私自身はあまり頻繁に手で管理しません。Claude 側でも古くなった記憶を定期的に整理できるからです。

第4層:Hooks

最後であり、最も重要かつ上級なのが Hooks です。

ここまでの CLAUDE.mdRulesMemory は、いずれも最終的には自然言語の指示です。

ルールを書けば、モデルはたいてい従います。ですが、それでも「解釈してから実行する」ものです。

自然言語にとどまる限り、いくつかの問題が残ります。

  • ときどき見落とす
  • ルールが増えると注意が分散する
  • 状況によっては、そのルールを重要でないと自己判断する

これは書き方が悪いのではなく、自然言語ルールが 100% 強制にはなりにくいという性質によるものです。

Hooks の本質

Hooks は自然言語の説明ではありません。スクリプトです。

イベントで発火する、プログラムレベルの強制ロジックです。

あるイベントが起きれば、そのロジックは必ず実行されます。モデルの判断で飛ばされることはありません。

これが Hooks の最大の価値です。

「守るべき」から「必ず実行される」へ変えることです。

どんなときに Hooks に上げるべきか

もし、あるルールをすでに CLAUDE.mdRules に書いてあるのに、Claude がときどき守り損ねる。そして、その見落としのコストが高い。そういう場合は Hooks に上げるべきです。

要するに:

  • 低リスクならルール
  • 高リスクなら Hooks

典型的な Hooks の場面

最も典型的なのは、絶対にミスしてほしくない操作です。たとえば:

  • メール送信前の確認
  • Slack、Outlook、Gmail 送信前の確認
  • 危険なファイル削除の遮断
  • パスワードや API Key の外部送信のブロック

こうした内容が自然言語ルールだけだと、いつか忙しいタイミングでミスが起きる可能性があります。

でも Hooks にしておけば、イベント発生時に必ず止められます。

これは本当の意味でのプログラム的な安全柵です。

Hooks のよくあるトリガー地点

Hooks はさまざまな段階に設定できます。たとえば:

  • 会話開始時にリマインドを入れる
  • ツール実行前に条件を確認する
  • ツール実行後に結果を検証する

専門用語を全部知っている必要はありません。

多くの場合、「こういう要件がある」「これを hook にすべきか」と明確に説明できれば、Claude が一緒に設計してくれます。

また、/hook コマンドで現在設定されている hooks を確認することもできます。

より実用的な導入順

この4層をつなげて運用するなら、私なら次の順番を勧めます。

ステップ1:まず /init で基本版 CLAUDE.md を作る

最初から完璧なルール文書を手書きしようとしないことです。

まずは Claude にプロジェクトを見てもらい、たたき台を作ってもらって、そこから育てていくのが自然です。

ステップ2:使いながら足していく

協業の中で、

  • 今後も必ず覚えてほしい
  • このミスは二度と起こしてほしくない
  • この好みは毎回効いてほしい

というものが見つかったら、CLAUDE.md に追加していきます。

ステップ3:CLAUDE.md が長くなったら Rules に分ける

CLAUDE.md がどんどん長くなり、すべてのルールが安定して効かなくなってきたら分割します。

  • 何がグローバルルールか
  • 何が特定パス専用か

後者を Rules に移し、条件付きロードにします。

ステップ4:高リスクなものを Hooks に上げる

書いてあるのにまだ漏れる。そして漏れると危険。そういうものは自然言語のままにせず、Hooks に上げます。

つまり「リマインド」を「強制実行」に変えるわけです。

ステップ5:一時状態は Memory に任せる

期限があるもの、変化するもの、長期制度ではないものは、何でも CLAUDE.md に入れないことです。

たとえば:

  • 現在のプロジェクト進捗
  • 最近の協業相手
  • 最近増えた好み
  • 直近の計画や ToDo

こうしたものは Memory に持たせたほうが、コンテキストもすっきりし、モデルの挙動も安定しやすくなります。

4層それぞれに何を入れるか

手早く覚えるなら、次の整理で十分です。

  • CLAUDE.md:長期的な共通認識、グローバルな説明、プロジェクトの基礎背景
  • Rules:パスや場面ごとに読み込む専門ルール
  • Memory:動的な知識、一時状態、最近学んだこと
  • Hooks:高リスク操作をプログラム的に強制制御する層

まとめ

Claude Code を「コードを書けるチャット画面」として使う人は多いですが、深く使うほど、それは長期協業のための知的な作業台に近いと分かってきます。

重要なのは毎回の指示文だけではありません。安定していて、分かりやすく、積み重ねていける環境を与えられているかどうかです。

この4層、

  • CLAUDE.md
  • Rules
  • Memory
  • Hooks

をきちんと組めるようになると、あなたとモデルの協業品質はかなり大きく上がります。

毎回ゼロから「自分が誰で、どう働いて、何をしてはいけないか」を説明し直す必要がなくなり、それらが環境の一部として定着するからです。

それこそが、強いモデルを本当に成熟した道具として使うための重要な一歩です。

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。