第 5 章

CLAUDE.md とカスタマイズ

Claude Code はプロジェクトに置いた CLAUDE.md ファイルを読み込み、 プロジェクト固有のルール・コーディング規約・禁止事項を理解したうえで作業します。 この章では CLAUDE.md の書き方と各種設定のカスタマイズ方法を学びます。

5.1 CLAUDE.md とは

CLAUDE.md は、Claude Code に対するプロジェクト固有の指示書です。 毎回の会話でゼロから説明しなくても、このファイルに書いておくことで Claude が常にプロジェクトのルールを把握した状態で作業を始められます。

📏

コーディング規約

インデント・命名規則・コメントスタイルなどチームの規約を記述

🏗️

アーキテクチャ情報

ディレクトリ構成・主要ファイルの役割・設計方針

🚫

禁止事項

使ってはいけないライブラリ・変更してはいけないファイル

🔧

開発コマンド

ビルド・テスト・起動コマンドをまとめて記載

💡
CLAUDE.md はチームで共有できる CLAUDE.md をリポジトリにコミットしておくと、チーム全員が同じルールで Claude Code を使えます。新メンバーのオンボーディングにも役立ちます。

5.2 ファイルの配置場所

CLAUDE.md は複数の場所に置けます。それぞれ読み込まれる範囲が異なります。

配置場所適用範囲用途
~/.claude/CLAUDE.md 全プロジェクト共通 自分の好みや共通ルール(例:日本語で答えて)
./CLAUDE.md(プロジェクトルート) そのプロジェクト全体 プロジェクトのルール・構成・コマンド
./src/CLAUDE.md(サブディレクトリ) そのディレクトリ以下 特定モジュールだけの詳細なルール
ℹ️
複数の CLAUDE.md は自動でマージされる グローバル・プロジェクトルート・サブディレクトリの CLAUDE.md が全て読み込まれ、 それぞれのスコープで適用されます。

5.3 CLAUDE.md の書き方

CLAUDE.md は通常の Markdown で書きます。 見出しとリストを使って、Claude が素早く情報を参照できる構造にするのがポイントです。

基本的な構成

CLAUDE.md — 基本テンプレート
# プロジェクト概要

(プロジェクトの目的・技術スタックを簡潔に)

## 開発コマンド

```bash
npm run dev      # 開発サーバー起動
npm test         # テスト実行
npm run build    # 本番ビルド
npm run lint     # リント
```

## ディレクトリ構成

src/
  components/   # React コンポーネント
  routes/       # API ルート定義
  models/       # DB モデル
  utils/        # 共通ユーティリティ

## コーディング規約

- インデント:スペース 2 つ
- 文字列:シングルクォート
- セミコロン:不要
- 命名:変数・関数は camelCase、コンポーネントは PascalCase

## 禁止事項

- `moment.js` は使わない。代わりに `date-fns` を使う
- `config/secrets.js` は絶対に編集しない
- console.log を本番コードに残さない

5.4 実践的な記述例

フロントエンドプロジェクト(React + TypeScript)

CLAUDE.md(React プロジェクト例)
# My App — React + TypeScript プロジェクト

EC サイトのフロントエンド。React 18 + TypeScript + Vite。
状態管理は Zustand、スタイルは Tailwind CSS を使用。

## 開発コマンド

```bash
npm run dev      # Vite 開発サーバー (localhost:5173)
npm test         # Vitest でテスト実行
npm run build    # 本番ビルド (dist/ に出力)
npm run typecheck  # TypeScript の型チェック
```

## 重要なルール

- コンポーネントは `src/components/` に置く
- ページコンポーネントは `src/pages/`
- 型定義は必ず明示する。`any` は使わない
- Props の型は interface で定義(type alias 不可)
- テストファイルは `*.test.tsx` の形式でコンポーネントと同じ場所に置く

## 禁止

- `src/store/auth.ts` は直接編集しない(認証は `useAuth` hook 経由で)
- class コンポーネントは使わない(関数コンポーネントのみ)

バックエンドプロジェクト(Node.js + Express)

CLAUDE.md(Express API プロジェクト例)
# API Server — Node.js + Express + PostgreSQL

REST API サーバー。認証は JWT。ORM は Prisma。

## 開発コマンド

```bash
npm run dev            # nodemon で起動
npm test               # Jest でテスト
npx prisma migrate dev # DB マイグレーション実行
npx prisma studio      # DB の GUI 確認
```

## ルーティング規則

GET    /api/resources        # 一覧取得
GET    /api/resources/:id    # 1件取得
POST   /api/resources        # 新規作成
PUT    /api/resources/:id    # 更新
DELETE /api/resources/:id    # 削除

## エラーレスポンス形式

```json
{ "error": "エラーメッセージ", "code": "ERROR_CODE" }
```

## 注意事項

- DB アクセスは必ず `src/services/` 経由で行う(routes から直接 Prisma を使わない)
- 環境変数は `src/config/env.ts` から読む(`process.env` を直接使わない)

5.5 settings.json の設定

.claude/settings.json(プロジェクト用)または ~/.claude/settings.json(グローバル用)で細かな動作を制御できます。

