devAlice
← AI Agents

Claude Code セットアップ — インストール・権限・hooks・MCP を最初の1時間で

Claude Code のシングルパスセットアップ: インストール → 認証 → プロジェクトガイダンス → 権限 → hooks → MCP。毎日使う前に到達すべき状態。

Claude CodeはAnthropicの公式エージェントCLIだ。一度セットアップすれば非常に強力ですが、インストール時に権限モデル・CLAUDE.md・Hooks・MCP を設定しないと、毎日同じ手作業を繰り返すことになる。このガイドでは macOS / Linux / Windows(Git Bash または WSL2) のインストール → 認証 → プロジェクトガイダンス → 権限 → Hooks → MCP を順番に解説する。

設定を後回しにするのではなく、最初の1時間で完成させるのが正解だと考える。以前は「とりあえず動かしてみてから調整しよう」というアプローチをとっていた。いまでは最初のセットアップの質がその後の毎日の体験を決めるからこそ、初回から丁寧に行うことにしている。

対象読者は、git/Nodeに慣れているがClaude Codeを初めて使う方、または整理されていない状態で使っている方だ。

TL;DR

  1. Node.js 20+ → npm install -g @anthropic-ai/claude-codeclaude → ブラウザ認証
  2. プロジェクトルートに CLAUDE.md(1〜2画面)と .claude/settings.json(権限/env/hooks)を配置
  3. 最初に知るべき3つのスラッシュコマンド: /help/config/init
  4. コマンドが毎回拒否される場合は、permissions.allowにパターンを追加
  5. MCP サーバーは必要になったときだけ追加 — ローカルstdioを優先し、トークンはenvで管理

前提条件

  • Node.js 20+node -v。古い?miseまたはnvmでアップグレード
  • Anthropicアカウントconsole.anthropic.com またはClaude.ai Pro/Maxサブスクリプション
  • Git — CLIがプロジェクトを検査するために使用。macOSは/mac/initial-setup参照
  • OS: macOS / Linux / Windows(Git BashまたはWSL2推奨; raw PowerShellも動作するがsh系hookとの互換性が下がる)

1. インストール — 5分

1.1 npmグローバルインストール

npm install -g @anthropic-ai/claude-code

パーミッションエラー? sudoの代わりに、npmのプレフィックスをホームディレクトリに移動してください:

mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
npm install -g @anthropic-ai/claude-code

1.2 初回実行 + 認証

使用したいプロジェクトに cd してから実行する:

cd ~/projects/my-repo
claude

初回実行時にブラウザタブが開いてAnthropicの認証が行われる。サインイン後、CLIがチャットを開始する。トークンはOSキーチェーンに保存されるため、毎回再認証は不要だ。

1.3 確認

claude --version
# 0.x.x のように表示される

2. 最初に知るべき3つのスラッシュコマンド

CLI内で / から始まるコマンドがスラッシュコマンドだ。最初は3つで十分だ:

コマンド目的
/help利用可能なコマンド + キーバインド一覧
/configモデル・テーマ・デフォルト権限モード(インタラクティブUI)
/init現在のディレクトリを解析し CLAUDE.md の下書きを生成

新しいプロジェクトに初めて入ったら /init を実行 — フォルダ構造・言語・ビルドツールを検査して、改良可能な下書きを生成する。


3. CLAUDE.md — プロジェクトガイダンス(最重要)

CLAUDE.mdはプロジェクトルートに置くMarkdownファイルで、毎セッション開始時に自動ロードされる。ここに書いたルールがセッション全体の最優先事項になる。

良い CLAUDE.md

# プロジェクト — Claudeガイダンス
 
## ペルソナ
(省略可)役割ヒント。例: 「シニアエンジニアとして差分を厳しくレビューしてください。」
 
## スタック
- フレームワーク: Next.js 16(App Router)
- 言語: TypeScript strict
- DB: Supabase
 
## コマンド
- 開発サーバー: `pnpm dev`
- ビルド: `pnpm build`
- テスト: `pnpm test`
 
## 規約
- `any`禁止(TS strict)
- ファイル名: kebab-case(ルート)、camelCase(ユーティリティ)
- シークレットのハードコード禁止
 
