T-CREATOR

Claude Codeの `.claude` や `setting.json` などの設定、使い方まとめ

Claude Codeの `.claude` や `setting.json` などの設定、使い方まとめ

Claude Codeをより効率的に活用するためには、適切な設定が欠かせません。この記事では、Claude Codeの設定システムを体系的に解説し、実際の開発現場で役立つ設定例をご紹介いたします。

Claude Codeは非常に柔軟な設定システムを提供しており、ユーザーの作業環境やプロジェクトの要件に応じて細かくカスタマイズできます。設定を適切に行うことで、セキュリティの向上、作業効率の改善、チーム開発での統一性の確保が可能になります。

Claude Codeの設定

Claude Codeの設定システムを理解することで、これらの課題を解決できます。

.claudeディレクトリの構造

Claude Codeは.claudeディレクトリを使用して、設定ファイルとメモリファイルを管理します。

#ファイル種類場所説明チーム共有Git管理
1ユーザー設定~​/​.claude​/​settings.json全プロジェクトに適用される個人設定××
2ユーザーメモリ~​/​.claude​/​CLAUDE.md全プロジェクトに適用される個人指示××
3プロジェクト設定.claude​/​settings.jsonプロジェクト固有の共有設定
4プロジェクトメモリ.claude​/​CLAUDE.mdプロジェクト固有の共有指示
5ローカル設定.claude​/​settings.local.jsonプロジェクト内の個人設定××
6ローカルメモリ.claude​/​CLAUDE.local.mdプロジェクト内の個人指示(非推奨)××

設定は優先度に従って適用され、後から読み込まれた設定が前の設定を上書きします。メモリファイルは自動的に読み込まれ、Claude Codeに常時適用される指示として機能します。

設定とメモリファイルの役割

**設定ファイル(settings.json)**は、Claude Codeの動作を制御する技術的な設定を管理します。権限、環境変数、フック、APIキーなどが含まれます。

**メモリファイル(CLAUDE.md)**は、Claude Codeに対する自然言語の指示を管理します。コーディング規約、プロジェクト構造、作業フローなどの情報を記述できます。

メモリファイル(CLAUDE.md)の活用

メモリファイルは、Claude Codeに対する自然言語での指示を記述するマークダウンファイルです。プロジェクトの背景知識や作業ルールを共有できます。

**ユーザーメモリ(~/.claude/CLAUDE.md)**は、個人の作業スタイルを全プロジェクトに適用します。

markdown# 個人の作業スタイル

## コーディング規約
- インデントは2スペースを使用
- 変数名はキャメルケースで記述
- コメントは必ず日本語で記述

## よく使用するコマンド
- テスト実行: `npm test`
- ビルド: `npm run build`
- リント: `npm run lint`

**プロジェクトメモリ(.claude/CLAUDE.md)**は、プロジェクト固有のルールをチームで共有します。

markdown# プロジェクト構成

## アーキテクチャ
このプロジェクトはNext.js 14を使用したフルスタックアプリケーションです。

## ディレクトリ構造
- `src/app/`: App Routerベースのページ
- `src/components/`: 再利用可能なコンポーネント
- `src/lib/`: ユーティリティ関数

## 開発ルール
- コンポーネントは必ずTypeScriptで記述
- APIルートは`src/app/api/`に配置
- 新機能追加時は必ずテストも作成

ファイルインポート機能を使用して、設定を分割管理できます。

markdown# メイン設定
@./docs/coding-standards.md
@./docs/deployment-guide.md

## プロジェクト固有の設定
このプロジェクトでは...

具体例

基本的な設定例

まず、よく使用される基本的な設定をご紹介します。

json{
  "model": "claude-3-5-sonnet-20241022",
  "cleanupPeriodDays": 30,
  "env": {
    "NODE_ENV": "development",
    "API_URL": "https://api.example.com"
  }
}

この設定では、使用するモデルを指定し、チャット履歴の保持期間を30日に設定、環境変数を定義しています。

権限管理の設定

セキュリティを重視する場合の権限設定例です。

json{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(yarn *)",
      "Bash(git status)",
      "Bash(git diff)",
      "Read",
      "Write",
      "Edit"
    ],
    "deny": [
      "Bash(rm *)",
      "Bash(sudo *)",
      "Bash(curl *)",
      "Bash(wget *)"
    ]
  }
}

このように設定することで、npm/yarnコマンドやGitの基本操作は許可しつつ、危険な削除コマンドやネットワークアクセスを制限できます。

チーム開発向けの設定

チーム開発で使用するプロジェクト設定の例です。

