Claude Code Best Practices \ Anthropicの翻訳です。
本記事は、私が手動で翻訳したものです。正確な内容に関しては原文を参照ください。
Claude Codeはエージェンティックコーディングのためのコマンドラインツールです。この記事では、様々なコードベース、言語、環境においてClaude Codeを用いる際に効果的であることが立証されているヒントとトリックをカバーします。
最近我々は、エージェンティックコーディングのためのコマンドラインツールであるClaude Codeをリリースしました。研究プロジェクトとして開発され、Claude CodeはAnthropicのエンジニアとリサーチャーに、自身のコーディングワークフローにClaudeを組み込む、よりネイティブな手段を提供しています。
Claude Codeは、意図的に低レベルで偏見のないものとなっており、特定のワークフローにフォーカスすることなしに生のモデルのアクセスに近いものを提供します。このデザイン哲学は、柔軟でカスタマイズ可能、スクリプト化可能、安全で強力なツールを作り出します。パワフルでありながらも、この柔軟性はエージェンティックコーディングツールが初めてのエンジニアに、少なくとも自身のベストプラクティスを確立するまでには学習曲線を突きつけることになります。
この記事では、Anthropic内部のチームと、さまざまなコードベース、言語、環境においてClaude Codeを用いた外部のエンジニアの両方において効果的であることが立証された汎用的なパターンを説明します。このリストにあるものは確定したものでも、普遍的に適用できるものではありません。これらの提言をスタート地点と考えましょう。ご自身で実験し、何がベストなのかを見つけ出すことをお勧めします!
詳細な情報が必要ですか?claude.ai/codeにある包括的なドキュメントでは、この記事で述べられているすべての機能をカバーしており、追加のサンプル、実装の詳細、高度なテクニックを提供しています。
1. あなたのセットアップをカスタマイズしましょう
Claude Codeは自動的にプロンプトにコンテキストを持ち込むエージェンティックコーディングアシスタントです。このコンテキストの収集は時間とトークンを消費しますが、環境のチューニングを通じて最適化することができます。
a. CLAUDE.mdファイルを作成
CLAUDE.mdは、会話を開始する際にClaudeが自動的にコンテキストに取り込む特殊なファイルです。これは、以下の文書化のための理想的な場所となります:
- 共通のbashコマンド
- コアのファイルとユーティリティ関数
- コードスタイルのガイドライン
- テストの指示
- リポジトリのお作法(ブランチの命名規則、マージ vs. リベースなど)
- 開発環境のセットアップ(コンパイラが動作するpyenvの使用など)
- プロジェクト固有の予期しない挙動や警告
- Claudeに記憶しておいてほしいその他の情報
CLAUDE.mdファイルで必要とされるフォーマットはありません。以下のように、簡潔で人間が読むことができるようにすることをお勧めします:
# Bash commands
- npm run build: Build the project
- npm run typecheck: Run the typechecker
# Code style
- Use ES modules (import/export) syntax, not CommonJS (require)
- Destructure imports when possible (eg. import { foo } from 'bar')
# Workflow
- Be sure to typecheck when you’re done making a series of code changes
- Prefer running single tests, and not the whole test suite, for performance
いくつかの場所にCLAUDE.mdファイルを配置することができます:
-
あなたのリポジトリのルート、あるいは
claudeを実行する任意の場所(最も一般的な使い方です)。CLAUDE.mdという名前にして、gitにチェックインすればセッションやチームで共有(推奨)することができます。あるいは、CLAUDE.local.mdにして.gitignoreしましょう。 -
claudeを実行するディレクトリの任意の親ディレクトリ。これはroot/fooからclaudeを実行できるモノレポでは最も有用であり、CLAUDE.mdをroot/CLAUDE.mdとroot/foo/CLAUDE.mdの両方に配置することができます。これらの両方は自動的にコンテキストに取り込まれます。 -
claudeを実行するディレクトリの任意のサブディレクトリ。これは上の逆で、この場合、Claudeはサブディレクトリのファイルを操作する際にオンデマンドでCLAUDE.mdファイルを取り込みます。 - あなたのすべてのclaudeセッションに適用されるあなたのホームフォルダー(
~/.claude/CLAUDE.md)
/initコマンドを実行すると、Claudeは自動的にあなたのためにCLAUDE.mdを生成します。
b. CLAUDE.mdファイルの調整
あなたのCLAUDE.mdファイルはClaudeのプロンプトの一部となるので、頻繁に使うプロンプトのように洗練されるべきです。よくある間違いは、その効果を検証することなしに過度なコンテンツを追加するということです。実験を行い、モデルから最も優れた指示追従を引き出すのは何かを特定することに時間をかけましょう。
手動でCLAUDE.mdにコンテンツを追加できますし、適切なCLAUDE.mdに自動的に組み込まれる指示をClaudeに提供するために#を押すこともできます。多くのエンジニアは、コーディングをしている際にコマンド、ファイル、スタイルのガイドラインを文書化するために頻繁に#を用い、チームメンバーの利益にもなるように、コミットで変更をCLAUDE.mdにも含めています。
Anthropicでは、prompt improverを通じて、CLAUDE.mdファイルを時々実行し、準拠性を改善するために、よく指示をチューニングしています("IMPORTANT"や"YOU MUST"による強調の追加など)。
c. Claudeに許可するツールのリストのキュレーション
デフォルトでは、あなたのシステムに変更を加える可能性のあるすべてのアクションにおいてはClaude Codeは権限を要求します: ファイルの書き込み、大量のbashコマンド、MCPツールなどです。安全性の優先度を高めるために、我々は意図的に保守的なアプローチを用いてClaude Codeを設計しています。あなたが安全であることを知っているその他のツール、安全でない場合があるにしてもやり直しが簡単なツール(ファイルの編集、git commitなど)を許可するために許可リストをカスタマイズすることができます。
許可ツールを管理するには4つの方法があります:
- セッションでプロンプトが表示された際に 「Always allow」を選択する
- 許可リストにツールを追加、削除するために、Claude Code起動後に
/permissionsコマンドを使用する。例えば、常にファイルの編集を許可するにはEditを追加し、git commitを許可するにはBash(git commit:*)、Puppeteer MCPサーバーによるナビゲーションを許可するにはmcp__puppeteer__puppeteer_navigateを追加することができます。 - あなたの
.claude/settings.jsonや~/.claude.jsonを手動で編集します(あなたのチームに共有するには前者をソースコントロールにチェックインすることをお勧めします)。 - セッション固有の権限については、
--allowedToolsCLIフラグ を使います。
d. GitHubを使っているならgh CLIをインストールしましょう
イシューの作成、プルリクエストのオープン、コメントの読み込みなどを行うために、ClaudeはGitHubとやり取りするためのgh CLIの使い方を知っています。ghがインストールされていなくても、ClaudeはGitHub APIやMCPサーバー(インストールされている場合)を使うことができます。
2. Claudeにより多くのツールを提供しましょう
Claudeは、あなたが便利なスクリプトや関数の構築を行うのと同じように、あなたのシェル環境にアクセスできます。また、MCPやREST APIを通じて、より複雑なツールを活用することもできます。
a. bashツールとClaudeの活用
Claude Codeはあなたのbash環境を継承するので、あなたのすべてのツールにアクセスすることができます。Claudeはunixツールやghのような一般的なユーティリティを知っていますが、指示なしにはあなたのカスタムbashツールについては何も知りません:
- 使い方の例とともにツール名をClaudeに教えましょう
- ツールのドキュメントを参照するようにClaudeに
--helpを実行するように伝えましょう -
CLAUDE.mdに頻繁に使うツールを記述しましょう
b. MCPとClaudeの活用
Claude Codeは、MCPサーバーとクライアントの両方として機能します。クライアントとしては、3つの方法で任意の数のMCPサーバーに接続してそのツールにアクセスします:
- プロジェクト設定内で(当該ディレクトリでClaude Codeが実行される際に利用可能)
- グローバル設定内で(すべてのプロジェクトで利用可能)
-
チェックインされた
.mcp.jsonファイル内で(あなたのコードベースで作業するすべての人で利用可能)。例えば、あなたのリポジトリで作業するすべてのエンジニアがPuppeteerやSentryサーバーをすぐに利用できるように、あなたの.mcp.jsonにそれらを追加することができます。
MCPを使っている際、設定問題の特定の助けになるように--mcp-debugフラグでClaudeを起動することも有用です。
c. カスタムスラッシュコマンドの活用
デバッグのループ、ログ分析など繰り返されるワークフローにおいては、.claude/commandsフォルダーにマークダウンファイルとして、プロンプトのテンプレートを保存しましょう。これらは、あなたが/をタイプした際に利用できるスラッシュコマンドメニューを通じて利用できるようになります。あなたのチームでも利用できるようにするために、これらのコマンドをgitにチェックインすることができます。
カスタムスラッシュコマンドには、コマンド呼び出しの際にパラメータを渡すために特殊なキーワード$ARGUMENTSを含めることができます。
例えば、自動的にプルを行い、Githubのイシューを修正するために使用できるスラッシュコマンドは以下のようになります:
Please analyze and fix the GitHub issue: $ARGUMENTS.
Follow these steps:
1. Use `gh issue view` to get the issue details
2. Understand the problem described in the issue
3. Search the codebase for relevant files
4. Implement the necessary changes to fix the issue
5. Write and run tests to verify the fix
6. Ensure code passes linting and type checking
7. Create a descriptive commit message
8. Push and create a PR
Remember to use the GitHub CLI (`gh`) for all GitHub-related tasks.
上のコンテンツを.claude/commands/fix-github-issue.mdに保存することで、Claude Codeで/project:fix-github-issueコマンドが利用できるようになります。例えば、Claudeにイシュー#1234を修正させるためには/project:fix-github-issue 1234を使うことができます。同様に、あなたのすべてのセッションで個人的なコマンドを利用できるようにするには、コマンドを~/.claude/commandsフォルダーに追加します。
3. 一般的なワークフローにトライしましょう
Claude Codeは特定のワークフローを強制しないので、好きなように使える柔軟性を提供します。この柔軟性の余裕がある範囲内において、Claude codeを効果的に活用する幾つかの成功パターンがユーザーコミュニティで出現しました:
a. 探索、計画、コード、コミット
この多彩なワークフローは多くの問題に適応します:
-
Claudeに適切なファイル、画像、URLを読み込むようにお願いし、一般的なポインターや固有のファイル名(logging.pyを読み込め)を指定しますが、まだコードを書くべきではないことを明示的に指示します。
- これは特に複雑な問題でサブエージェントを積極的に活用することを検討すべきワークフローの一部となります。特に会話やタスクの初期段階で生じるであろう詳細を検証したり、特定の疑問を調査するためにClaudeにサブエージェントを使わせることで、効率性の喪失に関する欠点を取り込むことなしにコンテキストの可用性を保持する傾向があります。
-
特定の問題にどのようにアプローチするのかに関してClaudeに計画させます。 代替案を完全に評価するための追加の計算時間をClaudeに提供する、拡張思考モードを起動するために「考える」という用語を使うことをお勧めします。これらの特定のフレーズは、システムにおける思考予算のレベルを上昇させるために直接的にマッピングされます: 「考える」 < 「もっと考える」 < 「もっとたくさん考える」 < 「究極思考」。それぞれのレベルは、Claudeが思考に用いる予算をより革新的に割り当てます。
- このステップの結果が合理的に見える場合には、実装(ステップ3)が期待したものでない場合にこのスポットリセットできるように、ドキュメントやGitHubのイシューをプランとともにClaudeに作成させるようにすることができます。
- コードでソリューションを実装するようにClaudeにお願いします。 また、これはソシューションの部品を実装するので、そのソリューションの合理性を明示的に検証するようにお願いする良い場所にもなります。
- Claudeに結果をコミットし、プルリクエストの作成をお願いします。 適切な場合、これはClaudeが何をおこなったのかの説明とともにREADMEや変更ログの更新をClaudeにお願いする良いタイミングにもなります。
ステップ#1-#2は重要です。これらがないと、Claudeはコーディングソリューションに真っ直ぐジャンプする傾向があります。時には、これはあなたが求めるものになりますが、Claudeに研究、計画を最初にお願いすることで、事前に深い思考を求める問題のパフォーマンスを劇的に改善します。
b. テストの記述、コミット。コード、繰り返し、コミット
これは、ユニット、インテグレーション、エンドツーエンドのテストで容易に検証可能な変更に対するAnthropicが好きなワークフローです。テスト駆動開発(TDD)はエージェンティックコーディングによってさらにパワフルなものとなります:
- Claudeに期待する入出力のペアに基づいてテストを記述するようにお願いします。 コードベースにまだ存在しない機能であってもモックの実装の作成を回避するために、テスト駆動開発を行なっているという事実に関して明示的になりましょう。
- Claudeにテストをの実行をお願いし、それらが失敗することを確認させます。 このステージでは如何なる実装コーどぉ描かないように明示的に指示することは、多くの場合有用です。
- テストに満足したらClaudeにテストをコミットさせます。
- テストを編集しないように指示することで、Claudeにテストに通過するコードを記述させます。 全てのテストに通過するまでClaudeに継続させるように指示します。Claudeがコードを記述し、テストを実行し、コードを調整し、再度テストを実行するには何回かの繰り返しが通常は必要となります。
- このステージでは、実装が過度にテストにフィットしない独立したサブエージェントで検証を行うようお願いすることが助けとなる場合があります。
- 変更に満足したら、Claudeにコードをコミットさせます。
Claudeは、ビジュアルモック、テストケース、その他の種類のアウトプットに対して繰り返しを行う明確なターゲットがある際に、ベストなパフォーマンスを示します。テストのような期待するアウトプットを提供することで、Claudeは変更を行い、結果を検証し、成句するまで徐々に改善を行います。
c. コードの記述、結果のスクリーンショット、繰り返し
テストのワークフローと同様に、Claudeにビジュアルのターゲットを提供することができます:
- Claudeにブラウザのスクリーンショットを取得する手段を提供します (Puppeteer MCP server、iOS simulator MCP server、手動でのコピー/Claudeへのスクリーンショットのペーストなど)。
- 画像の貼り付け、コピー/ペースト、画像ファイルパスをClaudeに提供することで、Claudeにビジュアルモックを提供します。
- コードでデザインを実装するようにClaudeに依頼し、結果のスクリーンショットを取得し、結果がモックに一致するまで繰り返します。
- 満足したら、Claudeにコミットするように依頼します。
人間のように、Claudeのアウトプットは繰り返しによって劇的に改善する傾向があります。最初のバージョンが良い場合もありますが、2-3回の繰り返しの後では通常さらに良いものとなります。ベストな結果を得るために、Claudeがアウトプットを参照できるツールを提供しましょう。
d. 安全なYOLOモード
Claudeを監視するのではなく、すべての権限チェックをバイパスし、Claudeが完了まで邪魔されないで作業できるようにするために、claude --dangerously-skip-permissionsを使うことができます。リントエラーの修正や提携コードの生成のようなワークフローではこれはうまく動作します。
Claudeに任意のコマンドを実行させることはリスキーであり、データの損失、システム破壊、(プロンプトインジェクション攻撃などを通じて)データ漏えいにすらつながる場合があります。これらのリスクを最小化するには、インターネットにアクセスできないコンテナ内で--dangerously-skip-permissionsを使います。Docker Devコンテナを用いたこちらのリファレンス実装に従うことができます。
e. コードベースのQ&A
新たなコードベースにオンボードする際、学習と探索にClaude Codeを使いましょう。ペアプログラミングを行う際にプロジェクトの他のエンジニアに尋ねるであろう一連の質問をClaudeに尋ねることができます。Claudeは以下のような一般的な質問に回答するために、エージェント的にコードベースを検索することができます:
- ロギングはどのように動作している?
- 新たなAPIエンドポイントを作成するには?
-
foo.rsの134行目にあるasync move { ... }は何をしている? -
CustomerOnboardingFlowImplが取り扱うエッジケースは? - 333行の
bar()ではなくfoo()を呼び出しているのはなぜ? -
baz.pyの334行をJavaで書くと?
AnthropicではこのようにClaude Codeを活用することが、オンボーディングのコアのワークフローとなっており、ランプアップの時間を劇的に改善し、他のエンジニアの負荷を削減しています。特別なプロンプト作成は不要です!シンプルに質問すれば、Claudeは回答を探し出すためにコードを探索します。
f. gitとやりとりするためにClaudeを活用
Claudeは多くのgitオペレーションに効果的に対応することができます。多くのAnthropicのエンジニアは我々のgitインタラクションの90%以上でClaudeを活用しています:
- 「v1.2.3ではどのような変更が?」、「この特定の機能のオーナーは?」、「なぜこのAPIはこのように設計されているのか?」のような質問に答えるためにgitの履歴を検索します。これらのような問い合わせに回答するために、git履歴をClaudeにチェックさせるように明示的にプロンプトを与えることは助けとなります。
- コミットメッセージの記述。 Claudeは適切なコンテキストを考慮したメッセージを構成するために、自動的にあなたの変更や最近の履歴を参照します。
- ファイルの復旧、リベース競合の解決、比較やパッチ当てのような複雑なgitオペレーションに対応します。
g. GitHubとのやりとりにClaudeを活用
Claude Codeは多くのGitHubインタラクションを管理することができます:
- プルリクエストの作成: Claudeは短縮形の「pr」を理解し、diffと周辺のコンテキストに水戸づいて適切なコミットメッセージを生成します。
- シンプルなコードレビューコメントに対してワンショットの解決策を実装します: あなたのPRに対するコメントの修正を依頼(オプションでより具体的な指示を提供)し、完了したらPRブランチにプッシュバックするように指示します。
- ビルドの失敗やリンターの警告を修正します。
- ClaudeにオープンなGitHubイシューに対してループするように依頼することで、オープンイシューのカテゴリ分け、トリアージを行います。
これによって、ルーチンタスクを自動化する際にghコマンドラインの構文を覚える必要がなくなります。
h. Jupyterノートブックの操作にClaudeを活用
Anthropicのリサーチャーやデータサイエンティストは、Jupyterノートブックを読み書きするためにClaude Codeを使っています。Claudeは画像を含むアウトプットを解釈することができ、データの探索、操作に対する迅速な手段を提供します。必要なプロンプトやワークフローはありませんが、推奨するワークフローとしては、VS CodeでClaude Codeと.ipynbファイルを隣り合わせでオープンすることです。
また、同僚に見せる前にJupyterノートブックのクリーンアップや見た目の改善を行うようにClaudeに依頼することができます。特に、ノートブックやデータの可視化を「見た目で喜ばせるように」と指示することで、人間の参照体験の最適化を思い起こさせる助けになる傾向があります。
4. あなたのワークフローを最適化しましょう
以下の提案はすべてのワークフローに適用されます:
a. あなたの指示を具体的にしましょう
Claude Codeでの成功率は、より具体的な指示、特に最初の試行で具体的にすることで劇的に改善します。最初に明確な指示を与えることで、後での方向性修正の必要性を削減します。
例えば:
| Poor | Good |
|---|---|
| foo.pyにテストを追加 | foo.pyの新たなテストケースを記述して、ユーザーがログアウトしているエッジケースもカバーしてください。モックは避けてください。 |
| なぜ、ExecutionFactoryにはこんな変なAPIがあるの? | ExecutionFactoryのgit履歴を確認して、そのAPIがどのように導入されたのかを要約して |
| カレンダーウィジェットを追加して | ホームページで既存のウィジェットがどのように実装されているかを確認して、パターンを理解し、特にコードとインターフェースがどのように分離されているかを把握してください。HotDogWidget.phpが最初に見るのに良い例です。次に、そのパターンに従って、ユーザーが月を選択し、前後にページネーションして年を選択できる新しいカレンダーウィジェットを実装してください。コードベースの残りの部分で既に使用されているライブラリ以外のライブラリを使わずに、ゼロから構築してください。 |
Claudeは意図を推定できますが、心を読むことはできません。期待によって特により良いアライメントにつながります。
b. Claudeに画像を提供しましょう
Claudeはいくつかの手段を通じて画像や図形に関して優れた挙動を示します:
- スクリーンショットの貼り付け (プロの技: macOSでcmd+ctrl+shift+4を押してスクリーンショットをクリップボードにコピーし、貼り付けるにはctrl+v。macで貼り付けを行う際に通常使用するcmd+vではなく、リモートでは動作しないことに注意してください)
- プロンプト入力に直接画像をドラッグ&ドロップ
- 画像のファイルパスを指定
これは、UI開発における参照ポイントとしてモックを用いる際、分析やデバッグでビジュアルなチャートを取り扱う際には特に有用です。コンテキストにビジュアルを追加しない場合、結果がビジュアル的に優れたものであることがどれだけ重要なのかをClaudeに明確に伝えることも有益なものとなります。
c. Claudeに参照、操作させたいファイルをメンションしましょう
あなたのリポジトリにある任意のファイル、フォルダーをクイックに参照するためにtabのコンプリーションを用い、Claudeに適切なリソースを発見、更新する助けをしましょう。
d. ClaudeにURLを提供しましょう
Claudeが取得、読み込みを行うようにプロンプトとともに特定のURLを貼り付けましょう。同じドメインでの権限プロンプトを避けるために、許可リストにドメインを追加するために/permissionsを使いましょう。
e. 最初から頻繁に方向性を訂正しましょう
auto-acceptモード(shift+tabで切り替え)は、Claudeに自律的に作業させますが、あなたがアクティブなコラボレーター隣、Claudeのアプローチをガイドすることで、通常はより良い結果を得ることになります。最初の時点でClaudeに全体的にタスクを説明することでベストな結果を得ることができますが、任意のタイミングでClaudeの方向性を修正することもできます。
これらの4つのツールはコース修正の助けとなります:
- コーディングの前にClaudeに計画を作るように依頼します。計画が適切であることが確認できるまでコーディングしないことを明示的に指示します。
- 任意のフェーズ(思考中、ツール呼び出し、ファイル編集)でClaudeを止めるためにEscapeを押して、方向を修正、指示を拡張できるようにコンテキストを保持します。
- 前のプロンプト履歴に戻るためにEscapeをダブルタップし、以前のプロンプトを修正し、異なる方向を探索します。探していた結果を得られるまで、プロンプトを編集し、 繰り返すことができます。
- 変更を取り消すようにClaudeに依頼し、多くの場合異なるアプローチを取るためにオプション#2と組み合わせます。
時にClaude Codeは最初のトライで問題を完璧に解決することがありますが、これらの訂正ツールを用いることで通常はより優れたソリューションを迅速に生み出します。
f. コンテキストがフォーカスし続けるように/clearを使いましょう
長いセッションにおいては、Claudeのコンテキストウィンドウが適切でない会話、ファイルコンテンツ、コマンドで溢れてしまうことがあります。これは、パフォーマンスを減少させ、時にはClaudeの邪魔となります。コンテキストウィンドウをリセットするには、タスクの間で頻繁に/clearを使います。
g. 複雑なワークフローではチェックリストとスクラッチパッドを使いましょう
複数のステップを伴う大規模なタスクや、コードの移行、膨大な数のリントエラーの修正、複雑なビルとスクリプトの実行のような膨大なソリューションを必要とする場合には、チェックリストや作業用スクラッチパッドとしてClaudeにマークダウンファイル(GitHubイシューであっても!)を使わせることでパフォーマンスを改善します:
例えば、膨大な数のリント問題を修正するには、以下を実施することができます:
- Claudeにlintコマンドの実行を指示し、結果生じるすべてのエラー(とファイル名と行数)をマークダウンのチェックリストに書き込ませます
- Claudeにそれぞれの問題を一つつ対応するように指示し、終わらせ次に移動する前に修正、検証させます。
h. Claudeにデータを渡しましょう
Claudeにデータを渡す方法がいくつか存在します:
- プロンプトに直接コピーアンドペースト (最も一般的なアプローチ)
-
Claude Codeにパイプを繋ぐ (例:
cat foo.txt | claude)、ログ、CSV、大規模データでは特に有効 - bashコマンド、MCPツール、カスタムスラッシュコマンド経由でデータを取得するようにClaudeに指示する
- ファイルを読み込むかURL(画像もOK)を取得するようにClaudeに指示する
ほとんどのセッションにはこれらのアプローチの組み合わせが含まれます。例えば、ログファイルをパイプで取り込み、ログをデバッグするための追加のコンテキストを取得するために、Claudeにツールの使用を指示します。
5. あなたのインフラを自動化するためにヘッドレスモードを使いましょう
Claude Codeには、CLI、コミット前のhook、ビルドスクリプト、自動化のようなインタラクティブ性のない文脈向けのヘッドレスモードがあります。ヘッドレスモードを有効化するには、プロンプトと-pフラ歩を用い、JSONアウトプットをストリーミングするための--output-format stream-jsonを使用します。
ヘッドレスモードはセッション間で永続化を行わないことに注意してください。セッションごとに起動する必要があります。
a. トリアージを発行するためにClaudeを使いましょう
ヘッドレースモードは、あなたのリポジトリで新たなイシューが作成された場合などGitHubのイベントによって起動される自動化を支援できます。例えば、公開されているClaude Codeのリポジトリでは、作成された新たなイシューを調査し、適切なラベルを割り当てるためにClaudeを使っています。
b. リンターとしてClaudeを使いましょう
Claude Codeは従来のリンティングツールが検知する以上の客観的なコードレビューを提供することができ、typo、古いコメント、誤解を招く関数名や変数名などを特定することができます。
6. 複数のClaudeワークフローでレベルアップ
スタンドアローンの利用を超えた最もパワフルなアプリケーションの幾つには、並列で複数のClaudeインスタンスを実行することが含まれています:
a. 一つのClaudeにコードを記述させ、別のClaudeに検証させる
シンプルですが効果的なアプローチは、あるClaudeにコードを記述させながら、他のClaudeにレビュー、テストを行わせるというものです。複数のエンジニアと作業すると同じように、時には個別のコンテキストによるメリットがあります:
- コードの記述にClaudeを使う
-
/clearを実行するか、別のターミナルで2番目のClaudeを起動する - 2番目のClaudeに最初のClaudeの作業をレビューさせる
- コードとレビューのフィードバックを読み込ませるために別のClaudeを起動する(あるいは再度
/clear) - このClaudeにフィードバックに基づいてコードを編集させる
テストを用いても類似したことを行うことができます: あるClaudeにテストを記述させ、別のClaudeにテストを通過するコードを記述させます。個別の作業スクラッチパッドを提供し、どちらがどれに記述し、読み込むのかを指示することで、それぞれのClaudeインスタンスにコミュニケーションさせることもできます。
この分離は、多くの場合単一のClaudeに全てを行わせるよりも優れた結果を達成します。
b. あなたのリポジトリの複数チェックアウト
Claudeがそれぞれのステップを完了するのを待つのではなく、Anthropicの多くのエンジニアが行なっているのは:
- 個別のフォルダーに3-4のgitチェックアウトを作成
- 個別のターミナルタブでそれぞれのフォルダーをオープン
- 異なるタスクでそれぞれのフォルダーでClaudeを起動
- 進捗をチェックし、権限リクエストを承認/却下するサイクルを回す
c. gitワークツリーの活用
複数の独立したタスクがある際にこのアプローチが活躍し、複数のチェックアウトに対する軽量な代替案を提供します。Gitワークツリーによって同じリポジトリから個別のディレクトリに複数のブランチをチェックアウトすることができます。それぞれのワークフローには、同じGit履歴とreflogを共有しつつも、自身の作業ディレクトリ、個別のファイルを持つことになります。
gitワークツリーを用いることで、あなたのプロジェクトの異なるパーツに対して複数のClaudeセッションを同時に実行し、それぞれが独立した自身のタスクにフォーカスすることができます。例えば、あなたの認証システムのリファクタリングをあるClaudeに指示し、全く関係のないデータ可視化コンポーネントを他のClaudeに構築させることができます。タスクはオーバーラップしないので、それぞれのClaudeは他の変更やマージの競合に対応する必要なしに、フルスピードで作業することができます:
-
ワークツリーの作成:
git worktree add ../project-feature-a feature-a -
それぞれのワークツリーでClaudeを起動:
cd ../project-feature-a && claude - 必要に応じて追加のワークツリーを作成 (新たなターミナルタブでステップ1-2を繰り返す)
いくつかのティップスです:
- 一貫性のある命名規則を使いましょう
- ワークツリーごとに一つのターミナルタブを維持しましょう
- MacでiTerm2を使っているなら、Claudeが注意を引く際の通知をセットアップしましょう
- 異なるワークツリーに対して個別のIDEウィンドウを使用しましょう
- 完了したらクリーンアップしましょう:
git worktree remove ../project-feature-a
d. カスタムハーネスとヘッドレスモードの活用
claude -p (ヘッドレスモード)は、より大きなワークフローにプログラム的にClaude Codeを組み込み、ビルトインのツールとシステムプロンプトを活用します。ヘッドレスモードを使う2つの主要なパターンが存在します:
-
ファニングアウトは大規模なマイグレーションや分析に対応します(数百のログの感情分析や数千のCSVの分析など):
- Claudeにタスクリストを生成するためのスクリプトを記述させます。例えば、フレームワークAからフレームワークBに移行する必要のある2000のファイルのリストを生成します。
- タスクを通じてループし、それぞれでプログラム的にClaudeを呼び出し、タスクと使用可能なツールセットを提供します。例えば、
claude -p “migrate foo.py from React to Vue. When you are done, you MUST return the string OK if you succeeded, or FAIL if the task failed.” --allowedTools Edit Bash(git commit:*) - 複数回スクリプトを実行し、期待する結果を得るためにプロンプトを改善します。
-
パイプライニングは、Claudeを既存のデータ/処理パイプラインに組み込みます:
-
claude -p “<your prompt>” --json | your_commandを呼び出します。ここで、your_commandはあなたの処理パイプラインの次のステップです。 - これだけです!JSON出力(オプション)はより簡単な自動化処理のために構造を提供する助けとなります。
-
これらのユースケースの両方において、Claude呼び出しのデバッグには--verboseフラグを使うことが有益です。アウトプットをきれいにするため、本番運用ではverboseモードをオフにすることを通常はお勧めしています。
Claude Codeを使う際のあなたのティップスやベストプラクティスはなんですか?あなたの駆逐しているものを我々が見れるように@AnthropicAIをタグづけしてください!
謝辞
Boris Chernyによって執筆されました。この作品は、より広範なClaude Codeユーザーコミュニティ全体のベストプラクティスに基づいており、その創造的なアプローチとワークフローは私たちに刺激を与え続けています。また、Daisy Hollman、Ashwin Bhat、Cat Wu、Sid Bidasaria、Cal Rueb、Nodir Turakulov、Barry Zhang、Drew Hodun、その他多くのAnthropicエンジニアの貴重な洞察とClaude Codeでの実践的な経験がこれらの推奨事項の形成に役立ったことに特別な感謝を申し上げます。





