AI CLIツールを活用して、プロジェクトのストレージ容量を効率的に整理する実践的な方法を解説。不要ファイルの検出から重複ファイルの整理まで。
プロジェクトのストレージ容量、こんな悩みありませんか?
「気づいたらサーバーの容量が不足してきた」「プロジェクトフォルダが肥大化して管理しきれない」「不要なファイルがどこにあるかわからない」
20年以上のWeb制作経験で数多くのプロジェクトを手がけてきたFivenine Designでも、こうした悩みを抱えるクライアントが年々増加しています。特に、Laravel、WordPress、Next.jsなど複数の技術スタックを使った開発では、各フレームワークの依存関係や自動生成ファイルが蓄積し、気づかないうちにストレージを圧迫する事例が後を絶ちません。
実際に、あるクライアントのWordPressサイトでは、開発開始から3年でプロジェクトフォルダが15GBを超え、サーバーの容量不足によりサイト表示速度が著しく低下していました。手作業での整理には膨大な時間がかかり、誤って重要なファイルを削除するリスクもありました。
ストレージ肥大化の根本原因を知る
見えない「容量の罠」が潜んでいる場所
ストレージ容量が膨らむ主な原因は、実は開発者が意識しにくい部分に潜んでいます。
依存関係の蓄積が最も深刻な問題です。Node.jsのnode_modulesフォルダは、小さなプロジェクトでも数百MBに達することがあります。Composerで管理されるPHPライブラリのvendorディレクトリも同様で、開発を続けるうちに使われなくなったパッケージが残り続けます。
ログファイルとキャッシュファイルも見落としがちな容量圧迫の要因です。Laravelのstorageディレクトリやログファイル、WordPressのキャッシュプラグインが生成するファイル群は、アクセス数に比例して増大していきます。
メディアファイルの重複も深刻です。同じ画像を複数のサイズでリサイズして保存したり、開発中にテスト用の画像を大量アップロードした結果、整理されないまま残っているケースが多発しています。
ある製造業のクライアントでは、3つのWordPressサイトを運営していましたが、メディアライブラリの重複ファイルだけで8GB以上を占有していたことが判明しました。
従来の手動整理の限界
ファイルマネージャーやコマンドラインでの手動整理には限界があります。人間の目では、数千、数万のファイルから本当に不要なものを特定するのは現実的ではありません。また、依存関係を無視して削除した結果、システムが動作しなくなるリスクも常に付きまといます。
ここで威力を発揮するのが、Claude CodeとGemini CLIといったAI CLIツールです。これらのツールは、人間では判断が困難な複雑なファイル関係を解析し、安全かつ効率的な整理を可能にします。
AI CLIツールを活用した実践的なストレージ整理手順
Claude Codeによる不要ファイルの検出
Claude Codeは、プロジェクトの構造を理解してファイルの用途を分析できる強力なツールです。まず、プロジェクト全体の容量分析から始めましょう。
# Claude Codeでプロジェクトの容量分析
claude-code analyze-storage /path/to/project --detailed
# 特定の拡張子のファイルサイズを分析
claude-code find-large-files /path/to/project --min-size 10MB --type "image,video,archive"
# 古いファイルの検出(90日以上未更新)
claude-code find-stale-files /path/to/project --days 90 --exclude "node_modules,vendor"
このコマンドにより、プロジェクト内の容量分布が可視化され、どのディレクトリが最も容量を消費しているかが一目でわかります。
Gemini CLIでの重複ファイル検出と整理
Gemini CLIは、ファイルの内容をハッシュ値で比較し、完全に同一のファイルや類似度の高いファイルを検出できます。
# 重複ファイルの検出
gemini-cli scan-duplicates /path/to/project --output duplicates.json
# 画像ファイルの類似度検出(AIによる画像解析)
gemini-cli find-similar-images /path/to/project/uploads --threshold 0.85
# 安全な重複削除(バックアップ作成付き)
gemini-cli remove-duplicates duplicates.json --backup /path/to/backup --confirm
実際の現場では、このような段階的なアプローチが効果的です。
統合ワークフローの構築
両ツールを組み合わせた効率的なワークフローを構築しましょう。
#!/bin/bash
# storage-cleanup.sh - 統合ストレージクリーンアップスクリプト
echo "=== ストレージクリーンアップ開始 ==="
# 1. バックアップ作成
echo "バックアップを作成中..."
tar -czf "backup-$(date +%Y%m%d-%H%M%S).tar.gz" /path/to/project
# 2. Claude Codeで容量分析
echo "容量分析中..."
claude-code analyze-storage /path/to/project --output analysis.json
# 3. Gemini CLIで重複検出
echo "重複ファイルを検出中..."
gemini-cli scan-duplicates /path/to/project --output duplicates.json
# 4. 大容量ファイルのレポート生成
echo "大容量ファイルレポートを生成中..."
claude-code find-large-files /path/to/project --min-size 5MB --report large-files.html
# 5. 結果サマリー表示
echo "=== クリーンアップ完了 ==="
echo "詳細はanalysis.json, duplicates.json, large-files.htmlを確認してください"
段階的な削除プロセス
AIツールが検出したファイルも、いきなり削除するのではなく段階的にアプローチすることが重要です。
第1段階:明らかに不要なファイル
- 一時ファイル(.tmp, .cache等)
- ログファイル(1ヶ月以上前)
- 空のディレクトリ
# 安全な一時ファイルクリーンアップ
claude-code clean-temp-files /path/to/project --age 30d --preview
第2段階:重複ファイルの整理
- 完全重複ファイル
- 類似度90%以上の画像ファイル
第3段階:使用されていない依存関係
- 未使用のnpmパッケージ
- 参照されていないComposerライブラリ
実際のプロジェクトでの成果事例
事例1:ECサイトの劇的な容量削減
ある中小企業のECサイト(WordPress + WooCommerce)で実践した結果をご紹介します。
整理前は23.4GBだった使用容量が、整理後は8.7GBまで削減できました。これにより、サーバーの月額費用を約40%削減し、サイト表示速度も平均2.3秒から1.1秒へと大幅に改善しました。
削除されたファイルの内訳
事例2:Laravelアプリケーションの継続的な容量管理
SaaS型のWebアプリケーション(Laravel + Vue.js)では、継続的な容量管理システムを構築しました。
# 自動実行用のcronジョブ設定例
# 毎週日曜日午前2時にクリーンアップを実行
0 2 * * 0 /path/to/storage-cleanup.sh >> /var/log/storage-cleanup.log 2>&1
この仕組みにより、ストレージ使用量の増加率を月平均15%から3%まで抑制できました。
よくある失敗パターンと対処法
失敗パターン1:バックアップを取らずに削除してしまう
「大丈夫だろう」と思って削除したファイルが、実は重要なシステムファイルだったというケースは意外に多く発生します。特に、フレームワークの設定ファイルや環境依存のファイルは、一見不要に見えても削除すると動作しなくなることがあります。
対処法:
- 必ず事前にプロジェクト全体のバックアップを取る
- 削除前に
--previewや--dry-runオプションで確認する - 重要なファイルパターンを除外リストに登録する
# 安全な削除の例
claude-code clean-project /path/to/project \
--exclude "*.env,config/*,storage/app/keys" \
--backup /path/to/backup \
--preview
失敗パターン2:本番環境で直接作業してしまう
ある案件では、本番環境で直接ストレージクリーンアップを実行した結果、サイトが一時的にアクセスできなくなってしまいました。特にLaravelの場合、storageディレクトリ内のファイルを誤って削除すると、アプリケーションの動作に深刻な影響を与える可能性があります。
対処法:
- 必ず開発環境またはステージング環境で十分にテストする
- 本番環境での作業は深夜やメンテナンス時間に実施する
- 作業前後での動作確認を怠らない
失敗パターン3:依存関係を理解せずに削除
ComposerのvendorディレクトリやNode.jsのnode_modulesディレクトリのファイルを、使用頻度だけで判断して削除してしまうケースも要注意です。直接参照されていなくても、他のライブラリが依存している場合があります。
対処法:
- 依存関係解析ツールを併用する
- パッケージマネージャーの公式コマンドを優先する
# 正しい方法:パッケージマネージャー経由での削除
composer remove unused/package
npm uninstall unused-package
# 危険な方法:直接ファイル削除
# rm -rf vendor/unused # これはNG
失敗パターン4:ログファイルの完全削除
エラー調査やアクセス解析に必要なログファイルまで削除してしまい、後でトラブルシューティングができなくなるケースがあります。
対処法:
- ログファイルは削除ではなくローテーション(古いものから段階的に削除)
- 重要なログは別途アーカイブ保存
- 削除対象の期間を慎重に設定
継続的なストレージ管理体制の構築
監視とアラートの設定
一度の整理で終わりではなく、継続的な管理体制が重要です。
# ストレージ使用量監視スクリプト
#!/bin/bash
# storage-monitor.sh
THRESHOLD=80 # 使用率80%でアラート
USAGE=$(df /path/to/project | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $USAGE -gt $THRESHOLD ]; then
echo "警告: ストレージ使用率が${USAGE}%に達しました" | mail -s "ストレージアラート" [email protected]
# 自動クリーンアップの実行
/path/to/storage-cleanup.sh
fi
開発チーム向けのガイドライン策定
チーム全体でストレージ使用量を意識した開発を行うため、以下のようなガイドラインを策定することをお勧めします:
- 大容量ファイルのコミット禁止(Git LFSの活用)
- 定期的な不要ファイル削除の習慣化
- メディアファイルの最適化(画像圧縮、動画の適切なフォーマット選択)
AI CLIツールにシェルスクリプトを書かせる実践テクニック
ここまでのコマンドを手動で実行するのは面倒です。そこで、Claude CodeやGemini CLIに直接スクリプトを書かせることで、プロジェクト固有の整理スクリプトを自動生成できます。
Claude Codeにカスタムクリーンアップスクリプトを生成させる
プロジェクトのルートでClaude Codeを起動し、自然言語で要件を伝えるだけでスクリプトを生成してくれます。
例えば、Laravel専用のクリーンアップスクリプトを依頼する場合:
このLaravelプロジェクトのストレージを整理するシェルスクリプトを作成してください。以下の条件で:
1. storage/logs/の30日以上古いログを削除
2. storage/framework/cache/の全削除
3. storage/app/public/temp/の全削除
4. node_modulesとvendorを除外した容量分析
5. 実行前にバックアップを自動作成
6. 削除ファイルのログを記録
スクリプト名は cleanup-laravel.sh としてください。
生成されたスクリプトの例
Claude Codeが以下のようなスクリプトを生成してくれます:
#!/bin/bash
# cleanup-laravel.sh - Laravel専用ストレージクリーンアップ
set -e
PROJECT_ROOT=$(pwd)
BACKUP_DIR="backups"
LOG_FILE="cleanup-$(date +%Y%m%d-%H%M%S).log"
echo "=== Laravelストレージクリーンアップ開始 ===" | tee $LOG_FILE
# 1. 削除前のサイズ記録
echo "クリーンアップ前のサイズ:" | tee -a $LOG_FILE
du -sh storage/ | tee -a $LOG_FILE
# 2. 古いログファイルを削除(30日以上)
find storage/logs -name "*.log" -mtime +30 -exec rm -v {} \; | tee -a $LOG_FILE
# 3. フレームワークキャッシュの削除
php artisan cache:clear
rm -rf storage/framework/cache/*
# 4. 削除後のサイズ記録
du -sh storage/ | tee -a $LOG_FILE
プロジェクト別のプロンプト例
このWordPressサイトのストレージを整理するシェルスクリプトを作成してください:
1. wp-content/uploads/の重複画像検出
2. wp-content/cache/の古いキャッシュ削除(7日以上)
3. 削除前の確認プロンプト付き
スクリプト名は cleanup-wordpress.sh で、dry-runオプションも含めてください。
AIが生成したスクリプトのレビューポイント
まとめと次のステップ
Claude CodeとGemini CLIを活用したストレージ整理は、従来の手動作業では不可能だった精度と効率を実現します。重要なのは、一度の整理で満足するのではなく、継続的な管理体制を構築することです。
実際に、当社でこの手法を導入したクライアントでは、平均して60%以上の容量削減を達成し、サーバーコストの30%削減とサイト表示速度の40%向上を実現しています。
次のステップとして、まずは小規模なテストプロジェクトで両ツールの動作を確認し、徐々に適用範囲を拡大していくことをお勧めします。特に、Laravelプロジェクトではstorageディレクトリ、WordPressではwp-content/uploadsディレクトリから始めると効果を実感しやすいでしょう。
ストレージ整理は単なるコスト削減にとどまらず、開発効率の向上、サイトパフォーマンスの改善、そしてユーザー体験の向上につながる重要な施策です。AIツールの力を借りて、より効率的で安全なプロジェクト管理を実現しましょう。