はじめに

Claude Codeをインストールして認証を完了したら、次のステップはプロジェクトに最適化した設定を構築することです。適切な初期設定を行うことで、Claude Codeはプロジェクトの規約やワークフローを理解し、より効率的な開発支援が可能になります。

本記事では、Claude Codeの設定システムの全体像を解説し、CLAUDE.mdファイルによるメモリ管理、settings.jsonによる詳細設定、パーミッションの構成方法を実践的に解説します。この記事を読むことで、以下のことができるようになります。

  • CLAUDE.mdファイルを作成し、プロジェクト固有の指示を効果的に記述する
  • settings.jsonで権限やツールの動作をカスタマイズする
  • 個人設定とチーム共有設定を適切に使い分ける
  • セキュリティを考慮したパーミッション設定を構築する

実行環境

  • オペレーティングシステム: macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上、Windows 10以上(WSL 1/2またはGit for Windows)
  • ハードウェア: 4GB以上のRAM
  • Node.js 18以上(npmインストールの場合のみ必要)
  • インターネット接続(認証およびAI処理に必要)
  • シェル環境: Bash、Zsh、またはFish推奨

前提条件

  • コマンドライン操作の基礎知識
  • Gitの基本操作(clone、commit、push等)
  • プログラミングの基礎知識(言語は問わない)
  • Claude.aiまたはAnthropic Consoleアカウント
  • Claude Codeのインストールと認証が完了していること

Claude Codeの設定体系

Claude Codeは階層的な設定システムを採用しており、組織全体から個人レベルまで、さまざまなスコープで設定を管理できます。

設定スコープの全体像

Claude Codeの設定には4つのスコープがあり、それぞれ異なる目的と適用範囲を持っています。

