15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code入門 #2: CLAUDE.mdの書き方と育て方

15
Posted at

はじめに

CLAUDE.mdは、Claude Codeにプロジェクト固有の知識を教えるための「プロジェクトメモリファイル」です。このファイルを適切に設定すると、Claude Codeがあなたのプロジェクトの構造やルールを理解し、より的確な提案ができるようになります。

本記事は、Claude Codeの機能を体系的に解説する連載シリーズの第2回です。「CLAUDE.mdを作成して、プロジェクトに最適化されたClaude Code環境を構築する」 ことをゴールとしています。

対象読者

  • Claude Codeをインストール済みの方(第1回完了前提)
  • CLAUDE.mdの存在は知っているが使い方がわからない方
  • 自分のプロジェクトに最適化したい方

連載予定

CLAUDE.mdの役割と効果

プロジェクト固有の記憶ファイル

CLAUDE.mdは、Claude Codeにおけるプロジェクトメモリファイルです。AIエージェントが自律的に実装を行う際に、プロジェクト固有の情報やルールを参照するための設定ファイルとして機能します。

設定前の状態

  • 毎回プロジェクト構造を説明する必要がある
  • コーディング規約を繰り返し指摘する必要がある
  • Claude Codeが一般的な実装パターンを提案してしまう

設定後の状態

  • セッション開始時に自動的にプロジェクト情報が読み込まれる
  • プロジェクト固有のルールに従った提案がされる
  • 「AIのためのユーザーマニュアル」として機能する

セッション間での指示永続化

CLAUDE.mdに書いた内容は、すべてのセッションで自動的に読み込まれます。一度書けば、毎回説明する必要がなくなります。

: プロジェクトでTypeScript strictモードを使っている場合

CLAUDE.mdなし

あなた: 「この関数にany型が使われているので修正してください」
Claude: 「修正しました」
(次のセッション)
あなた: 「また any型が使われていますよ...」

CLAUDE.mdあり

# コーディング規約

- TypeScript strictモードを使用
- implicit anyは禁止(本番バグの原因になったため)

これだけで、Claude Codeは最初から型安全なコードを提案するようになります。

最速で始める: /initコマンド

/initの実行方法

新規プロジェクトでCLAUDE.mdを作成する際は、/initコマンドを使用するのが最速です。

cd your-project
claude

Claude Code起動後、プロンプトに以下を入力します。

/init

Claudeがプロジェクト構造を自動的に分析し、適切な初期設定を提案してくれます。

自動生成される内容

/initコマンドは以下の情報を自動的に検出して記述します。

検出項目 内容例
プロジェクトタイプ React, Next.js, Node.js, Python等
ディレクトリ構成 src/, components/, pages/等
技術スタック TypeScript, Tailwind CSS, Jest等
ビルドツール package.jsonから検出

Tips: 生成されたCLAUDE.mdをそのまま使わず、プロジェクト固有の「変わった部分」を追記してください。一般的な情報(「componentsフォルダにコンポーネントを置く」等)は不要です。Claudeはすでに知っています。

CLAUDE.mdに書くべき内容

効果的なCLAUDE.mdは、WHAT(何)WHY(なぜ)HOW(どうやって) の3つの視点で構成します。

WHAT: プロジェクト構造

プロジェクトの全体像を伝えます。

含めるべき内容

  • ディレクトリ構成と各ディレクトリの役割
  • 主要ファイルの説明
  • 技術スタック

## ディレクトリ構成

| ディレクトリ | 役割 |
|-------------|------|
| src/components/ | Reactコンポーネント(Atomic Design) |
| src/hooks/ | カスタムフック |
| src/api/ | API呼び出しロジック |
| src/types/ | TypeScript型定義 |

WHY: 設計原則と決定事項

プロジェクトの設計思想や、なぜそうしているのかを伝えます。

含めるべき内容

  • アーキテクチャ方針
  • 設計パターン
  • 技術的な決定とその理由

## 設計原則