json{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test)",
      "Bash(npm run build)",
      "Bash(yarn lint)",
      "Bash(yarn test)",
      "Bash(yarn build)"
    ],
    "deny": [
      "Bash(npm publish)",
      "Bash(yarn publish)",
      "Bash(git push)"
    ]
  },
  "env": {
    "CI": "true",
    "NODE_ENV": "development"
  },
  "hooks": {
    "before:Bash": ["echo 'Executing command: {command}'"],
    "after:Edit": ["npm run lint:fix"]
  }
}

この設定では、開発に必要なコマンドのみを許可し、本番環境への影響があるコマンドを制限しています。また、ファイル編集後に自動的にリンターを実行するhookも設定しています。

環境変数での設定

設定ファイル以外に、環境変数での設定も可能です。

bash# APIキーの設定
export ANTHROPIC_API_KEY="your-api-key-here"

# モデルの指定
export CLAUDE_CODE_MODEL="claude-3-5-sonnet-20241022"

# テレメトリーの無効化
export DISABLE_TELEMETRY="true"

# Bedrock使用の有効化
export CLAUDE_CODE_USE_BEDROCK="true"

環境変数を使用することで、機密情報を設定ファイルから分離でき、セキュリティが向上します。

APIキーヘルパーの設定

セキュリティを重視する企業環境では、APIキーヘルパーを使用できます。

json{
  "apiKeyHelper": "./scripts/get-api-key.sh"
}

対応するスクリプト例:

bash#!/bin/bash
# AWS SecretsManagerからAPIキーを取得
aws secretsmanager get-secret-value \
  --secret-id "claude-api-key" \
  --query SecretString \
  --output text

この仕組みにより、APIキーを直接設定ファイルに記述することなく、安全に認証情報を管理できます。

高度な権限制御

より細かい権限制御の例をご紹介します。

json{
  "permissions": {
    "allow": [
      "Bash(npm run test:unit)",
      "Bash(npm run test:integration)",
      "Read(src/**/*)",
      "Write(src/**/*.ts)",
      "Edit(src/**/*.ts)"
    ],
    "deny": [
      "Write(package.json)",
      "Edit(package.json)",
      "Bash(*install*)",
      "Bash(*add*)",
      "Bash(*remove*)"
    ]
  },
  "additionalDirectories": [
    "/opt/project-tools",
    "/shared/libraries"
  ]
}

この設定では、ソースコードの編集は許可しつつ、パッケージ依存関係の変更は制限しています。また、共有ライブラリへのアクセスも許可しています。

settings.jsonの全設定項目

Claude Codeで設定可能な全ての項目を以下にまとめました。

基本設定

#設定項目説明
1modelstring使用するAIモデル"claude-3-5-sonnet-20241022"
2cleanupPeriodDaysnumberチャット履歴の保持期間(日)30
3apiKeyHelperstringAPIキー取得スクリプトのパス".​/​scripts​/​get-key.sh"

環境設定

#設定項目説明
1envobject環境変数の定義{"NODE_ENV": "development"}
2additionalDirectoriesarray追加でアクセス可能なディレクトリ["​/​opt​/​tools", "​/​shared"]

権限設定

#設定項目説明
1permissions.allowarray許可するツール/コマンド["Bash(npm run *)", "Read"]
2permissions.denyarray禁止するツール/コマンド["Bash(rm *)", "Bash(sudo *)"]

フック設定

#設定項目説明
1hooks.before:ツール名arrayツール実行前に実行するコマンド["echo 'Starting...'"]
2hooks.after:ツール名arrayツール実行後に実行するコマンド["npm run lint:fix"]

設定チートシート

日常的によく使用される設定パターンをまとめたチートシートです。

開発環境向け設定

json{
  "model": "claude-3-5-sonnet-20241022",
  "cleanupPeriodDays": 30,
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(yarn *)",
      "Bash(git status)",
      "Bash(git diff)",
      "Bash(git add)",
      "Bash(git commit)",
      "Read",
      "Write",
      "Edit"
    ],
    "deny": [
      "Bash(git push)",
      "Bash(npm publish)",
      "Bash(rm -rf)",
      "Bash(sudo *)"
    ]
  },
  "env": {
    "NODE_ENV": "development"
  },
  "hooks": {
    "after:Edit": ["npm run lint:fix"]
  }
}

本番環境向け設定

json{
  "model": "claude-3-5-sonnet-20241022",
  "cleanupPeriodDays": 7,
  "permissions": {
    "allow": [
      "Read(src/**/*)",
      "Bash(npm run build)",
      "Bash(npm run test)"
    ],
    "deny": [
      "Write",
      "Edit",
      "Bash(*install*)",
      "Bash(git *)"
    ]
  },
  "env": {
    "NODE_ENV": "production",
    "CI": "true"
  }
}

セキュリティ重視設定