スコープ 設定ファイルの場所 適用範囲 Git管理
Managed システムディレクトリのmanaged-settings.json マシン上のすべてのユーザー IT部門が管理
User ~/.claude/ディレクトリ すべてのプロジェクトで有効 しない
Project .claude/ディレクトリ リポジトリの全コラボレーター する
Local .claude/*.local.*ファイル このリポジトリでの自分のみ しない(自動でgitignore)

設定の優先順位

複数のスコープで同じ設定が存在する場合、より具体的なスコープが優先されます。

flowchart TD
    A[Managed設定] --> B[コマンドライン引数]
    B --> C[Local設定]
    C --> D[Project設定]
    D --> E[User設定]
    
    A -.- A1[最高優先度 - 上書き不可]
    E -.- E1[最低優先度 - 他で指定がない場合に適用]

例えば、User設定でBash(npm run:*)を許可していても、Project設定で拒否されていれば、Project設定が優先されてコマンドはブロックされます。

CLAUDE.mdによるメモリ管理

CLAUDE.mdは、Claude Codeに対するプロジェクト固有の指示や情報を記述するMarkdownファイルです。Claude Codeは起動時にこのファイルを読み込み、セッション全体を通じてその内容を参照します。

CLAUDE.mdファイルの種類と配置場所

CLAUDE.mdファイルは複数の場所に配置でき、それぞれ異なる目的で使用します。

種類 配置場所 用途 共有範囲
エンタープライズポリシー /Library/Application Support/ClaudeCode/CLAUDE.md (macOS) 組織全体の標準 組織全体
プロジェクトメモリ ./CLAUDE.md または ./.claude/CLAUDE.md チーム共有の指示 ソース管理経由でチーム
プロジェクトルール ./.claude/rules/*.md モジュール化された指示 ソース管理経由でチーム
ユーザーメモリ ~/.claude/CLAUDE.md 個人の好み(全プロジェクト) 自分のみ
ローカルメモリ ./CLAUDE.local.md 個人のプロジェクト固有設定 自分のみ

CLAUDE.local.mdは自動的に.gitignoreに追加されるため、個人的な設定をバージョン管理から除外できます。

/initコマンドでCLAUDE.mdを生成する

新しいプロジェクトでCLAUDE.mdを作成する最も簡単な方法は、/initコマンドを使用することです。

1
2
cd your-project
claude

Claude Codeが起動したら、以下のコマンドを実行します。

1
> /init

/initコマンドは、プロジェクトの構造を分析し、適切なCLAUDE.mdのテンプレートを自動生成します。生成されたファイルは必要に応じて編集してください。

効果的なCLAUDE.mdの記述方法

CLAUDE.mdには、プロジェクトの概要、コーディング規約、よく使うコマンドなどを記述します。以下は実践的な記述例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# プロジェクト概要

このプロジェクトは、Next.js 15とTypeScriptで構築されたECサイトのフロントエンドです。

## 技術スタック

- フレームワーク: Next.js 15 (App Router)
- 言語: TypeScript 5.4
- スタイリング: Tailwind CSS 4.0
- 状態管理: Zustand
- テスト: Vitest + Testing Library

## よく使うコマンド

- `npm run dev` - 開発サーバー起動
- `npm run build` - プロダクションビルド
- `npm run test` - テスト実行
- `npm run lint` - ESLintによる静的解析
- `npm run type-check` - TypeScriptの型チェック

## コーディング規約

- コンポーネントはPascalCaseで命名する
- カスタムフックは`use`プレフィックスを付ける
- APIレスポンスの型は`src/types/api/`に定義する
- 定数は`src/constants/`に配置する

## ディレクトリ構造

~~~text
src/
├── app/           # App Routerのページ
├── components/    # 共通コンポーネント
├── features/      # 機能別モジュール
├── hooks/         # カスタムフック
├── lib/           # ユーティリティ
├── stores/        # Zustandストア
└── types/         # 型定義

重要な注意事項

  • 環境変数は.env.localで管理し、絶対にコミットしない
  • APIエンドポイントは/src/lib/api.tsで一元管理する
  • エラーハンドリングはErrorBoundaryを使用する

### CLAUDE.mdのベストプラクティス

効果的なCLAUDE.mdを作成するためのポイントを紹介します。

**具体的に記述する**

曖昧な指示よりも具体的な指示の方が効果的です。

~~~markdown
<!-- 悪い例 -->
- コードを適切にフォーマットする

<!-- 良い例 -->
- インデントは2スペースを使用する
- 行末のセミコロンは省略しない
- オブジェクトの最後のプロパティにもカンマを付ける

構造化して整理する

関連する情報はMarkdownの見出しでグループ化します。

1
2
3
4
5
6
7
8
9
## ビルドとデプロイ

- 本番ビルド: `npm run build`
- ステージング: `npm run build:staging`

## テスト

- ユニットテスト: `npm run test:unit`
- E2Eテスト: `npm run test:e2e`

定期的に更新する

プロジェクトの進化に合わせてCLAUDE.mdも更新し、常に最新の情報を反映させます。

@インポート構文による外部ファイルの参照

CLAUDE.mdでは@path/to/file構文を使って外部ファイルをインポートできます。

1
2
3
4
5
6
プロジェクトの概要は@READMEを参照してください利用可能なnpmコマンドは@package.jsonを確認してください。

# 追加の指示
- Gitワークフロー: @docs/git-workflow.md
- APIドキュメント: @docs/api-spec.md

相対パスと絶対パスの両方が使用でき、ホームディレクトリからのパスも指定できます。

1
2
# 個人設定
- @~/.claude/my-project-instructions.md

インポートは最大5階層まで再帰的に解決されます。現在読み込まれているメモリファイルは/memoryコマンドで確認できます。

.claude/rules/によるモジュール化

大規模なプロジェクトでは、CLAUDE.mdを1つの大きなファイルにするのではなく、.claude/rules/ディレクトリで複数のファイルに分割できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
your-project/
├── .claude/
│   ├── CLAUDE.md           # メインの指示
│   └── rules/
│       ├── code-style.md   # コーディング規約
│       ├── testing.md      # テスト規約
│       ├── security.md     # セキュリティ要件
│       └── frontend/
│           ├── react.md    # React固有のルール
│           └── styles.md   # スタイリング規約

.claude/rules/内のすべての.mdファイルは自動的にプロジェクトメモリとして読み込まれます。

パス固有のルール

YAMLフロントマターでpathsフィールドを指定すると、特定のファイルパターンにのみ適用されるルールを定義できます。

1
2
3
4
5
6
7
8
9
---
paths: src/api/**/*.ts
---

# API開発ルール

- すべてのAPIエンドポイントには入力バリデーションを含める
- 標準のエラーレスポンス形式を使用する
- OpenAPIドキュメントコメントを含める

複数のパターンを指定することも可能です。

1
2
3
4
5
6
7
8
---
paths: src/**/*.{ts,tsx}, tests/**/*.test.ts
---

# TypeScript/Reactルール

- 型アノテーションは明示的に記述する
- any型の使用を避ける

settings.jsonによる詳細設定

settings.jsonは、Claude Codeの動作を詳細にカスタマイズするためのJSON形式の設定ファイルです。パーミッション、環境変数、ツールの動作などを制御できます。

settings.jsonファイルの配置場所

settings.jsonは複数の場所に配置でき、それぞれ異なるスコープで適用されます。

スコープ ファイルパス 用途
User ~/.claude/settings.json 全プロジェクトで有効な個人設定
Project .claude/settings.json チーム共有のプロジェクト設定
Local .claude/settings.local.json 個人的なプロジェクト設定(Git管理外)
Managed /Library/Application Support/ClaudeCode/managed-settings.json (macOS) IT部門による組織設定

基本的なsettings.jsonの構造

