Replies: 1 comment
Claude Code: エージェンティックコーディングのベストプラクティス公開日:2025年4月18日 Claude Codeは、エージェンティックコーディングのためのコマンドラインツールです。この記事では、様々なコードベース、言語、環境でClaude Codeを使用する際に効果的であることが実証されたコツやテクニックをカバーしています。 私たちは最近Claude Codeをリリースしました。これは、エージェンティックコーディング用のコマンドラインツールです。研究プロジェクトとして開発されたClaude Codeは、Anthropicのエンジニアや研究者がClaude を彼らのコーディングワークフローにより自然に統合するための方法を提供します。 Claude Codeは意図的に低レベルで意見を持たない設計になっており、特定のワークフローを強制することなく、生のモデルアクセスに近いものを提供しています。この設計哲学により、柔軟で、カスタマイズ可能で、スクリプト化可能で、安全なパワーツールが生まれます。強力である一方で、この柔軟性は、エージェンティックコーディングツールに慣れていないエンジニアにとって学習曲線を生み出します—少なくとも彼らが独自のベストプラクティスを開発するまでは。 この記事では、Anthropicの内部チームと、様々なコードベース、言語、環境でClaude Codeを使用している外部エンジニアの両方にとって効果的であることが実証された一般的なパターンをまとめています。このリストの項目は確定したものでも、普遍的に適用可能なものでもありません。これらの提案を出発点として考えてください。あなたに最適な方法を実験して見つけることをお勧めします! より詳細な情報をお探しですか?claude.ai/codeにある包括的なドキュメントでは、この記事で言及されているすべての機能をカバーし、追加の例、実装の詳細、高度な技術を提供しています。 1. セットアップをカスタマイズするClaude Codeは、プロンプトにコンテキストを自動的に取り込むエージェンティックコーディングアシスタントです。このコンテキスト収集は時間とトークンを消費しますが、環境調整によって最適化することができます。 a.
|
| 悪い | 良い |
|---|---|
| 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に見てもらいたい、または作業してもらいたいファイルを言及する
タブ補完を使用して、リポジトリ内の任意の場所のファイルやフォルダを素早く参照し、Claudeが適切なリソースを見つけたり更新したりするのを助けます。
d. Claudeに URLを与える
プロンプトと一緒に特定のURLを貼り付けて、Claudeが取得して読むようにします。同じドメイン(例:docs.foo.com)の許可プロンプトを避けるために、/permissionsを使用してドメインを許可リストに追加してください。
e. 早期に頻繁に軌道修正する
オートアクセプトモード(shift+tabでトグル)によりClaude は自律的に作業できますが、通常は積極的な協力者になってClaude のアプローチを導くことでより良い結果が得られます。始めにタスクをClaude に徹底的に説明することで最良の結果を得ることができますが、いつでもClaude を軌道修正することもできます。
これらの4つのツールが軌道修正に役立ちます:
- Claudeにコーディング前に計画を立てるよう依頼し、計画が良さそうだと確認するまでコーディングしないよう明示的に伝える
- Escapeを押してClaude を中断(思考、ツール呼び出し、ファイル編集の任意のフェーズで)、コンテキストを保持して指示をリダイレクトまたは拡張できる
- Escapeをダブルタップして履歴に戻る、以前のプロンプトを編集し、異なる方向を探る。探している結果が得られるまでプロンプトを編集し、繰り返すことができる
- Claudeに変更を元に戻すよう依頼、しばしばオプション#2と併用して異なるアプローチを取る
Claude Codeが最初の試行で問題を完璧に解決することもありますが、これらの修正ツールを使用することで、一般的により良いソリューションをより早く生み出します。
f. /clearを使用してコンテキストを集中させる
長いセッション中に、Claudeのコンテキストウィンドウは無関係な会話、ファイル内容、コマンドで満たされることがあります。これはパフォーマンスを低下させ、時にはClaude を気散らしさせる可能性があります。タスク間で頻繁に/clearコマンドを使用して、コンテキストウィンドウをリセットしてください。
g. 複雑なワークフローにはチェックリストとスクラッチパッドを使用する
コード移行、多数のlintエラーの修正、複雑なビルドスクリプトの実行など、複数のステップを持つ大きなタスクや網羅的な解決策を必要とするタスクでは、Claudeにチェックリストと作業用スクラッチパッドとしてMarkdownファイル(またはGitHub課題!)を使用させることでパフォーマンスを向上させます:
例えば、多数のlint問題を修正するには、以下を行うことができます:
- Claudeにlintコマンドを実行するよう伝え、すべての結果エラー(ファイル名と行番号付き)をMarkdownチェックリストに書く
- Claudeに各問題に一つずつ対処するよう指示し、修正して検証してからチェックし、次に移る
h. Claudeにデータを渡す
Claudeにデータを提供するための複数の方法があります:
- プロンプトに直接コピー&ペースト(最も一般的なアプローチ)
- Claude Codeにパイプ(例:
cat foo.txt | claude)、ログ、CSV、大きなデータに特に有用 - bashコマンド、MCPツール、またはカスタムスラッシュコマンドでデータをプルするようClaude に伝える
- Claudeにファイルを読むかURLを取得するよう依頼(画像でも動作)
ほとんどのセッションはこれらのアプローチの組み合わせを含みます。例えば、ログファイルをパイプで送り、その後Claudeにツールを使用してログをデバッグするための追加コンテキストをプルするよう伝えることができます。
5. ヘッドレスモードを使用してインフラを自動化する
Claude Codeには、CI、pre-commitフック、ビルドスクリプト、自動化などの非対話型コンテキスト用のヘッドレスモードが含まれています。プロンプトと一緒に-pフラグを使用してヘッドレスモードを有効にし、ストリーミングJSON出力には--output-format stream-jsonを使用してください。
ヘッドレスモードはセッション間で持続しないことに注意してください。各セッションでトリガーする必要があります。
a. 課題トリアージでClaude を使用する
ヘッドレスモードは、リポジトリで新しい課題が作成されるときなど、GitHubイベントによってトリガーされる自動化を強化できます。例えば、公開Claude Codeリポジトリは、新しい課題が入ってくるとClaude を使用して検査し、適切なラベルを割り当てます。
b. リンターとしてClaude を使用する
Claude Codeは、伝統的なリンティングツールが検出するものを超えて主観的コードレビューを提供でき、誤字、古いコメント、誤解を招く関数や変数名などの問題を特定します。
6. マルチClaude ワークフローでレベルアップ
単体使用以外に、最も強力なアプリケーションのいくつかは、複数のClaude インスタンスを並行して実行することです:
a. 一つの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 worktreesを使用する
このアプローチは複数の独立したタスクで優れており、複数のチェックアウトに対する軽量な代替案を提供します。Git worktreesにより、同じリポジトリから複数のブランチを別々のディレクトリにチェックアウトできます。各worktreeは独自の作業ディレクトリを持ち、ファイルが分離されていながら、同じGit履歴とreflogを共有します。
git worktreesを使用することで、プロジェクトの異なる部分で複数のClaude セッションを同時に実行でき、それぞれが独自の独立したタスクに集中できます。例えば、一つのClaude に認証システムをリファクタリングさせながら、別のものに完全に無関係なデータ可視化コンポーネントを構築させることができます。タスクが重複しないため、各Claudeは他の変更を待ったりマージコンフリクトを処理したりすることなく、フルスピードで作業できます:
- worktreesを作成:
git worktree add ../project-feature-a feature-a - 各worktreeでClaude を起動:
cd ../project-feature-a && claude - 必要に応じて追加のworktreesを作成(新しいターミナルタブでステップ1-2を繰り返す)
いくつかのコツ:
- 一貫したネーミング規則を使用する
- worktreeごとに1つのターミナルタブを維持する
- MacでiTerm2を使用している場合、Claudeが注意を必要とするときのために通知を設定する
- 異なるworktreesに別々のIDEウィンドウを使用する
- 完了したらクリーンアップ:
git worktree remove ../project-feature-a
d. カスタムハーネスでヘッドレスモードを使用する
claude -p(ヘッドレスモード)は、内蔵ツールとシステムプロンプトを活用しながら、Claude Codeをより大きなワークフローにプログラム的に統合します。ヘッドレスモードを使用する2つの主要なパターンがあります:
-
ファンアウトは大きな移行や分析を処理します(例:数百のログの感情分析や数千のCSVの分析):
- Claudeにタスクリストを生成するスクリプトを書かせます。例えば、フレームワークAからBに移行する必要がある2kファイルのリストを生成します
- タスクをループし、それぞれに対して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フラグを使用することが有用な場合があります。プロダクションでは、よりクリーンな出力のためにバーボーズモードをオフにすることを一般的にお勧めします。
Claude Codeで作業するためのコツやベストプラクティスは何ですか?@AnthropicAIをタグして、あなたが構築しているものを見せてください!
謝辞
執筆者:Boris Cherny。この作品は、創造的なアプローチとワークフローが我々にインスピレーションを与え続けているより広範なClaude Codeユーザーコミュニティ全体のベストプラクティスを基にしています。また、Claude Codeでの貴重な洞察と実践的経験が、これらの推奨事項の形成に役立ったDaisy Hollman、Ashwin Bhat、Cat Wu、Sid Bidasaria、Cal Rueb、Nodir Turakulov、Barry Zhang、Drew Hodun、その他多くのAnthropicエンジニアにも特別な感謝を捧げます。
Uh oh!
There was an error while loading. Please reload this page.
Today I Learned ...
All reactions