Claude Codeには「記憶(メモリ)」機能があり、プロジェクトの情報やコーディングルールをセッションを超えて記憶させることができます。この記事では、メモリ機能の仕組みと活用方法を解説します。
メモリ機能とは
基本的な仕組み
Claude Codeのメモリ機能は、CLAUDE.md ファイルを通じて実現されます。このファイルに書かれた情報は、毎回のセッションで自動的に読み込まれ、Claudeがプロジェクトの文脈を理解した状態で作業を開始できます。
メモリの種類
種類 | ファイル場所 | 適用範囲 |
|---|---|---|
グローバルメモリ |
| すべてのプロジェクト |
プロジェクトメモリ |
| 現在のプロジェクトのみ |
ディレクトリメモリ |
| サブディレクトリ |
CLAUDE.mdの作成
プロジェクトメモリの作成
# プロジェクトルートで
touch CLAUDE.md
または Claude Code 内で:
/memory
基本的な構造
# プロジェクト情報
このプロジェクトは〇〇するためのWebアプリケーションです。
## 技術スタック
- フロントエンド: Next.js 14, TypeScript
- スタイリング: Tailwind CSS
- バックエンド: Node.js, Express
- データベース: PostgreSQL
- ORM: Prisma
## プロジェクト構造
src/
├── components/ # UIコンポーネント
├── pages/ # ページコンポーネント
├── lib/ # ユーティリティ
├── hooks/ # カスタムフック
└── api/ # APIルート
## コーディング規約
- コンポーネントは関数コンポーネントで作成
- 型定義は必須
- コメントは日本語で記述
- テストはJestで作成
## 重要な注意事項
- APIキーは.envファイルで管理
- mainブランチへの直接プッシュ禁止
グローバルメモリの設定
グローバルCLAUDE.mdの作成
# グローバル設定ディレクトリに作成
mkdir -p ~/.claude
nano ~/.claude/CLAUDE.md
グローバルメモリの例
# 個人設定
## 基本情報
- 名前: 〇〇
- 主な使用言語: TypeScript, Python
- 好みのエディタ: VSCode
## コーディングスタイル
- インデント: スペース2つ
- 文字列: シングルクォート優先
- セミコロン: なし(TypeScript)
- コメント: 日本語
## よく使う技術
- フロントエンド: React, Next.js
- バックエンド: Node.js, FastAPI
- インフラ: Vercel, AWS
## デフォルトの振る舞い
- コードには適切なコメントを付ける
- エラーハンドリングを必ず実装
- TypeScriptでは厳密な型定義
メモリの追加と更新
/memoryコマンドで追加
Claude Code 内で:
/memory add "このプロジェクトではPrettierでフォーマットする"
直接ファイルを編集
# エディタで編集
nano CLAUDE.md
# または
code CLAUDE.md
Claude Codeに編集を依頼
CLAUDE.mdに以下を追加してください:
- テストカバレッジは80%以上を維持
- PRにはレビュワーを2人以上設定
メモリの優先順位
複数のCLAUDE.mdがある場合の優先順位:
優先順位の例
~/.claude/CLAUDE.md → "インデント: スペース2つ"
./CLAUDE.md → "インデント: スペース4つ"
./src/CLAUDE.md → 設定なし
結果: src/配下ではスペース4つ(プロジェクト設定が適用)
効果的なメモリの書き方
1. 具体的に書く
❌ 悪い例:
良いコードを書いてください。
✅ 良い例:
- 関数は単一責任の原則に従う
- 変数名は英語で、camelCaseで記述
- 1関数あたり30行以内を目安
2. 構造化する
## データベース操作
### 命名規則
- テーブル名: snake_case, 複数形(例: users, orders)
- カラム名: snake_case(例: created_at, user_id)
### 注意点
- 外部キーには必ずインデックスを設定
- 論理削除を使用(deleted_atカラム)
3. 禁止事項を明記
## 禁止事項
- `any`型の使用禁止
- console.logをコミットしない
- ハードコードされた秘密情報
- 無限ループの可能性があるコード
実践的な活用例
例1: Webアプリプロジェクト
# ECサイトプロジェクト
## 概要
Next.jsベースのECサイト。商品の閲覧、カート、決済機能を提供。
## 技術スタック
- Next.js 14 (App Router)
- TypeScript
- Prisma + PostgreSQL
- Stripe(決済)
- Tailwind CSS
## ディレクトリ構造
app/
├── (shop)/ # 顧客向けページ
├── (admin)/ # 管理画面
├── api/ # APIルート
└── components/ # 共通コンポーネント
## API設計
- RESTful API
- 認証: JWT(access token + refresh token)
- エラーレスポンス: { error: string, code: string }
## 注意事項
- 決済処理はStripe Webhookで処理
- 在庫チェックはトランザクション内で実行
例2: ライブラリ開発
# npmパッケージ開発
## 概要
日付操作のユーティリティライブラリ
## ビルド
- TypeScript → ESM + CJS 両対応
- バンドラー: tsup
- テスト: Vitest
## 公開前チェックリスト
- [ ] テストがすべてパス
- [ ] 型定義が正しくエクスポート
- [ ] CHANGELOGを更新
- [ ] バージョンをセマンティックに更新
## コーディング規約
- 依存関係は最小限に
- IE11非対応(ES2020以上を想定)
- Tree-shaking対応
例3: チーム開発
# チーム開発ガイドライン
## ブランチ戦略
- main: 本番環境
- develop: 開発環境
- feature/*: 機能開発
- fix/*: バグ修正
## コミットメッセージ
フォーマット: <type>: <description>
types:
- feat: 新機能
- fix: バグ修正
- docs: ドキュメント
- refactor: リファクタリング
- test: テスト
- chore: その他
## レビュー基準
- テストが書かれている
- 型エラーがない
- lint/formatが通っている
- 機能要件を満たしている
メモリのデバッグ
現在のメモリを確認
/memory show
メモリが読み込まれているか確認
現在認識しているプロジェクトの技術スタックを教えてください
メモリのリセット
/memory clear
よくある質問
Q: CLAUDE.mdはGitにコミットすべき?
A: プロジェクト固有の情報(技術スタック、コーディング規約など)はコミットすることをお勧めします。チームで共有することで、全員が同じ文脈で作業できます。ただし、個人的な設定はグローバルCLAUDE.mdに書きましょう。
Q: メモリの容量制限はありますか?
A: 明確な制限はありませんが、あまりに長いと処理に時間がかかる場合があります。必要な情報を簡潔にまとめることをお勧めします。
Q: 複数のプロジェクトで同じ設定を使いたい
A: グローバルCLAUDE.md(~/.claude/CLAUDE.md)に共通設定を書くことで、すべてのプロジェクトに適用されます。
Q: メモリとシステムプロンプトの違いは?
A: メモリ(CLAUDE.md)はプロジェクト固有の情報を保存するもので、システムプロンプトはClaude自体の振る舞いを定義するものです。通常の開発ではCLAUDE.mdを使用します。
Q: 機密情報を書いても大丈夫?
A: CLAUDE.mdはローカルファイルなので基本的には安全ですが、Gitにコミットする場合は機密情報(APIキー、パスワードなど)を含めないでください。
まとめ
Claude Codeのメモリ機能:
項目 | 内容 |
|---|---|
ファイル名 |
|
グローバル |
|
プロジェクト |
|
追加コマンド |
|
確認コマンド |
|
効果的な使い方:
- 技術スタックを明記: 使用言語、フレームワーク
- コーディング規約: 命名規則、スタイル
- プロジェクト構造: ディレクトリの役割
- 禁止事項: 避けるべきパターン
CLAUDE.mdを適切に設定することで、Claude Codeがプロジェクトの文脈を理解し、より適切なコード生成やアドバイスができるようになります。