以下は、settings.jsonの基本的な構造と代表的な設定項目です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test:*)",
      "Read(~/.zshrc)"
    ],
    "deny": [
      "Bash(curl:*)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1"
  },
  "model": "claude-sonnet-4-5-20250929",
  "language": "japanese"
}

主要な設定項目

settings.jsonで設定できる主要な項目を解説します。

設定項目 説明
permissions ツール使用の許可/拒否ルール 後述
env セッションに適用する環境変数 {"FOO": "bar"}
model デフォルトで使用するモデル "claude-sonnet-4-5-20250929"
language Claudeの応答言語 "japanese"
cleanupPeriodDays 非アクティブセッションの削除期間 20
attribution Git commit/PRの帰属表示設定 後述
hooks ツール実行前後のカスタムコマンド 後述

環境変数の設定

envフィールドを使用すると、すべてのClaude Codeセッションに環境変数を自動適用できます。

1
2
3
4
5
6
7
{
  "env": {
    "NODE_ENV": "development",
    "DEBUG": "app:*",
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1"
  }
}

チーム全体で共通の環境変数を設定したい場合は、Project設定(.claude/settings.json)に記述します。

言語設定

Claude Codeの応答言語を設定できます。日本語で応答させたい場合は以下のように設定します。

1
2
3
{
  "language": "japanese"
}

帰属表示(Attribution)の設定

Claude Codeは、GitコミットやPull Requestに帰属表示を追加します。この動作をカスタマイズできます。

1
2
3
4
5
6
{
  "attribution": {
    "commit": "Generated with AI\n\nCo-Authored-By: Claude <claude@anthropic.com>",
    "pr": ""
  }
}

帰属表示を無効にする場合は、空文字列を設定します。

1
2
3
4
5
6
{
  "attribution": {
    "commit": "",
    "pr": ""
  }
}

パーミッション設定

パーミッション設定は、Claude Codeがどのツールやファイルにアクセスできるかを制御する重要な設定です。

パーミッションルールの構造

パーミッションはallowaskdenyの3種類のルールで構成されます。

ルール 動作
allow 確認なしで自動的に許可
ask 実行前に確認を求める
deny 完全にブロック
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test:*)"
    ],
    "ask": [
      "Bash(git push:*)"
    ],
    "deny": [
      "WebFetch",
      "Bash(curl:*)",
      "Read(./.env)"
    ]
  }
}

ツール別のパーミッション設定

Claude Codeの各ツールに対してパーミッションを設定できます。

Bashコマンド

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
  "permissions": {
    "allow": [
      "Bash(npm run:*)",
      "Bash(git status)",
      "Bash(git diff:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)"
    ]
  }
}

Bashルールはプレフィックスマッチングを使用します。Bash(npm run:*)npm runで始まるすべてのコマンドにマッチします。

ファイル読み取り(Read)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(./config/credentials.json)"
    ]
  }
}

ファイル編集(Edit)/書き込み(Write)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "permissions": {
    "allow": [
      "Edit(./src/**)",
      "Write(./src/**)"
    ],
    "deny": [
      "Edit(./package-lock.json)",
      "Write(./dist/**)"
    ]
  }
}

Web取得(WebFetch)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "permissions": {
    "allow": [
      "WebFetch(https://api.example.com/*)"
    ],
    "deny": [
      "WebFetch(https://internal.company.com/*)"
    ]
  }
}

機密ファイルの保護

セキュリティ上重要なファイルはdenyルールで保護することを推奨します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./.env.local)",
      "Read(./secrets/**)",
      "Read(./config/credentials.json)",
      "Read(./.aws/**)",
      "Read(./.ssh/**)",
      "Read(./build)"
    ]
  }
}

これらのパターンにマッチするファイルは、Claude Codeから完全に見えなくなり、機密情報の漏洩を防止できます。

デフォルトモードの設定

Claude Codeの起動時のデフォルトモードを設定できます。

1
2
3
4
5
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

利用可能なモードは以下の通りです。

モード 説明
plan 読み取り専用(Plan Mode)
acceptEdits 編集を個別確認(Accept Mode)
bypassPermissions 自動承認(Auto-Accept Mode)

追加の作業ディレクトリ

デフォルトでは、Claude Codeは現在の作業ディレクトリ内のファイルにのみアクセスできます。追加のディレクトリへのアクセスを許可するには、additionalDirectoriesを設定します。

1
2
3
4
5
6
7
8
{
  "permissions": {
    "additionalDirectories": [
      "../shared-lib/",
      "../docs/"
    ]
  }
}

/allowedコマンドによる権限管理

Claude Codeセッション中に/allowed(または/allowed-tools)コマンドを使用すると、現在の権限設定を対話的に確認・変更できます。

1
> /allowed

このコマンドで追加された権限は、対応するsettings.jsonファイルに永続化されます。