- TypeScript strictモード: 本番バグがimplicit anyから発生したため厳格化
- Atomic Design: コンポーネントの再利用性を高めるため
- Custom Hooks: ビジネスロジックとUIを分離

Tips: 理由を書くことで、予期しない判断場面でもClaudeが適切に対応できます。「何」だけでなく「なぜ」を伝えることが重要です。

HOW: コマンド集

頻繁に使うコマンドを記述します。

含めるべき内容

  • ビルドコマンド
  • テスト実行方法
  • リントコマンド
  • デプロイ手順

## よく使うコマンド

| コマンド | 説明 |
|---------|------|
| `npm run dev` | 開発サーバー起動 |
| `npm test` | テスト実行 |
| `npm run lint` | ESLint実行 |
| `npm run build` | 本番ビルド |

主要セクションまとめ

セクション 内容
プロジェクト概要 何を作っているか Eコマースサイトのフロントエンド
ディレクトリ構成 フォルダ構造 src/, components/, pages/
技術スタック 使用技術 React, TypeScript, Tailwind
コーディング規約 ルール strictモード、2スペースインデント
コマンド集 よく使うコマンド npm run dev, npm test

避けるべき内容

内容 理由
秘密情報 APIキー、パスワード等は絶対に書かない
Linter指示 ESLint等の専用ツールで管理すべき
変更履歴 CHANGELOG.mdに分離する
詳細な実装説明 arch.md等のドキュメントに分離する
TODOリスト todo.md等に分離する

注意: CLAUDE.mdに秘密情報を書くと、セッション時にClaudeに送信されるため、情報漏洩のリスクがあります。絶対に書かないでください。

Global/Project/Localの使い分け

Claude Codeは3つのスコープでCLAUDE.mdを管理できます。

3層スコープの説明

スコープ ファイルパス 用途 Git管理
Global ~/.claude/CLAUDE.md 全プロジェクト共通の個人設定
Project ./CLAUDE.md プロジェクト固有の設定(チーム共有)
Local ./CLAUDE.local.md 個人的なプロジェクト設定 ✗ (.gitignore)

優先順位と上書きルール

設定の優先順位は以下の通りです(高 → 低)。

  1. Local./CLAUDE.local.md
  2. Project./CLAUDE.md
  3. Global~/.claude/CLAUDE.md

上位のファイルが下位のファイルの設定を上書きします。

使い分けガイドライン

Global (~/.claude/CLAUDE.md)

  • 全プロジェクトで共通のコーディングスタイル
  • 個人的な好み(コメントスタイル、変数命名等)
  • よく使うコマンドのエイリアス

# 個人設定

## コーディングスタイル
- 2スペースインデント
- シングルクォート優先
- セミコロン省略

## 言語設定
- 全ての応答は日本語で

Project (./CLAUDE.md)

  • プロジェクト固有の設計思想
  • チーム全体で共有したいルール
  • プロジェクトのディレクトリ構成

# プロジェクト設定

## 技術スタック
- React 18
- TypeScript 5
- Tailwind CSS

## アーキテクチャ
- Atomic Designを採用
- Custom Hooksでロジック分離

Local (./CLAUDE.local.md)

  • 自分だけが使う開発環境設定
  • ローカルのパス指定
  • チームに共有しない個人的なメモ

# ローカル設定

## 開発環境
- ローカルAPIサーバー: http://localhost:3001
- テスト用DBパス: /Users/yourname/testdb

CLAUDE.mdを「育てる」発想

60-300行の推奨範囲

Claude Codeの公式ガイドでは、CLAUDE.mdを60-300行以内に保つことが推奨されています。

理由

  • Claudeが確実に従える指示は150-200程度
  • システムプロンプトで約50を使用済み
  • 長すぎるとClaudeがランダムに指示を無視し始める
  • 大きすぎると見落としが発生する

Progressive Disclosure(段階的開示)

CLAUDE.mdが肥大化してきたら、.claude/rules/ディレクトリにルールファイルを分割できます。

基本構成