json{
  "apiKeyHelper": "./scripts/secure-key.sh",
  "cleanupPeriodDays": 1,
  "permissions": {
    "allow": [
      "Read(src/**/*.ts)",
      "Read(src/**/*.tsx)",
      "Edit(src/**/*.ts)",
      "Edit(src/**/*.tsx)"
    ],
    "deny": [
      "Bash(*)",
      "WebFetch(*)",
      "Write(package.json)",
      "Write(yarn.lock)"
    ]
  },
  "additionalDirectories": []
}

環境変数チートシート

環境変数での設定方法をまとめました。

#環境変数名設定内容
1ANTHROPIC_API_KEYAPIキー"sk-ant-api-..."
2CLAUDE_CODE_MODEL使用モデル"claude-3-5-sonnet-20241022"
3DISABLE_TELEMETRYテレメトリー無効化"true"
4CLAUDE_CODE_USE_BEDROCKAWS Bedrock使用"true"
5CLAUDE_CODE_ENABLE_TELEMETRYテレメトリー有効化"1"
6DISABLE_COST_WARNINGSコスト警告無効化"1"

設定の管理コマンド

Claude Codeには設定を管理するための便利なコマンドが用意されています。

設定の確認

現在の設定を確認するコマンドです。

bash# 全設定の一覧表示
claude config list

# 特定の設定値を確認
claude config get permissions

# グローバル設定の確認
claude config list --global

設定の変更

設定を変更するコマンドです。

bash# 設定値の変更
claude config set model "claude-3-5-sonnet-20241022"

# グローバル設定の変更
claude config set --global cleanupPeriodDays 60

# 環境変数の設定
claude config set env.NODE_ENV "production"

設定のリセット

設定をリセットする方法です。

bash# 特定の設定をリセット
claude config unset permissions

# 全設定をリセット
claude config reset

# グローバル設定のみリセット
claude config reset --global

トラブルシューティング

設定に関するよくある問題と解決方法をご紹介します。

権限エラーの対処

Claude Codeが操作を実行できない場合、権限設定を確認してください。

bash# 現在の権限設定を確認
claude config get permissions

# 必要な権限を追加
claude config set permissions.allow '["Bash(npm run build)"]'

環境変数が反映されない場合

環境変数の設定が正しく認識されない場合の確認方法です。

bash# 環境変数の確認
echo $ANTHROPIC_API_KEY

# Claude Codeでの認識確認
claude config get env

設定ファイルの競合

複数の設定ファイルで競合が発生した場合の対処方法です。

bash# 有効な設定を確認
claude config list

# 設定の優先度を理解して調整
# 1. ユーザー設定 (~/.claude/settings.json)
# 2. プロジェクト設定 (.claude/settings.json)
# 3. ローカル設定 (.claude/settings.local.json)

メモリファイルの管理コマンド

Claude Codeでは、メモリファイルを管理するための専用コマンドも用意されています。

メモリファイルの操作

bash# 現在のメモリ内容を表示
/memory

# クイックメモリ追加(#ショートカット)
# "TypeScriptを使用してください"

# メモリファイルを直接編集
claude memory edit

# 特定ファイルをメモリにインポート
# CLAUDE.mdに @./docs/style-guide.md を追加

よく使用されるメモリ指示例

プロジェクトでよく使用されるメモリ指示のパターンをご紹介します。

markdown# コーディング規約
- TypeScript必須、any型は禁止
- 関数はアロー関数で記述
- コンポーネント名はPascalCase

# テスト方針
- 新機能には必ずユニットテストを追加
- カバレッジ80%以上を維持
- E2Eテストは重要な機能のみ

# デプロイメント
- mainブランチへのマージ後、自動デプロイ
- ステージング環境で動作確認後に本番反映

まとめ

Claude Codeの設定システムを理解することで、安全で効率的な開発環境を構築できます。

階層化された設定とメモリシステムにより、技術的な制御と自然言語での指示を分離して管理できます。settings.jsonで動作を制御し、CLAUDE.mdで作業方針を共有することで、柔軟で統一性のある開発環境を実現できます。

細かな権限制御とセキュリティ設定により、企業環境でも安心してClaude Codeを活用できます。APIキーヘルパーや環境変数を活用することで、機密情報を適切に管理できます。

チートシートと実例を参考に、開発環境、本番環境、セキュリティ重視環境など、用途に応じた最適な設定を構築してください。適切な設定により、Claude Codeは開発チームにとって強力で安全なパートナーとなります。

メモリファイルの活用により、プロジェクトの背景知識や作業ルールをClaude Codeと共有できます。コーディング規約からデプロイメント手順まで、自然言語で記述された指示により、一貫性のある作業を実現できるでしょう。

関連リンク