25
24

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 設定・用語理解

25
Posted at

初心者向け Claude Code 設定・用語理解

Claude Codeは、Anthropicが提供するエージェントコーディング用のコマンドラインツール
いろんな機能が提供されており、機能を追いきれていない部分もある
本記事は、Claude Codeの概要やどんな機能が提供されているかを公式ドキュメントや記事からまとめたもの

CLAUDE.mdファイル(メモリ機能)

CLAUDE.mdはメモリ機能として、継続的に参照しプロジェクト固有の知識として学習
記載が多くなりすぎると内容を無視してしまう可能性が高まる
具体的で検証可能な、必要なことのみを端的に指示

  • コードスタイルガイドライン
  • 技術スタック
  • テスト手順
  • 開発者環境の設定
  • 一般的なbashコマンド
  • プロジェクト特有の予期しない動作や警告
  • Claudeに覚えておいてもらいたいその他の情報

プロジェクトメモリ(プロジェクト/CLAUDE.md

CLAUDE.md または .claude/CLAUDE.md
プロジェクト全体のアーキテクチャ、技術スタックなど
プロジェクトで誰もが守るべきルールとして記載・セッション間やチームで共有事項を記載

# プロジェクトメモリの例(.claude/CLAUDE.md)

## 技術スタック 
- バックエンド: Rails 8
- DB: MySQL

## コーディング規約
- エラーメッセージは日本語で統一

## やってはいけないこと
テストを記述せずに機能を実装する

ユーザーメモリ(~/.claude/CLAUDE.md

すべてのプロジェクトで適用される個人設定なので、個人の好みを記載

# ユーザーメモリの例(~/.claude/CLAUDE.md)
## 言語設定
- 説明やコメントは日本語で書いてほしい

## コーディングスタイル
テストはrpsecで必要最低限から始める

## 作業スタイル
- 変更を加える前に、まず現状のコードを読んで理解してから作業してほしい
- 大きな変更をする前に、方針を確認してほしい

モジュール機能

大規模なプロジェクトでは、大きなCLAUDE.mdファイル1つのではなく
ディレクトリを使用して指示を複数のファイルに整理することでルールファイルを維持できる

@記法とファイル参照

@記法を使えば、関連ドキュメントを参照できる

# API設計
詳細な仕様は @docs/api-spec.md を参照してください。

# デプロイ手順
@docs/deployment.md に従ってください。

ユーザールール(~/.claude/rules/*.md)

ユーザータイプのファイルタイプ別の設定を記載

プロジェクトルール(プロジェクト/rules/*.md)

モジュール単位の規約(frontend.md, backend.md など)を記載

許可されたツールを管理(~/.claude/settings.json)

システムを変更する可能性のあるすべてのアクション(ファイルの書き込み、多くのbashコマンド、MCPツールなど)に対して許可を求める設定であり
Claude Code に対して OK行動 と NG行動 を伝えるためのファイル

{
  "permissions": {
    "allow": [
      // 自動的に許可するコマンド
    ],
    "deny": [
      // 絶対に実行しないコマンド
    ]
  }
}

Commands(.claude/commands/)

Claude Codeで繰り返し使うプロンプトをコマンド化する機能

  • カスタムコマンドは頻繁に使うプロンプトを /コマンド名 で呼び出せる機能
  • プロジェクト用は .claude/commands/個人用は ~/.claude/commands/ に配置
  • ファイル名がそのままコマンド名になる(suggest-commit.md → /suggest-commit
  • Markdownファイルにプロンプトを書くだけで作成完了
# .claude/commands/commit.md
現在のGitの状態を確認:
!git status --short
!git diff --cached --stat

上記を踏まえて適切なコミットメッセージを提案してください。

!記法を使えば、コマンド実行時にその情報を取得

Agent Skills(.claude/skills)

Agent Skills - Claude API Docs
Extend Claude with skills - Claude Code Docs
Claude Code が自動的に発見・読み込みできる専門知識のパッケージ
自動的に検出して適用されるので、スキルの存在を知らなくても、その恩恵を受けられる

ユーザーが何かを入力すると、Claudeはその内容と各スキルのdescriptionを比較し、マッチするスキルが見つかると、そのSKILL.mdの完全な内容が読み込まれ、実行

SkillsはClaudeのVM環境を活用して、プロンプトだけでは不可能な機能を提供
Claudeは事前にコンテキストを消費するのではなく、必要に応じて段階的に情報を読み込み

レベル 内容 トークン消費
第1段階 メタデータ(常に読み込まれる) 約100トークン/Skill
第2段階 SKILL.md 全体(トリガーされたときに読み込まれる) 通常は5,000トークン未満
第3段階 追加リソース(必要に応じて読み込まれる) 必要時のみ読み込み
---
name: your-skill-name
description: Brief description of what this Skill does and when to use it
---

# Your Skill Name

## Instructions
[Clear, step-by-step guidance for Claude to follow]

## Examples
[Concrete examples of using this Skill]
フィールド 説明 制限
name スキル識別子 小文字、数字、ハイフンのみ
description スキル説明 何をするか+いつ使うかを記述

サブエージェント(.claude/agents)

カスタムサブエージェントの作成 - Claude Code Docs
サブエージェントはメイン会話とは独立したコンテキストで動作し、どれだけファイルを読み込んでも、メイン会話のコンテキストを消費しない
スキルのサブセットを実行できるサブエージェントにタスクを委任し、スキルを自律的に実行

  1. メインのClaudeが「このタスクを委譲しよう」と判断
  2. Taskツールで明示的に起動され、独立したコンテキストで別のClaudeが起動
  3. タスク完了後、結果だけがメインに報告される

既存で用意されているエージェントは以下の二つ

Exploreエージェント
コードベースの探索に特化している。ファイルの読み込みと検索だけができ、編集はできない。「認証の実装を探して」「エラーハンドリングのパターンを分析して」といったタスクに最適

Planエージェント
実装計画の策定に特化している。コードを読むことはできるが、編集はできない。「この機能をどう実装すべきか」という質問に、コードベースを分析した上で回答する

# .claude/agents/security-reviewer.md
---
name: security-reviewer
description: セキュリティ脆弱性のレビュー。コードを読んで問題を指摘するが、
             修正は行わない。PRレビューやセキュリティ監査で使用。
model: sonnet
tools:
  - Read
  - Grep
  - Glob
disallowedTools:
  - Write
  - Edit
  - Bash
permissionMode: dontAsk
---

# セキュリティレビュー手順
あなたはセキュリティ専門家として、コードをレビューします。
以下の観点でチェックし、発見した問題を重要度順にリストアップしてください。

## チェック項目
### 入力検証
ユーザー入力が適切に検証されているか確認します。

### 認証・認可
認証のバイパスが可能な箇所がないか確認します。

### データ保護
機密情報(パスワード、APIキー、個人情報)が適切に保護されているか
確認します。

Hooks (.claude/settings.json)

Hooksリファレンス - Claude Code Docs
Hooksは、特定のイベントが発生したときに自動実行されるシェルコマンド
スキルとは異なり、ツール呼び出しとライフサイクルイベントに限定

フックの種類

  1. PreToolUse - ツールが実行される直前に発火
    1. (検証、リマインダー)
    2. 「このコマンドを実行していいか」を判断
    3. 危険なコマンドをブロックしたり、特定のファイルへのアクセスを禁止
  2. PostToolUse - ツールが実行された直後に発火
    1. (フォーマット、フィードバック ループ)
    2. 「実行結果に対して何かする」
    3. ファイルを保存した後に自動フォーマットを実行したり、コマンドの実行ログを記録
  3. UserPromptSubmit - メッセージを送信するとき
    1. 入力内容を検証したり、追加のコンテキストを注入
  4. Stop - Claudeが応答を終えたとき
    1. クリーンアップ処理や、結果の通知
  5. SessionStart - セッションが開始されたときに発火
    1. 環境変数の設定や、必要なサービスの起動
{
  "hooks": {
    "イベント名": [
      {
        "matcher": "マッチャーパターン",
        "hooks": [
          {
            "type": "command",
            "command": "実行するコマンド",
            "timeout": 30
          }
        ]
      }
    ]
  }
}
フィールド 説明
イベント名 PreToolUse、PostToolUseなどのイベントタイプ
matcher 対象を絞り込む正規表現パターン(省略可)
hooks 実行するフックの配列
type "command"を固定で指定
command 実行するシェルコマンド
timeout タイムアウト秒数(省略時はデフォルト値)

MCP Servers - 外部サービスとの連携

外部サービスとの連携を実現するのがMCP(Model Context Protocol)

以下3つに分かれる

userスコープ(すべてのプロジェクトで使用)
個人の開発環境でよく使うサービス(GitHub、個人のデータベースなど)に適している
設定は~/.claude.jsonに保存

projectスコープ(特定のプロジェクトで使用され、Gitで共有)
チーム全員が使うサービス(プロジェクト専用のデータベース、監視サービスなど)に適している
設定は.mcp.jsonに保存

localスコープ(特定のプロジェクトで使用されるが、共有されない)
個人的なテスト環境への接続などに適している

プラグイン

プラグインを作成する - Claude Code Docs
プラグインは、Skillsなどの上記に記載があった設定ファイルをまとめて配布する仕組み
他の人がカスタマイズした Claude Code の設定ファイルをまとめて借りてくるもの

ただしそのまま利用はせず、以下のセキュリティを確認してほしい

セキュリティ

プラグインや設定ファイルなどは信頼できるソースからのみ使用することを強くお勧める
特に自分で作成したか、Anthropicから取得したものなどはまだ安全
悪意のあるSkillがClaudeにツールを呼び出すか、Skillの記載目的と一致しない方法でコードを実行するよう指示できることも意味する

信頼できない、または不明なソースからSkillを使用する必要がある場合は、細心の注意を払い、使用前に徹底的に監査
Claudeがスキルを実行するときにアクセスできるものに応じて、悪意のあるSkillsはデータ流出、不正なシステムアクセス、またはその他のセキュリティリスクにつながる可能性がある

主なセキュリティに関する考慮事項:

  • 徹底的に監査する
    • Skillにバンドルされているすべてのファイルを確認
    • SKILL.md、スクリプト、画像、およびその他のリソース
    • 予期しないネットワーク呼び出し、ファイルアクセスパターン、またはSkillの記載目的と一致しない操作などの異常なパターンを探す
  • 外部ソースはリスク:
    • 外部URLからデータを取得するSkillsは特に危険
    • 取得されたコンテンツに悪意のある指示が含まれている可能性があるため
    • 信頼できるSkillsでも、外部依存関係が時間とともに変わると侵害される可能性
  • ツールの悪用:
    • 悪意Skillsは、有害な方法でツール(ファイル操作、bashコマンド、コード実行)を実行
  • データ露出:
    • 機密データへアクセス権を持つSkillsは、情報を外部システムに漏らす設計される可能性
  • ソフトウェアのインストールのように扱う:
    • 信頼できるソースからのみSkillsを使用
    • 機密データまたは重要な操作へのアクセス権を持つ本番システムにSkillsを統合する場合は特に注意

ワークフローを最適化

指示を出す際に気をつけると良いこと

a. 指示は具体的に

  • 初回の試行において、より具体的な指示を与えることで成功率が大幅に向上
  • 事前に明確な指示を与えることで、後々の軌道修正の必要性が減る

b. Claudeに画像を与える

  • スクリーンショットを貼り付け
  • 画像をプロンプト入力に直接ドラッグアンドドロップ
  • 画像のファイルパスを指定

c. 見てもらう、作業してもらうファイルを記載

  • Claude は適切なリソースを見つけたり更新できる

d. ClaudeにURLを渡す

  • プロンプトの横に特定のURLを貼り付け

e. 早期かつ頻繁に軌道修正する

  • コーディングを始める前に、Claudeに計画を立てさせる
  • 計画できるまで、コーディングをしないように明確に指示

f./clearコンテキストを集中させるために使用

  • 長時間のセッション中、関係のない会話、ファイルの内容、コマンドが表示され、これによりパフォーマンスが低下し、Claude の作業が滞る場合
  • /clearタスクの合間にこのコマンドを頻繁に使用して、コンテキストウィンドウをリセット

コンテキスト消費

やり取りをする中でコンテキストを消費されるが、上手に抑える必要がある

コンテキスト消費が大きくなるパターン

MCPサーバー経由でAsana、Notion、GitHub、Slackなどと通信すると、それぞれのAPIレスポンスがコンテキストに蓄積
「関連するファイルをすべて読んで」という指示は、数十ファイルを読み込む可能性
「すべてのテストファイルをチェックして」という指示で100個のファイルを順番に処理すると、都度コンテキストが増える
詳細なレポートや長いドキュメントを生成すると、その分コンテキストを消費

抑えるパターン

パターン1:責務を分割する
ひとつの大きなコマンドを、複数の小さなコマンドに分割

# ❌ すべてを1つのコマンドで実行
/release-complete
# コミット、ドキュメント更新、Slack通知、仕様書更新をすべて実行

# ✅ 責務ごとに分割
/commit          # コードをコミット
/update-docs     # ドキュメントを更新
/notify-release  # Slackに通知

パターン2:サブエージェントを活用する
サブエージェント(context: fork)は独立したコンテキストで動作
コンテキストを大量に消費する処理は、サブエージェントに委譲

---
name: analyze-codebase
description: コードベース全体を分析する
context: fork  # 独立したコンテキストで実行
---

パターン3:必要最小限の情報に絞る
外部サービスから情報を取得するとき、必要な情報だけを取得

# ❌ すべての情報を取得
プロジェクトのタスク詳細をすべて取得して、その内容を確認してください

# ✅ 必要な情報だけを取得
プロジェクトのタスクのステータスと期限だけを確認してください

一般的なワークフロー

claude codeでの様々な良いワークフローが提案されている
https://www.anthropic.com/engineering/claude-code-best-practices

a. 探索・計画・コーディング・コミット

多目的ワークフローは、多くの問題に適している

  1. 関連するファイル、画像、または URL を読み取るように探索指示
    1. 一般的なポインタ (「ログを処理するファイルを読み取る」) または特定のファイル名 (「logging.py を読み取る」) を指定
    2. まだコードを書き込まないように明示的に指示
  2. Claudeに特定の問題へのアプローチ方法を計画指示
    1. 「think」という言葉を使うことで、拡張思考モードを起動し、Claudeがより多くの計算時間を得て、より綿密に代替案を評価できる
    2. 思考の深さレベル(低→高):
      • 「考える」(think)
      • 「一生懸命考える」(think hard)
      • 「もっと一生懸命考える」(think harder)
      • 「超考える」(ultrathink)
      • レベルが上がるにつれて、Claudeが使用できる思考予算が徐々に増加
    3. 実装が期待どおりでない場合、この時点にリセットできるように、Claude に計画を記載したドキュメントを作成
  3. その解決策をコードで実装するようコーディング指示
    1. 解決策の一部を実装する際に、その妥当性を明示的に検証するよう依頼
  4. 結果をコミット指示
    1. このタイミングで Claude に README や変更ログを更新してもらい、変更内容の説明を追加

b. テストコードを書いて繰り返してコミット

テストで簡単に検証できる変更のため、Anthropicが推奨するワークフロー
テスト駆動開発(TDD)は、エージェントコーディングによってさらに強力

  1. 想定される入出力ペアに基づいたテストを書くように依頼
    1. テスト駆動開発を明示的に伝え
    2. コードベースにまだ存在しない機能であっても、モック実装を作成しない
  2. テストを実行し、失敗することを確認するように指示
    1. この段階では実装コードを書かないように明示的に指示
  3. 満足したら、テストをコミットするよう依頼
  4. Claudeにテストに合格するコードを書くように指示
    1. テストを変更しないように指示
    2. すべてのテストに合格するまで続けるように指示
    3. Claudeがコードを書き、テストを実行し、コードを調整し、再びテストを実行する反復作業
  5. 変更に満足したら、コードをコミット

c. コード結果をスクリーンショットし、繰り返し実行

テストワークフローと同様に、Claude に視覚的なターゲットを提供

  1. Claude にブラウザのスクリーンショットを撮る手段を提供
    1. (例: Puppeteer MCP サーバーiOS シミュレーター MCP サーバーを使用するか、スクリーンショットを手動で Claude にコピー/貼り付けする)。
    2. 画像をコピー/貼り付けまたはドラッグ アンド ドロップするか、Claude に画像ファイルのパスを提供して、Claude に視覚的なモックを提供
  2. Claude にデザインをコードに実装し、結果のスクリーンショットを撮り、結果がモックと一致するまで反復処理させる
  3. 満足したら、コミット

マルチClaudeワークフロー

a. 1人のClaudeがコード、もう1人のClaudeが検証

1人のClaudeがコードを書き、もう1人がレビューやテストを行う
テストでも同様のことが可能で、1人のClaudeにテストを書いてもらい、もう1人のClaudeにテストをパスさせるためのコードを書いてもらう

  1. Claudeを使ってコードを書く
  2. /clear別のターミナルで2番目のClaudeを実行または起動
  3. 2番目のClaudeに1番目のClaudeの作品を​​レビュー
  4. 別のClaude(または/clearもう一度)を起動して、コードとレビューのフィードバックの両方を読みこみ
  5. このClaudeにフィードバックに基づいてコードを編集

資料

公式

github

記事

25
24
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
25
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?