your-project/
├── CLAUDE.md              # メインの指示(60行以内)
└── .claude/
    └── rules/
        ├── code-style.md  # コードスタイル
        ├── testing.md     # テスト規約
        └── api-design.md  # API設計

動的ロードの仕組み

YAMLフロントマターでpathsを指定すると、特定ファイル操作時のみルールがロードされます。

---
paths: src/api/**/*.ts
---

# API開発ルール
- 全APIエンドポイントは入力検証必須
- 標準エラーレスポンス形式を使用

この設定により、src/api/配下のTypeScriptファイルを操作する時だけ、このルールがコンテキストに読み込まれます。

継続的改善: Claudeの失敗から学ぶ

CLAUDE.mdは「生きたドキュメント」として育てていきます。

改善のシグナル

  • 同じ訂正を2回したら、ファイルに追加すべきシグナル
  • Claudeが誤った提案をした場合、WHYを追記する
  • 新しいパターンを採用したら、すぐにCLAUDE.mdに反映

: Claudeが何度もグローバル変数を提案してきた場合

## コーディング規約

- グローバル変数は禁止
- 理由: 過去にグローバル変数が原因でバグが発生したため、すべて関数スコープまたはモジュールスコープで管理

Tips: #キーで指示を自動追加できます(Claude Code CLIの機能)。同じ訂正を繰り返したら、その場でCLAUDE.mdに追記しましょう。

注意: CLAUDE.mdが大きすぎるとClaudeが見落とします。60-300行を目安に、詳細はドキュメントに分離してください。

まとめ&次回予告

この記事でやったこと

  • CLAUDE.mdの役割を理解した
  • /initコマンドでCLAUDE.mdを生成した
  • WHAT/WHY/HOWの3つの視点で内容を記述した
  • Global/Project/Localの使い分けを理解した
  • 「育てる」発想を持った

チェックリスト

CLAUDE.mdを作成したら、以下をチェックしてください。

  • ファイルサイズは60-300行以内か
  • プロジェクト固有の「変わった部分」を記述したか
  • WHY(理由)を明記したか
  • 秘密情報は含まれていないか
  • よく使うコマンドを記載したか

コピペで使える完全テンプレート(TypeScript + React)

./CLAUDE.md

# プロジェクト概要

Eコマースサイトのフロントエンド。React + TypeScriptで実装。

> このファイルは変更ログとして使用しない。変更履歴はCHANGELOG.mdに記録すること。

## ディレクトリ構成

| ディレクトリ | 役割 |
|-------------|------|
| src/components/ | Reactコンポーネント(Atomic Design) |
| src/hooks/ | カスタムフック |
| src/api/ | API呼び出しロジック |
| src/types/ | TypeScript型定義 |
| src/utils/ | 汎用ユーティリティ |

## 技術スタック

- React 18
- TypeScript 5 (strictモード)
- Tailwind CSS
- Vite
- Vitest

## 設計原則

- TypeScript strictモード: 本番バグがimplicit anyから発生したため厳格化
- Atomic Design: Atoms, Molecules, Organisms, Templates, Pagesの5階層
- Custom Hooks: ビジネスロジックとUIを分離
- API層の分離: src/api/配下に集約し、コンポーネントから直接fetchしない

## コーディング規約

- 2スペースインデント
- シングルクォート優先
- セミコロン省略
- 関数コンポーネントはアロー関数で定義
- propsの型定義は必須

## よく使うコマンド

| コマンド | 説明 |
|---------|------|
| `npm run dev` | 開発サーバー起動 |
| `npm test` | テスト実行 |
| `npm run lint` | ESLint実行 |
| `npm run build` | 本番ビルド |

## 参考ドキュメント

- 詳細なアーキテクチャ: arch.md
- 変更履歴: CHANGELOG.md
- タスク管理: todo.md

次回予告

次回は「パーミッション&Sandbox完全ガイド」を解説します。Claude Codeの安全性を保ちつつ、効率的に操作を自動承認する方法を紹介します。

連載一覧

参考: Claude Code 公式ドキュメント

15
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?