.gitignoreとClaude Code ― 読み込みファイルの最適制御
ファイル探索の仕組みを理解し、ノイズを減らして精度を上げる
はじめに
Claude Codeがプロジェクト内のファイルを探索するとき、不要なファイルまで読み込んでしまうと、コンテキストが無駄に消費され、応答の精度も低下します。.gitignoreを正しく設定し、Claude Codeが「見るべきファイル」だけに集中できる環境を整えましょう。
この記事では、Claude Codeのファイル探索の仕組みから、フレームワーク別の推奨テンプレートまでを解説します。
Claude Codeのファイル探索の仕組み
Claude Codeはプロジェクトのファイル構造を理解するために、いくつかの方法でファイルを探索します。
探索のメカニズム
- プロジェクトルートの認識:
.gitディレクトリやpackage.json等からプロジェクトルートを特定 - ファイルツリーのスキャン:ディレクトリ構造を読み取り、プロジェクトの全体像を把握
- 関連ファイルの読み込み:ユーザーの指示に関連するファイルを選択的に読み込み
- 除外パターンの適用:
.gitignoreに記載されたパターンはスキャン対象から除外される
ファイルが読み込まれるタイミング
| タイミング | 読み込まれるファイル | トークン消費 |
|---|---|---|
| セッション開始時 | CLAUDE.md、プロジェクト構造 | 少量 |
| ユーザーの指示時 | 指示に関連するファイル | 中程度 |
| コード検索時 | grep/glob結果のファイル | 中〜大 |
| コード変更時 | 変更対象ファイルと関連ファイル | 中程度 |
.gitignoreの影響
.gitignoreに記載されたパターンは、Claude Codeのファイル探索でも除外されます。つまり、.gitignoreの整備がClaude Codeのパフォーマンスに直結します。
影響の比較
| 項目 | .gitignoreなし | .gitignore整備済み |
|---|---|---|
| スキャン対象ファイル数 | 10,000+ | 500 |
| 初回探索時間 | 遅い | 高速 |
| ノイズ(無関係なファイル) | 非常に多い | 少ない |
| AIの精度 | 低い(情報過多) | 高い(関連情報に集中) |
| トークン消費 | 多い | 適切 |
node_modulesフォルダだけでも数万ファイル・数百MBになることがあります。これを除外するだけでClaude Codeのパフォーマンスが劇的に改善します。
除外すべきファイルの種類
プロジェクトの種類に関わらず、以下のカテゴリのファイルは除外すべきです。
1. 依存パッケージ
# Node.js
node_modules/
# PHP
vendor/
# Python
venv/
__pycache__/
*.pyc
# Ruby
.bundle/
理由:サードパーティライブラリのソースコードは、あなたのコードではありません。必要なら公式ドキュメントを参照させましょう。
2. ビルド出力
# JavaScript/TypeScript
dist/
build/
.next/
.nuxt/
out/
# CSS
*.min.css
*.css.map
# JavaScript
*.min.js
*.js.map
理由:ビルド出力はソースコードから自動生成されます。ソースコードだけを見れば十分です。
3. バイナリ・メディアファイル
# 画像
*.png
*.jpg
*.jpeg
*.gif
*.ico
*.svg
# フォント
*.woff
*.woff2
*.ttf
*.eot
# その他バイナリ
*.pdf
*.zip
*.tar.gz
理由:バイナリファイルはテキストとして読めず、大きなトークンを消費するだけです。
4. データファイル・ログ
# ログ
*.log
logs/
# データベース
*.sqlite
*.db
# キャッシュ
.cache/
tmp/
temp/
# 大量データ
*.csv
*.json # 大きなデータファイルのみ
fixtures/large-data/
理由:ログやデータファイルは非常に大きくなることがあり、AIの理解に寄与しません。
5. IDE・OS固有のファイル
# IDE
.idea/
.vscode/settings.json
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
desktop.ini
理由:個人の開発環境設定はプロジェクトのコードとは無関係です。
.claudeignoreの活用
Gitには追跡したいがClaude Codeには読ませたくないファイルがある場合は、プロンプトで明示的に除外を指示するか、CLAUDE.mdに除外パターンを記載します。
CLAUDE.mdでの除外指示
# CLAUDE.md
## ファイル読み込みの注意
以下のディレクトリ・ファイルは参照不要です:
- docs/api-reference/ (自動生成のAPIドキュメント)
- tests/fixtures/snapshots/ (大量のスナップショットファイル)
- migrations/ (古いマイグレーションファイルは無視してよい。最新5件のみ参照)
- public/uploads/ (ユーザーアップロードファイル)
プロンプトでの除外指示
# 特定のディレクトリを無視するよう指示
> src/components/配下のコンポーネントを調べてください。
> ただし、src/components/legacy/は無視してください。
フレームワーク別.gitignoreテンプレート
PHP (Laravel)
/vendor/
/node_modules/
/public/hot
/public/storage
/storage/*.key
/storage/framework/
/storage/logs/
.env
.env.backup
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
/.idea
/.vscode
JavaScript/TypeScript (Next.js)
node_modules/
.next/
out/
build/
*.tsbuildinfo
.env*.local
npm-debug.log*
yarn-debug.log*
.vercel
coverage/
.nyc_output/
Python (Django)
__pycache__/
*.py[cod]
*.so
venv/
.env
db.sqlite3
media/
staticfiles/
*.log
.coverage
htmlcov/
.mypy_cache/
.pytest_cache/
静的サイト(HTML/CSS/JS)
node_modules/
dist/
build/
*.min.css
*.min.js
*.map
.cache/
.DS_Store
Thumbs.db
最適化のチェックリスト
ファイル制御の最適化手順
- .gitignoreの確認:依存パッケージ、ビルド出力、バイナリが除外されているか
- ファイル数の確認:
git ls-files | wc -lでGit追跡ファイル数を確認(500以下が理想) - 大きなファイルの特定:
git ls-files | xargs wc -l | sort -rn | head -20で行数の多いファイルを特定 - 不要な追跡ファイルの除外:自動生成ファイルやデータファイルを.gitignoreに追加
- CLAUDE.mdの更新:読み込み不要なディレクトリを明記
- テスト:Claude Codeでファイル検索を実行し、ノイズが減っていることを確認
まとめ
ファイル制御のポイントを整理します。
| 対策 | 効果 | 優先度 |
|---|---|---|
| .gitignoreで依存パッケージを除外 | ファイル数を大幅削減 | 必須 |
| ビルド出力の除外 | 重複情報の排除 | 必須 |
| バイナリファイルの除外 | 無意味な読み込みを防止 | 必須 |
| ログ・データファイルの除外 | 巨大ファイルの読み込み防止 | 高 |
| CLAUDE.mdで追加の除外を指示 | Git追跡ファイルの選別 | 中 |
| 定期的なファイル数チェック | 設定の劣化を防止 | 低 |
.gitignoreの整備は数分でできる作業ですが、Claude Codeの応答速度・精度・コストに大きな影響を与えます。まだ整備していないプロジェクトがあれば、今すぐ取り掛かりましょう。