## Git
- コミット: `[Project] {type}: {desc}` — feat/fix/refactor/...
- mainへの直接push: OK(個人)/ PR必須(チーム)
 
## 作業原則
1. 5ファイル以上 / 新モジュール / アーキテクチャ変更は事前に計画
2. コード変更後、lint+build+testsが通るまで「完了」と宣言しない
3. シークレット・DBマイグレーション・外部pushは明示的な承認が必要

ヒント

  • 短く保つ — 1〜2画面。それ以上は memory/rules/{topic}.md に記載し CLAUDE.md からリンクする。
  • プロジェクトごとにファイルを作成; クロスプロジェクトのガイダンスは ~/.claude/CLAUDE.md に。
  • CLAUDE.md をgitにコミットすることでチームメンバーや他のマシンでも利用可能になる。

4. .claude/settings.json — 権限・env・hooks

実行時の動作を制御するファイルだ。最も頻繁に編集するのは permissions ブロックだ。

4.1 スケルトン

{
  "permissions": {
    "allow": [
      "Bash(git status:*)",
      "Bash(git diff:*)",
      "Bash(pnpm test:*)",
      "Read(/Users/me/projects/**)"
    ],
    "deny": [
      "Bash(rm -rf /:*)",
      "Bash(sudo *)"
    ]
  },
  "env": {
    "EDITOR": "code --wait"
  },
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup",
        "hooks": [
          { "type": "command", "command": "echo '[Session start] $(date)'" }
        ]
      }
    ]
  }
}

4.2 パーミッションルール(permissions.allow / deny

  • Bash(...) が毎回拒否される場合は、allow にパターンとして追加
  • パターンはプレフィックスマッチ — Bash(pnpm:*)pnpm から始まる全コマンドを許可
  • 危険なパターン(rm -rfsudocurl … | bash)は安全のために deny に固定

💡 よく使う読み取り専用コマンドをまとめて追加するには、CLI内の組み込みスキル /fewer-permission-prompts を実行 — トランスクリプトをスキャンしてallowリストを提案する。

4.3 ダウンロード可能なテンプレート

使用前に検証してください:

settings.example.json
# 1. ダウンロード
curl -fsSL https://devalice.jaceclub.com/assets/ai-agents/claude-code/settings.example.json -o .claude/settings.example.json
 
# 2. SHA-256検証
shasum -a 256 .claude/settings.example.json
# expected: 22898a20ade2b3497f8299a8ca6139112c476e0a0a4075e1a05123a02c8266ac
 
# 3. 確認後、所定の場所にコピー
less .claude/settings.example.json
cp .claude/settings.example.json .claude/settings.json

シークレット(APIキーなど)を settings.json に貼り付けないでください。OSのenvまたはgitignoreされた .env から読み込んでください。

4.4 グローバル vs プロジェクト vs ローカル

ファイル場所用途
~/.claude/settings.jsonホームクロスプロジェクトのデフォルト(例: 常に git status を許可)
<project>/.claude/settings.jsonプロジェクトルート(git管理)チーム共有の権限/hooks
<project>/.claude/settings.local.jsonプロジェクトルート(.gitignore)マシン固有のオーバーライド(個人トークン、パス)

5. Hooks — 自動トリガー

Hook は特定のイベントでシェルコマンドを実行する。主なイベント:

イベントタイミング
SessionStartセッション開始
PreToolUseツール呼び出し直前(検証/ブロック可能)
PostToolUseツール呼び出し直後
StopClaudeの応答終了
UserPromptSubmitユーザーがプロンプトを送信した後

例1: セッション開始時に環境を表示する

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup",
        "hooks": [
          {
            "type": "command",
            "command": "printf '[Session start] %s\\nBranch: %s\\n' \"$(date '+%F %T')\" \"$(git branch --show-current 2>/dev/null || echo none)\""
          }
        ]
      }
    ]
  }
}

例2: シークレットファイルへの書き込みをブロックする

PreToolUse は終了コードでブロックできる。(1 = 警告、2 = ブロック)

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | grep -qE '\\.env$|secrets/|private_key' && { echo 'BLOCKED: secret file'; exit 2; } || exit 0"
          }
        ]
      }
    ]
  }
}

仕様の詳細: /help → ドキュメントリンク、または公式ドキュメント。デバッグ時は、まず1行の echo Hook で発火を確認してください。


