チュートリアル
開発ワークフローでClaude Codeを効果的に使用するための実践的な例とパターン。
このガイドでは、Claude Codeを使った一般的なワークフローのステップバイステップのチュートリアルを提供します。各チュートリアルには、Claude Codeを最大限に活用するための明確な手順、コマンド例、ベストプラクティスが含まれています。
目次
- 以前の会話を再開する
- 新しいコードベースを理解する
- バグを効率的に修正する
- コードをリファクタリングする
- テストを扱う
- プルリクエストを作成する
- ドキュメントを扱う
- 画像を扱う
- 拡張思考を使用する
- プロジェクトメモリを設定する
- Model Context Protocol (MCP)を設定する
- Claudeをunixスタイルのユーティリティとして使用する
- カスタムスラッシュコマンドを作成する
- Gitワークツリーで並列Claude Codeセッションを実行する
以前の会話を再開する
シームレスに作業を継続する
使用するタイミング: Claude Codeでタスクに取り組んでいて、後のセッションで中断した箇所から続ける必要がある場合。
Claude Codeは以前の会話を再開するための2つのオプションを提供しています:
--continue
で最新の会話を自動的に継続--resume
で会話選択ピッカーを表示
最新の会話を継続する
これにより、プロンプトなしで最新の会話がすぐに再開されます。
非インタラクティブモードで継続する
--print
を--continue
と一緒に使用すると、最新の会話を非インタラクティブモードで再開できます。スクリプトや自動化に最適です。
会話ピッカーを表示する
これにより、以下を表示するインタラクティブな会話セレクターが表示されます:
- 会話開始時間
- 初期プロンプトまたは会話の要約
- メッセージ数
矢印キーで移動し、Enterキーを押して会話を選択します。
仕組み:
- 会話ストレージ: すべての会話は完全なメッセージ履歴とともに自動的にローカルに保存されます
- メッセージの逆シリアル化: 再開時、コンテキストを維持するために全メッセージ履歴が復元されます
- ツールの状態: 以前の会話からのツールの使用と結果が保持されます
- コンテキストの復元: 会話は以前のコンテキストをすべて保持したまま再開されます
ヒント:
- 会話履歴はマシンにローカルに保存されます
- 最新の会話にすぐにアクセスするには
--continue
を使用します - 特定の過去の会話を選択する必要がある場合は
--resume
を使用します - 再開すると、続行する前に会話履歴全体が表示されます
- 再開された会話は、元の会話と同じモデルと構成で開始されます
例:
新しいコードベースを理解する
コードベースの概要をすばやく把握する
使用するタイミング: 新しいプロジェクトに参加したばかりで、その構造をすばやく理解する必要がある場合。
プロジェクトのルートディレクトリに移動する
Claude Codeを起動する
高レベルの概要を尋ねる
特定のコンポーネントについて詳しく調べる
ヒント:
- 広範な質問から始めて、特定の領域に絞り込んでいきます
- プロジェクトで使用されているコーディング規約やパターンについて尋ねます
- プロジェクト固有の用語の用語集を要求します
関連するコードを見つける
使用するタイミング: 特定の機能や機能に関連するコードを見つける必要がある場合。
関連ファイルを見つけるようClaudeに依頼する
コンポーネントがどのように相互作用するかのコンテキストを取得する
実行フローを理解する
ヒント:
- 探しているものについて具体的に説明します
- プロジェクトのドメイン言語を使用します
バグを効率的に修正する
エラーメッセージを診断する
使用するタイミング: エラーメッセージが発生し、その原因を見つけて修正する必要がある場合。
エラーをClaudeと共有する
修正の推奨事項を求める
修正を適用する
ヒント:
- エラーを再現するコマンドとスタックトレースをClaudeに伝えます
- エラーを再現するための手順を説明します
- エラーが断続的か一貫しているかをClaudeに伝えます
コードをリファクタリングする
レガシーコードを最新化する
使用するタイミング: 古いコードを最新のパターンと実践に更新する必要がある場合。
リファクタリングするレガシーコードを特定する
リファクタリングの推奨事項を取得する
変更を安全に適用する
リファクタリングを検証する
ヒント:
- 最新のアプローチのメリットをClaudeに説明してもらいます
- 必要に応じて、変更が後方互換性を維持するよう要求します
- リファクタリングは小さく、テスト可能な単位で行います
テストを扱う
テストカバレッジを追加する
使用するタイミング: カバーされていないコードにテストを追加する必要がある場合。
テストされていないコードを特定する
テストの足場を生成する
意味のあるテストケースを追加する
テストを実行して検証する
ヒント:
- エッジケースとエラー条件をカバーするテストを依頼します
- 適切な場合は、ユニットテストと統合テストの両方を要求します
- テスト戦略をClaudeに説明してもらいます
プルリクエストを作成する
包括的なPRを生成する
使用するタイミング: 変更内容について十分に文書化されたプルリクエストを作成する必要がある場合。
変更内容を要約する
Claudeでプルリクエストを生成する
レビューと改善
テスト詳細を追加する
ヒント:
- PRを作成するようClaudeに直接依頼します
- 提出する前にClaudeが生成したPRをレビューします
- 潜在的なリスクや考慮事項を強調するようClaudeに依頼します
ドキュメントを扱う
コードドキュメントを生成する
使用するタイミング: コードのドキュメントを追加または更新する必要がある場合。
ドキュメント化されていないコードを特定する
ドキュメントを生成する
レビューと強化
ドキュメントを検証する
ヒント:
- 希望するドキュメントスタイル(JSDoc、docstringsなど)を指定します
- ドキュメントに例を含めるよう依頼します
- パブリックAPI、インターフェース、複雑なロジックのドキュメントを要求します
画像を扱う
画像とスクリーンショットを分析する
使用するタイミング: コードベースで画像を扱う必要がある場合や、画像コンテンツの分析にClaudeの助けが必要な場合。
会話に画像を追加する
以下のいずれかの方法を使用できます:
- Claude Codeウィンドウに画像をドラッグアンドドロップする
- 画像をコピーしてcmd+v(Mac)でCLIに貼り付ける
- 画像パスを提供する:claude “この画像を分析してください:/path/to/your/image.png”
Claudeに画像を分析してもらう
コンテキストとして画像を使用する
視覚的コンテンツからコード提案を取得する
ヒント:
- テキストでの説明が不明確または煩雑な場合は画像を使用します
- より良いコンテキストのために、エラー、UIデザイン、または図のスクリーンショットを含めます
- 会話で複数の画像を扱うことができます
- 画像分析は図、スクリーンショット、モックアップなどで機能します
拡張思考を使用する
複雑なタスクにClaudeの拡張思考を活用する
使用するタイミング: 複雑なアーキテクチャの決定、難しいバグ、または深い推論を必要とする複数ステップの実装計画に取り組んでいる場合。
コンテキストを提供し、Claudeに考えてもらう
Claudeはコードベースから関連情報を収集し、 インターフェースに表示される拡張思考を使用します。
フォローアッププロンプトで思考を洗練させる
拡張思考から最大限の価値を得るためのヒント:
拡張思考は以下のような複雑なタスクに最も価値があります:
- 複雑なアーキテクチャ変更の計画
- 複雑な問題のデバッグ
- 新機能の実装計画の作成
- 複雑なコードベースの理解
- 異なるアプローチ間のトレードオフの評価
思考を促す方法によって、思考の深さのレベルが異なります:
- 「考えて」は基本的な拡張思考をトリガーします
- 「もっと考えて」、「たくさん考えて」、「より深く考えて」、「より長く考えて」などの強調フレーズはより深い思考をトリガーします
拡張思考のプロンプトに関するさらなるヒントについては、拡張思考のヒントを参照してください。
Claudeは思考プロセスを応答の上にイタリック体のグレーテキストとして表示します。
プロジェクトメモリを設定する
効果的なCLAUDE.mdファイルを作成する
使用するタイミング: 重要なプロジェクト情報、規約、頻繁に使用されるコマンドを保存するためのCLAUDE.mdファイルを設定したい場合。
コードベース用のCLAUDE.mdをブートストラップする
ヒント:
- 頻繁に使用されるコマンド(ビルド、テスト、リント)を含めて、繰り返しの検索を避けます
- コードスタイルの設定と命名規則を文書化します
- プロジェクト固有の重要なアーキテクチャパターンを追加します
- CLAUDE.mdメモリは、チームと共有する指示とあなた個人の設定の両方に使用できます。詳細については、Claudeのメモリの管理を参照してください。
Model Context Protocol (MCP)を設定する
Model Context Protocol (MCP)は、LLMが外部ツールやデータソースにアクセスできるようにするオープンプロトコルです。詳細については、MCPドキュメントを参照してください。
サードパーティのMCPサーバーは自己責任で使用してください。MCPサーバーを信頼していることを確認し、特にインターネットと通信するMCPサーバーを使用する場合は、プロンプトインジェクションのリスクにさらされる可能性があるため、特に注意してください。
MCPサーバーを構成する
使用するタイミング: Model Context Protocolを使用して、Claudeの機能を専門ツールや外部サーバーに接続して強化したい場合。
MCP Stdioサーバーを追加する
MCP SSEサーバーを追加する
MCPサーバーを管理する
ヒント:
-s
または--scope
フラグを使用して、構成が保存される場所を指定します:local
(デフォルト):現在のプロジェクトであなただけが利用可能(古いバージョンではproject
と呼ばれていました)project
:.mcp.json
ファイルを介してプロジェクト内の全員と共有user
:すべてのプロジェクトであなたが利用可能(古いバージョンではglobal
と呼ばれていました)
-e
または--env
フラグで環境変数を設定します(例:-e KEY=value
)- MCP_TIMEOUT環境変数を使用してMCPサーバーの起動タイムアウトを構成します(例:
MCP_TIMEOUT=10000 claude
で10秒のタイムアウトを設定) - Claude Code内で
/mcp
コマンドを使用して、いつでもMCPサーバーのステータスを確認できます - MCPはクライアント-サーバーアーキテクチャに従っており、Claude Code(クライアント)は複数の専門サーバーに接続できます
MCPサーバースコープを理解する
使用するタイミング: 異なるMCPスコープがどのように機能するか、およびサーバーをチームと共有する方法を理解したい場合。
ローカルスコープのMCPサーバー
デフォルトのスコープ(local
)は、プロジェクト固有のユーザー設定にMCPサーバー構成を保存します。これらのサーバーは、現在のプロジェクトで作業している間、あなただけが利用できます。
プロジェクトスコープのMCPサーバー(.mcp.json)
プロジェクトスコープのサーバーは、プロジェクトのルートにある.mcp.json
ファイルに保存されます。このファイルはバージョン管理にチェックインして、チームとサーバーを共有する必要があります。
これにより、以下の構造の.mcp.json
ファイルが作成または更新されます:
ユーザースコープのMCPサーバー
ユーザースコープのサーバーは、マシン上のすべてのプロジェクトであなたが利用でき、あなた専用です。
ヒント:
- 同じ名前のローカルスコープのサーバーは、プロジェクトスコープとユーザースコープのサーバーよりも優先されます
- 同じ名前のプロジェクトスコープのサーバー(
.mcp.json
内)は、ユーザースコープのサーバーよりも優先されます - セキュリティのため、Claude Codeは
.mcp.json
からプロジェクトスコープのサーバーを使用する前に承認を求めます .mcp.json
ファイルはバージョン管理にチェックインして、チームとMCPサーバーを共有することを意図しています- プロジェクトスコープのサーバーを使用すると、チームの全員が同じMCPツールにアクセスできるようになります
- 有効または無効にするプロジェクトスコープのサーバーの選択をリセットする必要がある場合は、
claude mcp reset-project-choices
コマンドを使用します
PostgresのMCPサーバーに接続する
使用するタイミング: Claudeに読み取り専用のPostgreSQLデータベースへのアクセスを提供して、クエリとスキーマ検査を行いたい場合。
PostgresのMCPサーバーを追加する
Claudeでデータベースをクエリする
ヒント:
- PostgresのMCPサーバーは安全のために読み取り専用アクセスを提供します
- Claudeはデータベース構造の探索と分析クエリの実行を支援できます
- これを使用して、不慣れなプロジェクトのデータベーススキーマをすばやく理解できます
- 接続文字列が最小限必要な権限を持つ適切な認証情報を使用していることを確認してください
JSON構成からMCPサーバーを追加する
使用するタイミング: Claude Codeに追加したい単一のMCPサーバーのJSON構成がある場合。
JSONからMCPサーバーを追加する
サーバーが追加されたことを確認する
ヒント:
- JSONがシェルで適切にエスケープされていることを確認してください
- JSONはMCPサーバー構成スキーマに準拠している必要があります
- プロジェクト固有の構成ではなくグローバル構成にサーバーを追加するには、
-s global
を使用できます
Claude DesktopからMCPサーバーをインポートする
使用するタイミング: すでにClaude DesktopでMCPサーバーを構成しており、手動で再構成することなく同じサーバーをClaude Codeで使用したい場合。
Claude Desktopからサーバーをインポートする
インポートするサーバーを選択する
コマンドを実行すると、インポートするサーバーを選択できるインタラクティブなダイアログが表示されます。
サーバーがインポートされたことを確認する
ヒント:
- この機能はmacOSとWindows Subsystem for Linux(WSL)でのみ動作します
- これらのプラットフォームの標準的な場所からClaude Desktop構成ファイルを読み込みます
- サーバーをグローバル構成に追加するには、
-s global
フラグを使用します - インポートされたサーバーはClaude Desktopと同じ名前になります
- 同じ名前のサーバーがすでに存在する場合、数値サフィックスが付きます(例:
server_1
)
Claude Code自体をMCPサーバーとして使用する
使用するタイミング: Claude Code自体をMCPサーバーとして使用して、他のアプリケーションがClaudeのツールと機能に接続できるようにしたい場合。
ClaudeをMCPサーバーとして起動する
別のアプリケーションから接続する
Claude Code MCPサーバーには、Claude DesktopなどのMCPクライアントから接続できます。Claude Desktopを使用している場合は、この構成を使用してClaude Code MCPサーバーを追加できます:
ヒント:
- サーバーはView、Edit、LSなどのClaudeのツールへのアクセスを提供します
- Claude Desktopでは、ディレクトリ内のファイルの読み取り、編集などをClaudeに依頼してみてください
- このMCPサーバーは単にClaude CodeのツールをあなたのMCPクライアントに公開しているだけであり、個々のツール呼び出しのユーザー確認を実装する責任はあなた自身のクライアントにあることに注意してください
Claudeをunixスタイルのユーティリティとして使用する
検証プロセスにClaudeを追加する
使用するタイミング: Claude Codeをリンターやコードレビュアーとして使用したい場合。
手順:
ビルドスクリプトにClaudeを追加する
パイプイン、パイプアウト
使用するタイミング: データをClaudeにパイプし、構造化された形式でデータを取得したい場合。
Claudeを通じてデータをパイプする
出力形式を制御する
使用するタイミング: 特にClaude Codeをスクリプトや他のツールに統合する場合に、特定の形式でClaudeの出力が必要な場合。
テキスト形式を使用する(デフォルト)
これはClaudeのプレーンテキスト応答のみを出力します(デフォルトの動作)。
JSON形式を使用する
これはコストと期間を含むメタデータを持つメッセージのJSON配列を出力します。
ストリーミングJSON形式を使用する
これはClaudeがリクエストを処理するときにリアルタイムで一連のJSONオブジェクトを出力します。各メッセージは有効なJSONオブジェクトですが、連結された場合、出力全体は有効なJSONではありません。
ヒント:
- Claudeの応答だけが必要な単純な統合には
--output-format text
を使用します - 完全な会話ログが必要な場合は
--output-format json
を使用します - 各会話ターンのリアルタイム出力には
--output-format stream-json
を使用します
カスタムスラッシュコマンドを作成する
Claude Codeは、特定のプロンプトやタスクをすばやく実行するためのカスタムスラッシュコマンドの作成をサポートしています。
プロジェクト固有のコマンドを作成する
使用するタイミング: チームの全メンバーが使用できるプロジェクト用の再利用可能なスラッシュコマンドを作成したい場合。
プロジェクトにコマンドディレクトリを作成する
各コマンド用のMarkdownファイルを作成する
Claude Codeでカスタムコマンドを使用する
ヒント:
- コマンド名はファイル名から派生します(例:
optimize.md
は/project:optimize
になります) - サブディレクトリにコマンドを整理できます(例:
.claude/commands/frontend/component.md
は/project:frontend:component
になります) - プロジェクトコマンドはリポジトリをクローンする全員が利用できます
- Markdownファイルの内容は、コマンドが呼び出されたときにClaudeに送信されるプロンプトになります
$ARGUMENTSでコマンド引数を追加する
使用するタイミング: ユーザーから追加入力を受け付けることができる柔軟なスラッシュコマンドを作成したい場合。
$ARGUMENTSプレースホルダーを含むコマンドファイルを作成する
問題番号を指定してコマンドを使用する
これにより、プロンプト内の$ARGUMENTSが「123」に置き換えられます。
ヒント:
- $ARGUMENTSプレースホルダーは、コマンドに続くテキストに置き換えられます
- コマンドテンプレートの任意の場所に$ARGUMENTSを配置できます
- その他の有用な用途:特定の関数のテストケースの生成、コンポーネントのドキュメント作成、特定のファイル内のコードのレビュー、または指定された言語へのコンテンツの翻訳
個人用スラッシュコマンドを作成する
使用するタイミング: すべてのプロジェクトで機能する個人用スラッシュコマンドを作成したい場合。
ホームフォルダにコマンドディレクトリを作成する
各コマンド用のMarkdownファイルを作成する
個人用カスタムコマンドを使用する
ヒント:
- 個人用コマンドは
/project:
ではなく/user:
をプレフィックスとします - 個人用コマンドはあなただけが利用でき、チームとは共有されません
- 個人用コマンドはすべてのプロジェクトで機能します
- これらを使用して、異なるコードベース間で一貫したワークフローを実現できます
Gitワークツリーで並列Claude Codeセッションを実行する
分離されたコーディング環境にワークツリーを使用する
使用するタイミング: Claude Codeインスタンス間で完全なコード分離を持つ複数のタスクに同時に取り組む必要がある場合。
Gitワークツリーを理解する
Gitワークツリーを使用すると、同じリポジトリから複数のブランチを別々のディレクトリにチェックアウトできます。各ワークツリーには分離されたファイルを持つ独自の作業ディレクトリがありますが、同じGit履歴を共有します。詳細については、公式Gitワークツリードキュメントを参照してください。
新しいワークツリーを作成する
これにより、リポジトリの別の作業コピーを持つ新しいディレクトリが作成されます。
各ワークツリーでClaude Codeを実行する
別のターミナルで:
ワークツリーを管理する
ヒント:
- 各ワークツリーには独自の独立したファイル状態があり、並列Claude Codeセッションに最適です
- あるワークツリーで行われた変更は他に影響せず、Claudeインスタンスが互いに干渉するのを防ぎます
- すべてのワークツリーは同じGit履歴とリモート接続を共有します
- 長時間実行タスクの場合、あるワークツリーでClaudeに作業させながら、別のワークツリーで開発を続けることができます
- 各ワークツリーがどのタスク用かを簡単に識別できるように、わかりやすいディレクトリ名を使用します
- プロジェクトのセットアップに従って、各新しいワークツリーで開発環境を初期化することを忘れないでください。スタックによっては、以下が含まれる場合があります:
- JavaScriptプロジェクト:依存関係のインストール(
npm install
、yarn
) - Pythonプロジェクト:仮想環境のセットアップまたはパッケージマネージャーでのインストール
- その他の言語:プロジェクトの標準セットアッププロセスに従う
- JavaScriptプロジェクト:依存関係のインストール(
次のステップ
Claude Codeリファレンス実装
開発コンテナリファレンス実装をクローンします。