Claude Code 概要 - Anthropic
Anthropicが開発したエージェント型コーディングツールであるClaude Codeについて学びましょう。現在はベータ版として研究プレビュー中です。
https://docs.anthropic.com/ja/docs/claude-code/overview
Photo by Pavel Neznanov on Unsplash
こんにちは。ウォンテッドリーで Enabling チームでバックエンドエンジニアをしている市古(@sora_ichigo_x)です。
現在、Enablingチームでは技術的な取り組みを社外にも発信すべく、メンバーが週替わりで技術ブログをリレー形式で執筆しています。前回は冨永さんによる「Pocket終了に備えてObsidian Web Clipperに移行した話」でした。今回は、実践 Claude Code の話をしたいと思います。
先日、Anthropic から Claude 4 がリリースされ、それに合わせて Claude Code の一般提供が始まりました。これまで研究プレビューだった期間を経て、誰でも利用できるようになっています。
本記事には Claude Code を知らない方向けの解説も含みますが、実際の設定・運用がすぐに知りたい方は読み飛ばしてください。
Claude Code
ターミナル上で動作するコーディングAIエージェント
インストール方法
料金
前提
Claude Code 設定の階層構造
~/.claude ディレクトリ内のファイル
設定
なるべくグローバル設定に寄せる
グローバル設定を dotfiles 管理する
常に日本語で回答させる
常に TDD (テスト駆動開発) させる
許可されたツールリスト (permissions.allow) を育てる
MCP サーバーを設定する
Git Worktree を効率的に使えるようにエイリアス・シェル関数を作成する
運用
Shift+Tab で auto-accept edits を有効にする
esc で中断・esc 2回で前の指示に戻る
claude --continue オプションを使う
「PR」が「GitHub Pull Request」のことだと通じる
@ / # / ! のショートカットを使う
[余談] まだ使っていないが試してみたいこと
現状の不満点
任意のディレクトリで claude
コマンドを実行すると対話セッションが立ち上がり、コーディングタスクを指示できます。
以下は筆者の dotfiles リポジトリで「このリポジトリについて説明して」と指示した例です。
詳細な説明は公式ドキュメントに譲りますが、Cursor や Cline に比べて意図的に低レベルで、生のモデルに近いアクセスを提供している点が Claude Code の特徴です。この特徴により、柔軟でカスタマイズ可能なツールになっている一方で、個々人がベストプラクティスを確立するまでの学習コストが高くなっています。
以下のドキュメントに従い npm を使ってインストールしましょう。
Claude Code には2つの料金体系が存在します。
Anthropic API を使う場合は従量課金なのでスモールスタートで検証できますが、$100以上使うようであれば Claude Max プランを契約した方がお得です。
ちなみに現在、筆者は Anthropic API の方法を使っていますが、個人の意見としては「トークン数をケチらないこと」はバイブコーディングの出力品質を上げるための1つの重要なコツと考えているため、Claude Code を長期的に使っていくのであれば Claude Max プランの契約を視野に入れると思います。
はじめに、Claude Code 設定の仕組みを解説します。
Claude Code の設定は3階層で構成されています。それぞれ設定のスコープが異なるため、設定目的に応じて使い分けます。
~/.claude/
で定義され、すべてのプロジェクトに適用。.claude
もしくは CLAUDE.md
で定義され、プロジェクトごとに適用。Git 管理推奨。公式ドキュメント:Claude Codeの設定 - Anthropic
組織で利用する場合は上記に加えて、エンタープライズ設定を強制可能です。
Claude Code のグローバル設定や内部状態は ~/.claude ディレクトリに保存されます。実際のディレクトリ構成は以下の通りです。
~/.claude/
├── CLAUDE.md (コーディング方針などのインストラクションプロンプト)
├── settings.json (グローバル設定)
├── commands/ (カスタムスラッシュコマンドの定義)
./CLAUDE.md
なので場所が違うことに注意ここからは筆者が Claude Code を実践利用する上で行なっている設定を解説します。
前述の通り、Claude Code ではグローバル設定とプロジェクト設定の2種類のスコープが存在しますが、筆者はなるべくグローバル設定側に寄せる方針を取っています。
理由は「リポジトリ間の重複を避けたい」「Claude Code に渡す情報の一貫性を保ちたい」の2点です。
プロジェクト設定にはプロジェクト特有の事情のみ記載します。
Claude Code のグローバル設定は全て ~/.claude
配下に保存されているため、これらのファイルはそのまま dotfiles リポジトリに含めて管理できます。
dotfiles に含めておけば、シェルの設定同様、複数環境での一貫した設定の適用が容易になり、履歴管理が安全に行えます。
筆者は日本語で情報を処理することが最も効率的であると考えているため、Claude Code も日本語で扱えると効率的です。
しかしClaude Code は日本語で話しかけても時々英語で回答することがあるため、~/.claude/CLAUDE.md
にルールとして明示しています。
# CLAUDE.md
## Conversation Guidelines
- 常に日本語で会話する
バイブコーディング全般に言えることですが、バイブコーディングは TDD(テスト駆動開発)と相性が良いです。Claude Code のようなコーディングエージェントは、評価基準が明確であるほど出力の安定性が高まります。期待される入出力を定義した自動テストは、まさにその基準として機能します。
Claude Code に TDD を強制するためには ~/.claude/CLAUDE.md にルールとして明示させます。
# CLAUDE.md
## Conversation Guidelines
- 常に日本語で会話する
## Development Philosophy
### Test-Driven Development (TDD)
- 原則としてテスト駆動開発(TDD)で進める
- 期待される入出力に基づき、まずテストを作成する
- 実装コードは書かず、テストのみを用意する
- テストを実行し、失敗を確認する
- テストが正しいことを確認できた段階でコミットする
- その後、テストをパスさせる実装を進める
- 実装中はテストを変更せず、コードを修正し続ける
- すべてのテストが通過するまで繰り返す
ちなみにこのやり方は、Anthropic公式のベストプラクティスにも紹介されています(Claude Code Best Practices)
Claude Code では settings.json 内の permission.allow
に許可するコマンドや操作を登録できます。ここを適切に整備することで、Claude Code が人間に確認せずに自律的に処理できる範囲を広げることができます。
公式ドキュメント:Claude Codeの設定 - Anthropic
Claude Code はデフォルトで、システムを変更する可能性のあるすべてのアクション(ファイルの書き込み、コマンド、MCPツール)に対して承認を求めます。これは安全性を最優先に意図して保守的なアプローチを採用する Claude Code の設計によるところだと筆者は考えています(Claude Code Best Practices)。
もちろん破壊的な操作(例: rm -rf /)は慎重に扱うべきですが、日常的に利用している安全なコマンドについては、あらかじめ許可しておくと実運用では快適になります。無駄な確認が減る分、AIの自律性を活かしたバイブコーディングがスムーズに進められます。
こちらも ~/.claude/settings.json
に記載して dotfiles 管理しています。以下は一部抜粋です。
{
"permissions": {
"allow": [
"List(*)",
"Fetch(https://*)",
"Bash(ls:*)",
"Bash(rg:*)",
"Bash(mv:*)",
...
],
"deny": []
}
}
また、設定が適切に行われたかどうかは /permissions
コマンドで確認できます。
外部サービスと連携するための仕組みとして MCP (Model Context Protocol) を利用できます。これにより、Claude Code がローカル環境の枠を超えて、各種クラウドサービスや社内ツールと連携しながらコーディングを進めることが可能になります。
Claude Code は MCP がサポートするトランスポートメカニズムである Stdio transport / HTTP with SSE transport の両方に対応しており、それぞれ以下のコマンドで設定可能です。
① Stdio transport (例: GitHub MCP)
$ export GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxx
$ claude mcp add github \
-e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN \
-- docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN \
ghcr.io/github/github-mcp-server
② HTTP with SSE transport (例: DevinWiki MCP)
$ claude mcp add -t sse -s user devinwiki https://mcp.deepwiki.com/sse
注意点として、MCP の設定は他の設定と違い ~/.claude.json
に秘匿情報付きで保存されるため、Git 管理が出来ません。設定自体のGit管理は諦めて、各環境でコマンド実行する必要があります。
現段階で筆者はMCPをフル活用しているというより、GitHub MCP を gh の代わりに使っているレベルですが、今後の MCP の発展を見つつコンテキストに含められる情報をより効果的にできないか注視していくつもりです。
Claude Code で複数のブランチを並行して扱う場合、Git Worktree を活用すると作業が効率化できます。
Git Worktree は、1つのリポジトリから複数の作業ディレクトリ(ワークツリー)を作成し、異なるブランチやコミットを個別のディレクトリで同時に操作できる仕組みです。
Worktree を使うと、同じリポジトリを複数の作業ディレクトリに展開できるため、並行開発や長めのバイブコーディングセッションでも環境を切り分けて進められます。Claude Code 公式ドキュメントでも言及されています。
ただし、Worktree のコマンドはやや冗長になりがちなため、筆者はエイリアスやシェル関数を用意して運用しています。
① Worktree の作成・削除用エイリアス(.gitconfig)
[alias]
wb = "!f() { WORKTREE_PATH=../$(basename $(pwd))-${1}; git worktree add $WORKTREE_PATH $2; }; f"
wd = worktree remove .
② Worktree 移動用のシェル関数
select_worktree() {
local worktrees
worktrees=$(git worktree list --porcelain | awk '/worktree / {print $2}')
if [[ -z "$worktrees" ]]; then
echo "No worktrees found."
return 1
fi
local selected
selected=$(echo "$worktrees" | fzf)
if [[ -n "$selected" ]]; then
echo "$selected"
cd "$selected"
fi
}
register_keycommand "^j" select_worktree
続いて、Claude Code 運用面での工夫を紹介していきます。
Claude Code では、Shift + Tab で auto-accept edits を有効にすると、Claude Code の提案を自動承認できます。
Anthropic公式のベストプラクティス(Claude Code Best Practices)では「人間の適切な介入による早期かつ頻繁な軌道修正 (意訳)」を推奨しており、デフォルトで auto-accepet edits が有効になっていない点に Claude Code の設計思想を感じます。一方で、Cursor や Cline ではタスクが完了するまで承認を必要としない動作が基本です。
筆者としても、できるだけ人間の介入ポイントを減らしてコーディングAIエージェントの自律性を高めたいと考える立場なので、作業中のほとんどは auto-accept edits を有効にしています。修正の必要があれば git から変更を削除するか、次セクションで紹介する esc による作業中断を活用しています。
Claude Code では、esc キーを活用することでセッション中の作業フローを柔軟にコントロールできます。
公式言及箇所:Claude Code Best Practices
Devin のようなリモート AI コーディングエージェントを使わずにあえてローカルでコーディングエージェントを利用するということは、それなりに人間の介入が必要とされるタスクを行なっているケースが多いです。
Cursor や Cline では GUI で直感的に作業介入できるので意識することは少ないですが、人間の介入を適切なタイミングでスムーズに行うことは重要なので esc は意識的に使っていくと良いでしょう。
/exit
で Claude Code のセッションを抜けたあとも claude --continue
で前回のセッションに復帰することができます。
公式ドキュメント:CLIの使用方法とコントロール - Anthropic
これは前述の esc による中断と組み合わせると強力です。
/exit
でセッションを抜けて人間がファイル編集claude --continue
でセッションに復帰して再度指示を出すまた、claude --resume
を使えば前々回以前のセッションを選択して復帰することも可能です。
Claude Code では、プロンプト内で「PR」という略語をそのまま使っても、GitHub Pull Request の意味として正しく解釈してくれます。Anthropic 公式のベストプラクティス(Claude Code Best Practices)でもこの挙動が明示されています。
たとえば、
「この修正内容でPRを作っておいて」
と指示すれば、特に補足しなくても GitHub 上で Pull Request を作成する流れとして処理を進めます。
実際の運用でも、細かなプロンプトを毎回書かなくても済むため、作業テンポが上がります。バイブコーディングの中で PR 作成を頻繁に行う場合は、この略語の自然な解釈が地味に便利です。
Claude Code には、作業効率を高めるための専用ショートカットがいくつか用意されています。特に利用頻度が高いのが @、#、! です。
現時点ではまだ本格的に使い込めていませんが、Claude Code には他にも気になっている機能があります。簡単に整理しておきます。
もちろん良い面だけではなく、Claude Code にも現時点でいくつか不満に感じている点があります。
今後のアップデートでこれらの課題がどの程度解消されるかに期待しています。
以上が私の Claude Code の設定・利用Tipsです。まだ使い始めて日が浅いので、これからもアップデートがあると思いますが、その際はまたあらためて発信しようと思います。