6. MCP サーバー — 必要なときだけ

MCP(Model Context Protocol)はClaude Codeに外部ツールを公開するための標準だ。GitHub、Slack、Linear、Figmaなどのインテグレーションがあり、独自のサーバーを書くこともできる。

登録

.claude/settings.jsonmcpServers に追加:

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"],
      "env": {}
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

${GITHUB_TOKEN} はシェルのenvから展開されます — シークレットを settings.json に書かないよう export GITHUB_TOKEN=....zshrc または .envrc(direnv)に記載してください。

セキュリティ

  • ローカルstdioサーバーを優先command: "npx" またはローカルバイナリ)— ネットワーク型RPCサーバーより攻撃面が小さい
  • 検証済みパッケージのみ@modelcontextprotocol/*@upstash/*など。未知のパッケージは先に確認
  • シークレットはenvでsettings.json はgitにコミットされることが多い; トークンをインラインに書かない

7. IDE 統合 — VS Code · Cursor

Claude CodeはCLIだが、IDE内でも快適に使える:

  • VS Code / Cursor 統合ターミナルclaudeを実行するだけ。IDEでファイルを編集し、ターミナルでチャット。最もシンプル。
  • VS Code 拡張機能 — マーケットプレースで「Claude Code」を検索してサイドパネルで開く。
  • JetBrains(IntelliJ/PyCharm/…)— JetBrainsマーケットプレースでプラグインを入手可能。

すでにAIネイティブエディタ(Cursor、Windsurf)を使っている場合は、「多ファイル / シェル / git」タスクにClaude Codeを、インラインコーディングにはエディタ内AIを使い分けましょう。


8. 確認 — セットアップは完了している?

# 1. インストール
claude --version
 
# 2. プロジェクトセットアップファイル
ls -la CLAUDE.md .claude/settings.json
 
# 3. グローバルセットアップ(省略可)
ls -la ~/.claude/settings.json 2>/dev/null && echo "global OK" || echo "no global"
 
# 4. 認証 — `claude`を実行してウェルカムバナーを確認
#    > claude
#    │ Welcome to Claude Code!

4つ全部グリーンなら完了だ。最初の実際のタスク: プロジェクトディレクトリで claude を実行し、「このリポジトリの構造を1段落で説明してください」と聞いてみましょう。


9. トラブルシューティング

command not found: claude

  • npmグローバルbinが PATH にありません。npm config get prefix でパスを確認 → <prefix>/bin~/.zshrc / ~/.bashrc に追加
  • Windows Git Bash: npm config get prefixC:\Users\<you>\AppData\Roaming\npm であるべきで、そのパスがPATH上にある必要がある

初回実行でブラウザ認証が開かない

  • ヘッドレス環境(SSH、WSL2): CLIに表示されたURLをブラウザに手動でコピー
  • 認証がまだ失敗する場合は、~/.claude/ 下のトークンキャッシュを削除して再試行

毎回のBashコマンドで「Permission?」プロンプトが出る

  • よく使う読み取り専用コマンドを .claude/settings.jsonpermissions.allow に追加
  • または /config → パーミッションモードを acceptEdits(編集を自動承認、シェルは引き続き確認)に設定

Hook が発火しない

# 1. JSONは有効?
cat .claude/settings.json | jq .
 
# 2. コマンドを簡単にして確認
# command: "echo HOOK_FIRED >> /tmp/claude-hook.log"

JSON が壊れていると、Hook セクションが静かに無効化される。

MCP サーバーが表示されない

  • CLI内の /mcp — 登録済みサーバーとステータスを確認
  • command がPATHにあるか確認(which npx
  • ログは ~/.claude/logs/ またはstderr

10. 次のステップ

このガイドは「Claude Codeを毎日使える状態」で終わりる。その後は:

  • ワークフローパターン — マルチエージェント、プランモード、Subagents(近日公開)
  • Cursorとの比較/ai-agents/cursor-setup
  • 高度な Hooks — メモリ同期の SessionStart、セキュリティゲートの PreToolUse
  • 独自MCP サーバーの書き方 — 内部ツールの公開(近日公開)

参考リンク

変更履歴

  • 2026-05-12 — 初版英語翻訳(devAlice M2 i18n シード)