Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Claude Code メモリ管理と効率的な開発手法

Avatar for papa_developer papa_developer
July 16, 2025
1.7k

Claude Code メモリ管理と効率的な開発手法

Claude Code は、高度なメモリ管理機能と柔軟な開発ワークフローへの統合により、開発者の生産性を飛躍的に向上させる強力なツールです。
本資料で紹介したメモリ管理術や効率的な開発手法を実践することで、よりスムーズで質の高い開発を実現し、未来のコーディングを体験できるでしょう。

Avatar for papa_developer

papa_developer

July 16, 2025
Tweet

Transcript

  1. はじめに Claude Code とは? Claude Code は、Anthropic が開発した AI を活用したコーディング支援ツール

    です。Claude Opus 4 をターミナルに組み込み、コードベースを深く理解し、 ルーチンタスクの実行やコードの説明を通じて開発を加速させます。 2
  2. メモリ管理術 Claude Code の「記憶」機能: CLAUDE.md の 活用 Claude Code は、CLAUDE.md

    ファイルを通じて「記憶」を管理します。これに より、セッション間でコンテキストを維持し、より賢く、効率的な対話が可能 になります。CLAUDE.md は、Claude Code がプロジェクトの全体像や特定のコ ンテキストを理解するために非常に重要です。 3
  3. CLAUDE.md の種類と配置、そしてその活用例 CLAUDE.md には、配置場所によって 3 つの種類があり、それぞれ異なるスコー プで Claude Code にコンテキストを提供します。

    プロジェクトメモリ ( 共有): ./CLAUDE.md 目的: プロジェクト全体で共有される情報や設定を記述します。チ ームメンバー全員が同じコンテキストで Claude Code を利用でき るようにするために使われます。 活用例: プロジェクトの目的、主要な技術スタック、コーディング 規約、重要なファイルパス、特定のドメイン知識などを記述しま す。 4
  4. # プロジェクト概要 このプロジェクトは、ユーザー管理システムを構築するためのバックエンド API です。 主要技術スタック: Rust, Axum, Tokio, Diesel

    データベース: PostgreSQL # コーディング規約 - Rustfmt を適用すること - エラーハンドリングは`thiserror`を使用すること 5
  5. プロジェクトメモリ ( 個人): ./CLAUDE.local.md 目的: 個人の開発環境に特化した情報や設定を記述しま す。.gitignore に追加することで、個人の設定がリポジリにコミ ットされるのを防ぎます。 活用例:

    個人の開発環境のパス設定、特定のデバッグ情報、個人的 なメモ、一時的な実験に関する記述など。 # 個人設定 ローカル開発環境の DB 接続情報: postgresql://user:password@localhost/mydb 現在デバッグ中のモジュール: `src/handlers/user.rs` 6
  6. ユーザーメモリ: ~/.claude/CLAUDE.md 目的: ユーザー全体の設定や、複数のプロジェクトで共通して利用 したい情報を記述します。これは、すべての Claude Code セッシ ョンに適用されます。 活用例:

    よく使うコマンド、個人的なコーディングスタイル、特定 のライブラリに関する知識、一般的なベストプラクティスなど。 # 共通設定 Rust のエラーハンドリングは常に`thiserror`と`anyhow`を推奨します。 非同期処理には`tokio`を基本とします。 7
  7. ルーチンタスクの自動化と具体例: 例 1: テストコードの自動生成: 「src/lib.rs のadd 関数に対する単 体テストを生成してください」と指示することで、テストフレーム ワークに合わせたテストコードを自動生成させることができます。 例

    2: リファクタリングの支援: 「この関数をより汎用的にリファク タリングし、エラーハンドリングを改善してください」と指示する ことで、コードの品質向上を AI に任せられます。 例 3: ドキュメント生成: 「このモジュールの API ドキュメントを生 成してください」と指示し、コードベースのドキュメント化を効率 化します。 10
  8. 拡張思考モード (Enhanced Reasoning Mode) の活用: 複雑な問題や、より深い分析が必要なタスクに対しては、Claude Code の「拡張思考モード」を活用します。これは、AI が複数のス テップを踏んで推論し、より詳細な解決策を導き出すための機能で

    す。 活用例: 「このパフォーマンスボトルネックの原因を特定し、改善 策を複数提案してください。その際、各改善策のトレードオフも考 慮してください。 」といった、多角的な分析を要するタスクに有効 です。 12
  9. AI とマニュアルの使い分け: 並列開発の促進と Git Worktree の活用 複数の機能を同時に開発したり、異なるアプローチを試したりする 際に、git worktree は非常に強力なツールです。これにより、単

    一のリポジトリから複数の作業ディレクトリを作成し、それぞれ異 なるブランチで作業を進めることができます。Claude Code と組み 合わせることで、AI による並列開発をさらに加速させることが可能 です。 13
  10. # メインプロジェクトのルートディレクトリにいることを確認 pwd # /path/to/your/main_project # feature-a ブランチ用の作業ツリーを作成 git worktree

    add ../project-feature-a feature-a # feature-b ブランチ用の作業ツリーを作成 git worktree add ../project-feature-b feature-b # project-feature-a ディレクトリに移動し、Claude CodeでAxum REST APIを実装 cd ../project-feature-a && claude-code "axum REST API実装" # project-feature-b ディレクトリに移動し、Claude CodeでTokio CLIツールを実装 cd ../project-feature-b && claude-code "tokio CLI ツール実装" 16
  11. このワークフローでは、以下のメリットがあります。 コンテキストの分離: 各worktree は独立した作業ディレクトリであるため、 Claude Code はそれぞれのプロジェクトのコンテキストに集中して作業でき ます。これにより、AI の「記憶」が混同されることなく、より的確なコード 生成が期待できます。

    高速な切り替え: ブランチを切り替える際に、コードベース全体を再ロード する必要がないため、開発環境の切り替えが非常に高速になります。 同時並行作業: 複数のフィーチャーやバグ修正を同時に進めることができ、 開発全体のリードタイムを短縮できます。 AI の効率的な活用: 異なる Claude Code インスタンスを立ち上げ、それぞれ に特化したタスクを割り当てることで、AI のリソースを最大限に活用し、開 発効率を向上させます 17
  12. Bun (JavaScript Runtime & Toolkit): 概要: JavaScript/TypeScript の高速なランタイム、バンドラー、タ スクランナー、パッケージマネージャーを統合したツールキットで す。Node.js

    の代替として注目されています。 導入方法: curl -fsSL https://bun.sh/install | bash # または npm を使用する場合 npm install -g bun 活用例: bun install で高速なパッケージインストール、bun run test でテスト実行、bun build でバンドルなど、開発の各フェー ズで高速化を実現します。 20
  13. Biome (Formatter & Linter): 概要: JavaScript/TypeScript/JSON/GraphQL/Markdown/CSS に対 応したフォーマッターとリンターを統合したツールです。Prettier と ESLint

    の機能を兼ね備え、高速な動作が特徴です。 導入方法: npm install --save-dev @biomejs/biome # またはグローバルインストール npm install -g @biomejs/biome 活用例: biome format . でコードの自動整形、biome lint . で潜 在的なバグやスタイル違反の検出を行い、コード品質を均一に保ち ます。VS Code などのエディタと連携することで、保存時に自動整 形・リンティングを行うことも可能です。 21
  14. tsgo (TypeScript Native): 概要: Go 言語で再実装された TypeScript コンパイラで、従来のtsc と比較して大幅なコンパイル速度の向上が期待されます。大規模な TypeScript

    プロジェクトでの開発体験を改善します。 導入方法: brew install sxzz/brew/tsgo # Homebrew (macOS/Linux) # または npm を使用する場合 npm install -g tsgo 活用例: tsgo --project ./src/tsconfig.json のように使用し、 TypeScript プロジェクトのビルド時間を短縮します。これにより、 開発サイクルが高速化し、AI によるコード生成後の検証も迅速に行 えます。 22
  15. 1. レッド (Red): 目的: 失敗するテストを書く。まだ実装されていない機能の振る舞い を定義し、そのテストが失敗することを確認します。 Claude Code との連携: Claude

    Code に「この機能のテストコード を書いてください。ただし、まだ実装はしないでください。 」と指示 し、期待する振る舞いを明確に記述させます。これにより、AI が機 能の要件を正確に理解する手助けとなります。 例: 「Calculator クラスにadd メソッドを追加し、2 つの数値を加算 するテストを書いてください。 」 25
  16. 2. グリーン (Green): 目的: テストを成功させる最小限のコードを書く。テストが通るよう に、必要最低限の実装を行います。この段階では、コードの美しさ や効率性は問いません。 Claude Code との連携:

    Claude Code に「前のステップで書いたテ ストが成功するように、最小限のコードを実装してください。 」と指 示します。AI はテストをパスすることに集中し、迅速に機能の実装 を進めます。 例: add メソッドを実装し、テストが成功することを確認します。 26
  17. 3. リファクタリング (Refactor): 目的: コードを改善する。テストが成功している状態を保ちながら、 コードの重複を排除したり、可読性を高めたり、設計を改善したり します。外部から見た振る舞いは変えずに、内部構造を改善します。 Claude Code との連携:

    Claude Code に「テストがすべてパスして いることを確認した上で、このコードをリファクタリングし、より 効率的で可読性の高いものにしてください。 」と指示します。AI はテ ストの安全ネットがあるため、安心してコードの改善に取り組めま す。 例: add メソッドの実装をより汎用的にしたり、命名規則を整えたり します。 27
  18. TDD のメリットと Claude Code との相乗効果: 品質の向上: テストを先に書くことで、機能の要件が明確になり、バグの早 期発見に繋がります。Claude Code が生成するコードも、テストによって品

    質が担保されます。 設計の改善: テストしやすいコードは、疎結合で凝集度の高い設計になりや すいです。AI もテストしやすい構造を意識してコードを生成するため、自然 と良い設計に導かれます。 自信を持った変更: テストスイートがあることで、コードの変更やリファクタ リングを安心して行えます。Claude Code による大規模な変更も、テストに よって安全性が保証されます。 AI の「学習」促進: テストコードが AI への具体的な指示となり、AI が期待 する振る舞いをより正確に理解できるようになります。これにより、AI の生 成するコードの質が継続的に向上します。 28
  19. Git Hooks と Lefthook による品質保証 Claude Code が生成したコードが、必ずしもプロジェクトの品質基準を満たす とは限りません。また、AI が意図しない変更を行う可能性も考慮する必要があ

    ります。そこで、Git Hooks と Lefthook を組み合わせることで、コミット前に 自動的にコードの品質チェックを行い、問題があればコミットをブロックする 仕組みを導入します。 29
  20. Git Hooks とは? Git Hooks は、Git の特定のアクション(コミット、プッシュなど) の前後で自動的にスクリプトを実行する機能です。これにより、コー ドの品質を強制したり、特定のワークフローを自動化したりできま す。

    Lefthook とは? Lefthook は、Git Hooks を管理するための高速で強力なツールです。 Go 言語で書かれており、複数のフックを並列で実行できるため、大 規模なプロジェクトでも効率的に動作します。pre-commit フックで Lint やテストを実行するのに特に適しています。 30
  21. Lefthook の導入と設定例: i. Lefthook のインストール: # Homebrew (macOS/Linux) brew install

    lefthook # npm (Node.jsプロジェクトの場合) npm install -g lefthook 31
  22. 2. lefthook.yml の作成: プロジェクトのルートディレクトリにlefthook.yml ファイルを作成 し、以下のように設定します。 # .lefthook/lefthook.yml pre-commit: commands:

    lint: run: npm run lint # または yarn lint, bun lint test: run: npm test # または yarn test, bun test この設定により、git commit を実行する前にnpm run lint とnpm test が実行されます。いずれかのコマンドが失敗した場合、コミット は中断されます。 32
  23. Claude Code との連携: Claude Code にコード生成や修正を指示した後、コミットを行う際に Lefthook が自動的に品質チェックを行います。これにより、AI が生成したコ ードがプロジェクトの品質基準を満たしているかを確認し、問題があれば開

    発者が手動で修正する機会が与えられます。これは、AI の「記憶」が完璧で はない場合でも、最終的なコード品質を保証するための重要なガードレール となります。 34
  24. コンテナ開発のメリット: 環境の隔離: Claude Code が実行するコマンドや生成するファイル はコンテナ内に閉じ込められるため、ホストマシンへの影響を最小 限に抑えられます。 環境の一貫性: チームメンバー全員が同じ開発環境を共有できるた め、

    「私のマシンでは動くのに… 」といった問題を解消できます。 依存関係の管理: プロジェクトに必要なツールやライブラリをコン テナイメージに含めることで、環境構築の手間を削減できます。 セキュリティ: AI が実行する可能性のある危険なコマンドからホス トマシンを保護します。 36
  25. Dev Containers (VS Code) を用いたセットアップ例: Dev Containers は、VS Code の拡張機能で、Docker

    コンテナを開発 環境として利用するための強力なツールです。 i. Docker のインストール: Docker Desktop (Windows/macOS) または Docker Engine (Linux) をインストールします。 ii. VS Code の拡張機能インストール: VS Code で「Dev Containers 」拡張機能をインストールしま す。 37
  26. 3. .devcontainer ディレクトリの作成: プロジェクトのルートディレクトリに.devcontainer ディレクトリを作 成し、その中にdevcontainer.json とDockerfile を作成します。 4. Dockerfile

    の例: ベースとなるイメージと、Claude Code の実行に必要な依存関係をイ ンストールします。ここでは Python の例を示しますが、プロジェクト の言語に合わせて変更してください。 # .devcontainer/Dockerfile FROM python:3.9-slim-buster # 必要なパッケージをインストール RUN apt-get update && apt-get install -y \ git \ curl \ unzip \ sudo \ && rm -rf /var/lib/apt/lists/* 38
  27. 5. devcontainer.json の例: Dev Container の設定を定義します。Dockerfile へのパス、VS Code の拡張機能、ポートフォワーディングなどを設定できます。 //

    .devcontainer/devcontainer.json { "name": "Claude Code Development Environment", "build": { "dockerfile": "Dockerfile", "context": "." }, "customizations": { "vscode": { "extensions": [ "ms-vscode.remote-explorer", "ms-vscode.remote-containers", "ms-python.python", "ms-toolsai.jupyter" ] } }, 39
  28. 6. Dev Container の起動: VS Code でプロジェクトを開き、左下隅の緑色のアイコンをクリックする か、コマンドパレット (Ctrl+Shift+P )

    から「Remote-Containers: Reopen in Container 」を選択します。これにより、コンテナがビルドされ、その中で開 発環境が起動します。 40
  29. 3. Task List 個別のタスク化 要件・設計を チケット に分解 #123 「ユーザー登録 API

    実装」 #124 「プロンプトテンプレート作成」 優先度・見積もり を添付 CI/CD パイプラインに組み込み ここでようやく Claude Code にて実装させる 「#123 のユーザー登録 API を実装するコードを生成してください」 「#124 のプロンプトテンプレートを作成してください」 47
  30. Claude Code が変えるエンジニア の働き方 AI との協調による新たな開発パラダイム Claude Code のような AI

    コーディングアシスタントの登場は、エンジニアの 働き方に大きな変革をもたらしつつあります。これは単なるツールの追加では なく、開発プロセスそのものの再定義を促すものです。 50
  31. 1. 役割の変化:コードジェネレーターからアーキテクト・レビューアへ ルーチンワークからの解放: AI がテストコードの生成、リファクタリング、 ドキュメント作成といった定型的な作業を担うことで、エンジニアはこれら のルーチンワークから解放されます。これにより、より創造的で高付加価値 な業務に集中できるようになります。 設計とアーキテクチャへの集中: エンジニアは、AI

    が生成したコードの品質 をレビューし、システム全体の設計やアーキテクチャの整合性を保つ役割に シフトします。複雑な問題解決や、システム全体の最適化といった、人間な らではの深い洞察が求められる領域に注力する時間が増えます。 プロンプトエンジニアリングの重要性: AI に的確な指示を出す「プロンプト エンジニアリング」のスキルが重要になります。いかに AI の能力を最大限に 引き出すかが、開発効率を左右する鍵となります。 51
  32. 2. 学習と成長の加速:AI をメンターとして活用 新しい技術スタックへの迅速な適応: 未知のライブラリやフレームワークに 直面した際、AI に基本的なコードパターンや使用例を生成させることで、学 習コストを大幅に削減できます。AI は、まるで経験豊富なメンターのよう に、必要な知識を即座に提供してくれます。

    ベストプラクティスの習得: AI は、大量のコードから学習しているため、特 定の言語やフレームワークにおけるベストプラクティスを提案できます。こ れにより、経験の浅いエンジニアでも、質の高いコードを書くための指針を 得やすくなります。 デバッグと問題解決の効率化: AI は、エラーメッセージの解析や、潜在的な バグの原因特定、解決策の提案を支援します。これにより、デバッグにかか る時間を短縮し、より多くの時間を開発に充てることができます。 52
  33. 3. チーム開発の変化:AI を「もう一人のメンバー」として統合 生産性の向上とリードタイムの短縮: AI がコード生成やリファクタリングを 高速化することで、チーム全体の生産性が向上し、機能開発のリードタイム が短縮されます。より多くの機能を、より早く市場に投入できるようになり ます。 コード品質の均一化:

    AI がコーディング規約やベストプラクティスに沿った コードを生成することで、チーム内のコード品質が均一化されます。これに より、コードレビューの負担が軽減され、チーム全体の開発効率が向上しま す。 コラボレーションの深化: AI は、チームメンバー間のコミュニケーションを 補完する役割も果たします。例えば、AI にコードの意図を説明させたり、設 計上の選択肢を議論させたりすることで、より深いレベルでのコラボレーシ ョンが可能になります。 53
  34. 4. 新たな課題と倫理的考慮 AI への過度な依存: AI に頼りすぎることで、エンジニア自身のスキルが陳腐 化するリスクがあります。AI の提案を鵜呑みにせず、常に批判的な視点を持 つことが重要です。 セキュリティとプライバシー:

    AI にコードベースを共有する際には、機密情 報の漏洩リスクや、AI が生成したコードに潜在的な脆弱性が含まれる可能性 を考慮する必要があります。コンテナ開発のような隔離された環境での利用 が推奨されます。 責任の所在: AI が生成したコードに問題があった場合の責任の所在を明確に する必要があります。最終的な品質保証は、依然として人間のエンジニアの 責任です。 54
  35. 59