.claude/settings.json — 主な設定項目
{
  // デフォルトで使用するモデル
  "model": "claude-sonnet-4-6",

  // 確認なしで実行できるツール(許可リスト)
  "allowedTools": [
    "Read",
    "Grep",
    "Bash(npm test)",
    "Bash(npm run lint)"
  ],

  // 絶対に使わせないツール(禁止リスト)
  "disabledTools": [
    "WebSearch"
  ],

  // MCP サーバーの登録(第4章参照)
  "mcpServers": {}
}

よく使う allowedTools の設定

許可リストの書き方
{
  "allowedTools": [
    "Read",              // ファイル読み込み(常に許可推奨)
    "Write",             // ファイル書き込み
    "Bash(git status)",  // 特定コマンドのみ許可
    "Bash(git diff)",
    "Bash(npm test)",
    "Bash(npm run *)"    // ワイルドカードで npm run 系を全許可
  ]
}

5.6 カスタムコマンドとスキル

Claude Code には、よく使う指示をスラッシュコマンドとして登録できる仕組みが 2 種類あります。 それぞれ置き場所と用途が異なります。

種類ディレクトリ用途
カスタムコマンド .claude/commands/ プロジェクト固有のワンショット指示をコマンド化
スキル .claude/skills/ 再利用可能な手順・処理フローを定義
ℹ️
グローバル設定にも置ける ~/.claude/commands/~/.claude/skills/ に置くと、 全プロジェクトで共通して使えます。プロジェクト内のものと両方が読み込まれます。

① カスタムコマンド(.claude/commands/)

.claude/commands/ に Markdown ファイルを置くと、 ファイル名が /コマンド名 として使えるようになります。 ファイルの中身がそのまま Claude への指示文になります。 $ARGUMENTS と書いた部分には呼び出し時の引数が入ります。

ディレクトリ構成例
.claude/
└── commands/
    ├── review.md      # → /review で呼び出せる
    └── test.md        # → /test で呼び出せる
.claude/commands/review.md
以下の観点でコードレビューを行い、問題点を日本語で報告してください。

- バグ・ロジックの誤り
- セキュリティ上の問題
- パフォーマンスの問題
- コーディング規約の違反

対象:$ARGUMENTS
コマンドの呼び出し例
# 引数なし
> /review

# ファイルを引数として渡す($ARGUMENTS に入る)
> /review src/auth.js
> /test src/utils/format.js

② スキル(.claude/skills/)

.claude/skills/ に Markdown ファイルを置くとスキルとして登録されます。 スキルはコマンドよりも複雑な手順や処理フローを定義するのに向いており、 Claude Code が内部で参照して動作を拡張します。

ディレクトリ構成例
.claude/
└── skills/
    ├── deploy.md      # デプロイ手順を定義
    └── onboarding.md  # 新メンバー向けセットアップ手順
.claude/skills/deploy.md — 複数ステップの手順を定義する例
# デプロイ手順

以下のステップを順番に実行してください。

1. `npm test` を実行してテストが全件パスすることを確認する
2. `npm run build` でビルドする
3. ビルド成果物を確認してエラーがないかチェックする
4. git でコミット・タグを打つ
5. デプロイスクリプト `scripts/deploy.sh` を実行する
6. デプロイ後にヘルスチェック URL にアクセスして動作を確認する
💡
CLAUDE.md と組み合わせると強力 コマンド・スキルのプロンプト内で「CLAUDE.md のルールに従う」と書いておくと、 プロジェクト固有の規約を毎回指定せずに済みます。

5.7 モデルの切り替え

Claude Code は用途に応じてモデルを切り替えられます。 複雑なタスクには高性能モデル、単純なタスクには高速・低コストモデルを使い分けると効率的です。

モデル特徴向いている用途
Claude Opus 4 最高精度・低速・高コスト 複雑なアーキテクチャ設計・難しいバグ解析
Claude Sonnet 4 精度と速度のバランス(デフォルト) 日常的なコーディング全般
Claude Haiku 4 高速・低コスト 単純な変換・フォーマット・簡単な質問
モデルの切り替え方法
# 対話モード内でスラッシュコマンドで切り替え
> /model
# ↑ モデル一覧が表示されるので選択する

# 起動時にモデルを指定
claude --model claude-opus-4-8

# settings.json でデフォルトを変更
# "model": "claude-opus-4-8"

5.8 まとめ

  • CLAUDE.md にプロジェクトのルール・構成・コマンドを書くと毎回説明が不要になる
  • グローバル・プロジェクト・サブディレクトリと階層的に配置できる
  • settings.jsonallowedTools でよく使う操作を事前に許可できる
  • .claude/commands/ にファイルを置くとカスタムコマンド/コマンド名)が作れる
  • .claude/skills/ にファイルを置くと複雑な手順を定義するスキルが作れる
  • タスクの複雑さに合わせてモデルを使い分けるとコスト効率が上がる
🎯
次のステップ(第6章) 最終章では、実際の開発シナリオを通じて Claude Code をフル活用する方法を学びます。 新機能の追加・バグ修正・コードレビューまで、現場ですぐ使えるノウハウを紹介します。