オープニング — 困った話から始めます
「ねえ Claude、また同じこと言わせる気?」
こんな経験ありませんか?
- 「
.envは暗号化して」と毎回伝える羽目に - 書籍執筆を頼むと、なぜか常体で書いてくる(敬体って言ったのに)
- マーケ資料を頼むと、既存版を無視して新規作成する
- レポートのデザインが毎回派手すぎる
問題:Claude Code は新入社員と同じ。教えないと知らない。
でも、毎回口頭で教えるのは時間の無駄ですよね。今日は、Claude に「うちのやり方」を永続的に教える4つの方法を紹介します。
第1章CLAUDE.md = 社則
🏢 たとえ話
新入社員が出社しました。あなたは毎朝こう言わなきゃいけないでしょうか?
「服装はオフィスカジュアルで」
「重要書類はキャビネット A に」
「お客様には敬語で」
いいえ。 入社初日に社則を渡せばいい。社員は毎朝それを読んでから仕事を始めます。
→ Claude にとっての社則が CLAUDE.md です。
🎯 何ができる
プロジェクト直下に置いた CLAUDE.md ファイルを、Claude は毎セッション最初に必ず読みます。そこに書かれたルールを前提として動き始めます。
📝 ビフォー・アフター
あなた:「業務委託契約書を作って」
Claude:「了解です」→ 表記ゆれ多発、金額が「$10,000」とドル表記、固有名詞バラバラ
CLAUDE.md にルールを書いておく。
同じ依頼でも自動的にルール準拠の書類を出してくる ✨
たとえばこう書いておく:
## 契約書作成ルール
- 当事者の表記: 株式会社AIVEST(甲)、相手方(乙)
- 金額表記: ¥10,000,000 形式(カンマ区切り、日本円のみ)
- 期間表記: 2026年4月1日〜2027年3月31日 形式
- 印紙税の必要性を末尾に明記
CLAUDE.md は「お願い」であって「強制」ではありません。
公式:"Claude reads it and tries to follow it, but there's no guarantee of strict compliance"
大事なルールは「短く・具体的に」。曖昧な指示は守られません。
「ファイルはちゃんと整理する」
「投資リサーチは 02_投資リサーチ/ に置く」
- 「毎回同じこと言ってるな」と気づいたら CLAUDE.md に書く
- 200行を超えそうになったら → Rules(第3章)に分割
- 「絶対守らせたい」ものは → Hooks(第4章)
第2章Memory = 新人が勝手に取る メモ帳
📔 たとえ話
CLAUDE.md はあなたが書く社則。でも新人って、自分でメモを取るじゃないですか。新人が会話しながらこんなメモを書いています:
📒 ユーザーメモ
・HTML レポートは Notion 風が好み(→ 派手なやつ作ったら嫌そうな顔された)
・.envは dotenvx 暗号化が必須(→ 何度か注意された)
・月次レビューは毎月5日
これが Auto Memory(自動メモ) です。
🎯 何ができる
Claude が勝手に「この人、これ大事そう」と思ったことをファイルに書き溜めます。あなたは何もしなくていい。
🗂️ 場所
~/.claude/projects/<プロジェクトパス>/memory/
├── MEMORY.md ← 目次(毎セッション最初に読む)
├── user_xxx.md ← ユーザープロフィール
├── feedback_xxx.md ← フィードバック・好み
├── project_xxx.md ← プロジェクト状況
└── reference_xxx.md ← 外部リソースの場所
📊 実例:実際に勝手に溜まっているもの
実プロジェクトのメモ目次(抜粋):
# MEMORY.md(目次・抜粋・サンプル)
## 会社・ユーザー
- ユーザー:株式会社 XYZ 代表、SaaS 事業、年商◯億目標
## プロジェクト
- 市場リサーチ完了(YYYY/MM/DD)
- 提携先向けセミナー実施(MM/DD)
- 社内チャットボットの Docker 化完了
## フィードバック
- HTML レポートは Notion / Stripe 風ホワイトベース
- .env は必ず dotenvx で暗号化
- 該当スキル / エージェントがある作業は必ずそれを使う
→ これらは意識的に書いたわけじゃなく、Claude が「これは覚えとこう」と判断して自動保存したもの。
📝 ビフォー・アフター
月:「Notion風で」
火:「Notion風で」
水:「Notion風で」
金:「Notion風で(4回目)」
月:「Notion風で」 → Claude が自動でメモ
火曜以降:何も言わなくても Notion 風 ✨
🎤 「これ覚えて」と明示的に頼むこともできる
あなた: 毎月5日10時に月次レビューやるからね、覚えといて
Claude: project memory に保存しました
🆚 CLAUDE.md との違い
| CLAUDE.md | Memory | |
|---|---|---|
| 誰が書く? | あなた | Claude が勝手に |
| 中身 | ルール・指示 | 学んだ事実・好み |
| 編集 | 自分でファイルを開いて | /memory コマンドで管理 |
保存先は自分の Mac のローカルファイル。クラウドには行きません。中身も普通の .md なので開いて確認・編集・削除可能です。
- Memory は何もしなくても勝手に育つ
- でも定期的に中身を見て、古いメモは消す
- 「これ覚えて」と明示的に頼むと確実に保存される
/memoryコマンドで一覧と編集ができる
第3章Rules = 場面別マニュアル
📚 たとえ話
社則(CLAUDE.md)はだんだん肥大化してきます:
服装規定/経理処理ルール/営業時の電話応対/契約書の書式/
議事録テンプレ/コーディング規約(Python編)/コーディング規約(React編)/…
毎朝これ全部読ませるの、効率悪くないですか?
→「営業の日は営業マニュアルだけ」「経理の日は経理マニュアルだけ」と分けたい。それが Rules(.claude/rules/) です。
🎯 何ができる
社則をトピック別ファイルに分解:
.claude/rules/
├── 営業時のルール.md
├── 経理処理ルール.md
├── 契約書作成ルール.md
└── ...
各ファイルに「いつ読むか」を指定できる:
---
paths:
- "**/契約書/**" # 契約書フォルダを開いた時だけ読む
---
# 契約書作成ルール
- 当事者表記: 株式会社AIVEST(甲)...
📊 実例:プロジェクト全体を Rules 化
巨大な CLAUDE.md 1個 → 肥大化、トークン無駄
トピック別 6ファイル → 関係ないルールはロードされない
.claude/rules/
├── universal.md # 全部に常時適用(dotenvx等)
├── app-development.md # 01_APP/ のコード触る時のみ
├── knowledge-research.md # ナレッジ作業時のみ
├── marketing-funnel.md # マーケ作業時のみ
├── deployment-cf.md # 仕様書をデプロイする時のみ
└── company-confidential.md # 会社管理作業時のみ
📝 1ファイル丸ごと例
.claude/rules/marketing-funnel.md の中身:
---
paths:
- "02_Workspace/03_マーケティング/**"
---
# マーケ・ファネル作業ルール
## 共有リポジトリ確認(着手前 必須)
着手前に必ず最新確認:
gh api repos/<your-org>/<your-repo>/contents/<path>
## ファネル設計の標準フォーマット
1. アバター(ペルソナ詳細)
2. ペイン(顧客の現状の痛み)
3. 解決策(AIVEST のサービス)
4. 証拠(実績・数値・お客様の声)
5. CTA(次のアクション)
## コピーライティング
- 「機会損失」訴求より「現状の痛み」訴求を優先
- 数値は具体的に(「効率化」ではなく「月20時間削減」)
→ マーケ作業の時だけ Claude はこれを読む。アプリ開発の時は読まない。
🆚 CLAUDE.md との違い
| CLAUDE.md | Rules | |
|---|---|---|
| 構造 | 1ファイル | トピック別の複数ファイル |
| いつ読まれる? | 必ず毎回 | 該当ファイルを触った時だけ |
| 粒度 | 粗い | 細かい(パスパターン単位) |
| 公式推奨 | 200行まで | 超えたらこれに移行 |
- CLAUDE.md が肥大化したら Rules に分割
- 「このタスクの時だけ」というルールは Rules 向き
paths:で絞ると、関係ないトークンを節約できる- でも結局これも「お願い」レベル(強制ではない)
第4章Hooks = 自動安全装置
🚨 たとえ話
ここまでの3つは全部「お願い」でした。新人がうっかりミスしたら? ルール書いても忘れたら?
お願いベースじゃなく、物理的に止めたい場面ありますよね:
🔒 金庫の前に自動センサーを設置:
・誰かが手を伸ばすと → アラーム
・鍵の組合せが間違ってると → ロック解除しない
・5時を過ぎると → 自動施錠
これが Hooks です。
🎯 何ができる
決まったタイミングでシェルコマンドを自動実行します。
| イベント | いつ発動? |
|---|---|
SessionStart | Claude 起動時 |
PreToolUse | Claude がツールを使う直前(ブロック可能) |
PostToolUse | Claude がツールを使った直後 |
Stop | Claude が返答完了した瞬間 |
SessionEnd | Claude 終了時 |
これは Claude 本体ではなく、Claude Code の土台が実行する。Claude の気分で発動しない=確実。
📝 デモ1: 「.env をコミット」を物理的にブロック
シナリオ:あなた「変更をコミットして」 → Claude(うっかり)git add .env… ここで止めたい。
~/.claude/hooks/block-env-commit.sh:
#!/usr/bin/env bash
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // ""')
if echo "$COMMAND" | grep -qE 'git (add|commit|push).*\.env\b'; then
echo "🚫 BLOCKED: .env を git 操作しようとしています"
echo " → dotenvx で暗号化してから .envx をコミットしてください"
exit 2 # exit 2 で Claude を物理ブロック
fi
exit 0
~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "/Users/ren/.claude/hooks/block-env-commit.sh"
}]
}]
}
}
結果:Claude が git add .env を実行しようとした瞬間に、コマンドが実行されず止まる ✅
📝 デモ2: 朝のステータス自動表示
~/.claude/hooks/session-start.sh:
#!/usr/bin/env bash
echo ""
echo "📅 $(date '+%Y-%m-%d (%a)')"
# 未処理 Zoom 録画
ZOOM_COUNT=$(ls ~/Documents/Zoom/*.m4a 2>/dev/null | wc -l | tr -d ' ')
[ "$ZOOM_COUNT" -gt 0 ] && echo "🎬 未処理 Zoom: ${ZOOM_COUNT} 件"
# メインリポジトリ最新コミット
LAST=$(gh api repos/<your-org>/<your-repo>/commits/main --jq '.commit.message' 2>/dev/null | head -1)
[ -n "$LAST" ] && echo "📝 repo: $LAST"
結果:claude 起動した瞬間に:
📅 2026-05-06 (Wed)
🎬 未処理 Zoom: 3 件
📝 repo: feat: ファネル v3 を追加
🆚 違いの整理
| CLAUDE.md / Rules | Hooks | |
|---|---|---|
| 性質 | お願い | 強制実行 |
| 守らない可能性 | あり | 無し |
| 用途 | スタイル・流儀 | セキュリティ・自動化 |
| 記述場所 | .md ファイル | settings.json + シェルスクリプト |
- お願いで済むことは CLAUDE.md / Rules
- 絶対守らせたいことは Hooks
- 自動化(朝の起動メッセージ等)も Hooks
exit 2でブロック、exit 0で通過
全体マップ — どれを使うか1秒で判断
勉強会後にやってほしい3ステップ
① 自分の CLAUDE.md を開く(5分)
open ~/.claude/CLAUDE.md
# なければ作る
touch ~/.claude/CLAUDE.md && open ~/.claude/CLAUDE.md
個人の好みを3つ書く(フォント、文体、レポート形式など)。
② 自分の Memory を覗く(5分)
ls ~/.claude/projects/
Claude が勝手に書いたメモを見て驚いてください。
③ 1個だけ Hook を入れる(10分)
.env コミット阻止 Hook が一番リスク削減効果大。
# 1. ディレクトリ作成
mkdir -p ~/.claude/hooks
# 2. スクリプト作成
cat > ~/.claude/hooks/block-env-commit.sh <<'EOF'
#!/usr/bin/env bash
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // ""')
if echo "$COMMAND" | grep -qE 'git (add|commit|push).*\.env\b'; then
echo "🚫 BLOCKED: .env を git 操作しようとしています"
exit 2
fi
exit 0
EOF
# 3. 実行権限付与
chmod +x ~/.claude/hooks/block-env-commit.sh
# 4. settings.json の hooks セクションに登録
想定 Q&A
Q1. CLAUDE.md と Rules、結局どっち使えばいいの?
200行までなら CLAUDE.md。超えたら Rules に分割。シンプル。
Q2. Memory って勝手に何でも保存される?セキュリティ大丈夫?
自分の Mac のローカルファイル。クラウドには行きません。中身も普通の md なので開いて確認・削除可能です。
Q3. Hooks 設定したらやばいことになりそう…
Hook スクリプトは自分で書いたシェルコマンドが動くだけ。最悪は exit 0 にして無効化すれば OK。最初は安全な SessionStart から始めるのがおすすめ。
Q4. これ全部 Cursor とか他の AI ツールでもできる?
Cursor は .cursorrules で似たことができますが、Hooks のような強制実行・Memory の自動学習は Claude Code 独自の強みです。
Q5. チームで共有できる?
CLAUDE.md / Rules は git コミット可(チーム共有 OK)。Memory は個人ローカル。Hooks は settings.json でリポジトリにコミット可能。
Q6. 既存のプロジェクトにあとから入れられる?
はい。CLAUDE.md を後から追加しても OK。既存コードに影響なし。
Q7. トークン消費が増える?お金かかる?
CLAUDE.md / Rules は毎回読まれるのでトークンを使います。ただし「200行ルール」を守れば誤差レベル。Memory は目次200行だけ読まれるので軽い。Hooks はトークン消費ゼロ(シェル実行のみ)。
参考資料
公式ドキュメント
- Claude Code Overview
- Memory(CLAUDE.md / Auto Memory / Rules)
- Hooks reference
- Skills
- Settings reference
- .claude ディレクトリ全体
まとめ
| 機能 | たとえ | 性質 | 用途 |
|---|---|---|---|
| CLAUDE.md | 社則 | お願い(毎回読む) | プロジェクト基本ルール |
| Memory | 新人のメモ帳 | Claude が自動で書く | 学習・好み・履歴 |
| Rules | 場面別マニュアル | お願い(条件付き) | トピック別ルール |
| Hooks | 自動センサー | 強制実行 | セキュリティ・自動化 |
.env コミット阻止 Hook を入れる(10分)。セキュリティ事故を物理的に防げます。