🍜

Claude Code始めました

に公開

こんにちわ

仕事で使うことになりそうだから、キャッチアップ開始。
これ無しじゃ今後だめなんだろうというのをひしひし感じる。
本記事はClaude Codeを始める上で、最重要と思われるエッセンスだけ紹介する。

メモリ(CLAUDE.md)がめっちゃ大事そう

メモリとは、Claude Codeに指示を出す時、自動的にコンテキストに含まれる設定。
コーディングルールや、プロジェクトの仕様、技術スタック等あらかじめ情報を与えておいて
アウトプットを最適化する。このファイルを育てていくのが鍵になりそう。
/init コマンドを実行すると作成される。

プロジェクトルートだけでなく、子ディレクトリでもCLAUDE.mdを作成できる。
大きなプロジェクトの場合、全てを理解させるのは難しいため、
例えば、cd backend && /initとして、スコープを絞ってCLAUDE.mdを作成することもできる。

メモリの切り分けについてはもっと調査したいと思っていて、そのうち記事にしたい。
メモリの中で@path/to/fileを記載することで、情報をインポートできるのだが
claudeさん曰く、各ディレクトリに作成したメモリは明示的にインポートしないでいいらしい。
ただ、この機能の説明は@path/to/CLAUDE.mdと記載することで理解の助けになりそうな気もする。
要調査。

"#"から文章を入力すると、設定をメモリに追加できる。

対話モードにおいて、"#"から入力することでメモリに設定を追加できる。
開発を通して、適宜追加していくような流れになると思われる。

zsh
  # CLAUDE.mdは日本語で記入してください

入力してエンターすると、どのメモリに設定を追加するかの選択肢が表示される。

  • プロジェクト特有のメモリ ./CLAUDE.md
  • ユーザーのメモリ ~/.claude/CLAUDE.md
  • プロジェクト特有のメモリ ./CLAUDE.local.md (ローカル・非推奨)
    ※公式で非推奨となっており、インポート機能を使う事を推奨している。

ユーザーのメモリには、上のコマンドで指定したような言語設定。
プロジェクトのメモリには、技術スタックなどを設定することになるだろう。

スラッシュコマンドについて

対話モード中において、Claude Codeの動作を制御するコマンド。
大事そうに思ったものを数個紹介。

/init

初回、プロジェクトルートで必ず実行する。プロジェクトを理解してくれる。

スラッシュコマンドのinitで何をしてるのか、ざっくり教えて。

/initスラッシュコマンドは、Claude Codeがプロジェクトを理解するための初期セットアップを行います。

主な機能:

  • プロジェクト構造の分析
  • 依存関係の確認(package.json、requirements.txtな
    ど)
  • 主要なファイルの読み込み
  • 開発コマンドの特定
  • CLAUDE.mdファイルの作成/更新

実行タイミング:

  • 初回: 新しいプロジェクトで必須
  • 再実行が推奨される場合:
  • プロジェクト構造が大幅に変更された時
  • 新しいフレームワークやライブラリを追加した時
  • 開発コマンドが変更された時
  • CLAUDE.mdの内容を更新したい時

コードの小さな変更では不要ですが、アーキテクチャレベルの変更があった場合は再実行することで、Claude Codeがプロジェクトをより正確に理解できるようになります。

/clear, /compact

コンテキスト(今までの会話)をクリア、要約する。
コンテキストが長すぎると、トークンの量が増えてしまったり、精度が下がったりする。
ただ、デフォルトでAuto-compactがtrueにはなっている。(/configで設定可能)

/compactコマンドは、会話履歴を圧縮してメモリ使用量を削減するコマンドです。

主な機能:

  • 長い会話履歴を要約して圧縮
  • 重要な情報(コード変更、決定事項など)を保持
  • トークン使用量とコストを削減
  • 会話の流れは維持しつつサイズを最適化

実行タイミング:

  • 推奨される場合:
    • 会話が非常に長くなった時
    • レスポンスが遅くなってきた時
    • コスト削減したい時
    • 新しいタスクに集中したい時

注意点:

  • 圧縮により一部の詳細情報が失われる可能性
  • 重要な文脈が必要な作業中は避ける
  • 圧縮後は元に戻せない

長時間の開発セッションや複数のタスクを跨ぐ場合に、パフォーマンスとコストの最適化に有効です。

/cost

今回のセッションでのトークンのコストを表示する。
対話モードに入ってから終わるまで。

/memory

メモリファイルを開いて直接編集できる。

Claude Codeのベストプラクティスについて

Anthropic自身がClaude Codeのベストプラクティスを紹介している。
本記事最後にリンクを貼っておく。
ここでは一番基本的な使い方になるであろうワークフローのみを和訳して紹介する。

調査、計画、実装、コミット ワークフロー

このワークフローは多くの問題に適している。

1. 調査

Claudeに関連ファイル、画像、URLを読むよう依頼する。
この段階ではコードを書かないように明示的に伝えることも重要。
(ワークフローの中で、特に複雑な問題に対してサブエージェント※の積極的な活用を検討すべき部分である。詳細の確認や特定の疑問点の調査にサブエージェントを使用するよう指示することは、特に会話やタスクの初期段階で効果的。これにより、効率性をほとんど損なうことなくコンテキストの可用性を維持する傾向がある。)

※サブエージェントは、claude codeの機能の一つ。結構重要そう。

2. 計画

問題に対して、どのようにアプローチするか計画を立てるよう依頼する。
「think(考える)」という単語を使用して拡張思考モードを起動することをお勧めする。
これにより計算時間やトークンの上限が上がる。
思考予算レベル: 「think」<「think hard」<「think harder」<「ultrathink」
この結果が妥当だと思われる場合は、その計画をドキュメントやGitHubイシューとして作成させることができる。
これにより、実装(ステップ3)が望むものでなかった場合に、この地点にリセットすることができる。

3. 実装

Claude にその解決策をコードとして実装するよう依頼する。
また、実装の各ステップにおいて、その解決策が妥当であるかを明示的に検証するよう依頼するのも、このタイミングが適している。

4. コミット

Claudeに結果をコミットしてプルリクエストを作成するよう依頼する。
必要な場合、Claudeが行ったことの説明を含めてREADMEやチェンジログを更新させるのにも良いタイミング。

ステップ1-2は重要で、これがないとClaudeはすぐにコーディングに進みがち。
事前の調査と計画を依頼することで、深い思考が必要な問題のパフォーマンスが大幅に向上する。

最後に

まだまだ勉強始めたばかり。
次回以降はCLAUDE.md、サブエージェント、MCPについて掘り下げていきたいと思う。

リンク

https://docs.anthropic.com/ja/docs/claude-code/getting-started
https://www.anthropic.com/engineering/claude-code-best-practices

Discussion