サンドボックス設定

Claude Codeには、Bashコマンドをサンドボックス環境で実行する機能があります。これにより、ファイルシステムやネットワークへの意図しないアクセスを防止できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["git", "docker"],
    "network": {
      "allowUnixSockets": ["/var/run/docker.sock"],
      "allowLocalBinding": true
    }
  }
}
設定項目 説明 デフォルト
enabled サンドボックスを有効化 false
autoAllowBashIfSandboxed サンドボックス内のBashコマンドを自動承認 true
excludedCommands サンドボックス外で実行するコマンド []

サンドボックス機能はmacOSとLinuxでのみ利用可能です。

/configコマンドによる設定管理

Claude Codeセッション中に/configコマンドを実行すると、設定インターフェースが開きます。

1
> /config

このインターフェースでは、以下の操作が可能です。

  • 現在の設定状態の確認
  • モデルの切り替え
  • 拡張思考モードの有効化/無効化
  • その他の設定オプションの変更

/memoryコマンドによるメモリ編集

/memoryコマンドを使用すると、システムエディタでCLAUDE.mdファイルを直接編集できます。

1
> /memory

編集後、ファイルを保存して閉じると、変更がセッションに反映されます。

設定のユースケース別推奨構成

個人開発プロジェクト

個人開発では、User設定に基本的な好みを設定し、プロジェクト固有の設定はLocal設定に記述します。

~/.claude/settings.json(User設定)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "language": "japanese",
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git diff:*)",
      "Bash(git log:*)"
    ]
  }
}

~/.claude/CLAUDE.md(User CLAUDE.md)

1
2
3
4
5
# 個人の開発スタイル

- コメントは日本語で記述する
- テストは必ずユニットテストから始める
- コミットメッセージはConventional Commitsに従う

チーム開発プロジェクト

チーム開発では、Project設定をGitで共有し、チーム全体で統一された開発体験を提供します。

.claude/settings.json(Project設定)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
  "permissions": {
    "allow": [
      "Bash(npm run:*)",
      "Bash(npx:*)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  },
  "env": {
    "NODE_ENV": "development"
  }
}

.claude/CLAUDE.md(Project CLAUDE.md)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# プロジェクト開発ガイド

## コーディング規約
@docs/coding-standards.md

## APIドキュメント
@docs/api-spec.md

## よく使うコマンド
- 開発サーバー: `npm run dev`
- テスト: `npm run test`
- リント: `npm run lint`

エンタープライズ環境

組織全体でセキュリティポリシーを強制する場合は、Managed設定を使用します。

/Library/Application Support/ClaudeCode/managed-settings.json(macOS)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "permissions": {
    "deny": [
      "Bash(curl:*)",
      "Bash(wget:*)",
      "WebFetch"
    ],
    "disableBypassPermissionsMode": "disable"
  },
  "forceLoginMethod": "console"
}

Managed設定はIT部門がシステムディレクトリに配置し、ユーザーやプロジェクト設定で上書きできません。

トラブルシューティング

設定が反映されない場合

設定が期待通りに動作しない場合は、以下を確認してください。

  1. ファイルの配置場所: settings.jsonやCLAUDE.mdが正しいパスに配置されているか確認
  2. JSON構文エラー: settings.jsonに構文エラーがないか確認
  3. スコープの優先順位: より高い優先度のスコープで上書きされていないか確認
  4. Claude Codeの再起動: 設定変更後はClaude Codeを再起動

現在の設定を確認する

/configコマンドで現在の設定状態を確認できます。

1
> /config

読み込まれているメモリファイルは/memoryコマンドで確認できます。

1
> /memory

設定ファイルの完全リセット

設定を完全にリセットする場合は、以下のファイルを削除します。

1
2
3
4
5
6
7
# macOS / Linux
rm -rf ~/.claude
rm ~/.claude.json

# プロジェクト固有の設定
rm -rf .claude
rm -f CLAUDE.md CLAUDE.local.md

まとめ

本記事では、Claude Codeの初期設定について、CLAUDE.mdによるメモリ管理とsettings.jsonによる詳細設定を解説しました。

適切な設定を行うことで、Claude Codeはプロジェクトの文脈を理解し、チームの規約に沿った提案ができるようになります。特に以下のポイントを押さえておくことが重要です。

  • CLAUDE.mdはプロジェクトの概要、規約、よく使うコマンドを記述し、Claude Codeにコンテキストを与える
  • settings.jsonでパーミッション、環境変数、ツールの動作を細かく制御する
  • スコープの使い分けにより、個人設定とチーム設定を適切に管理する
  • 機密ファイルの保護をdenyルールで設定し、セキュリティを確保する

次のステップとして、Claude Codeの基本操作を学び、実際の開発タスクでの活用を始めてみてください。

参考リンク