CTS-KB
Tips

Windows Cドライブ ディスク管理リファレンス

#Windows #Docker #Node.js #WSL2 #ディスク管理

📋 この記事の対象

開発マシン(Windows 10/11)で Docker・Node.js・WSL2 を日常的に使っていると、気づかないうちに C ドライブが圧迫されます。

「何もインストールしていないのに残り 10GB…」という状態になる前に、定期的にクリーンアップしましょう。


🔍 容量を食っている犯人たち

犯人典型的なサイズ場所
Docker イメージ・ビルドキャッシュ10〜50 GB+%LOCALAPPDATA%\Docker\wsl
node_modulesプロジェクトあたり 200MB〜1GB各プロジェクト直下
npm / pnpm キャッシュ1〜10 GB%APPDATA%\npm-cache / %LOCALAPPDATA%\pnpm
WSL2 仮想ディスク10〜60 GB+%LOCALAPPDATA%\Packages\...\ext4.vhdx
Windows Update 残骸1〜10 GBC:\Windows\SoftwareDistribution
Temp ファイル1〜5 GB%TEMP%
NuGet キャッシュ1〜5 GB%USERPROFILE%\.nuget\packages
Playwright ブラウザ500MB〜1.5 GB%LOCALAPPDATA%\ms-playwright

🔧 クリーンアップ手順

1) まず現状把握

# C ドライブの空き容量
Get-PSDrive C | Select-Object Used, Free, @{N='FreeGB';E={[math]::Round($_.Free/1GB,1)}}

# 大きなフォルダを探す(ユーザーフォルダ配下)
# TreeSize Free や WizTree を使うと視覚的に確認できる

おすすめツール: WizTree(無料・高速)でどこが大きいか一目瞭然。

2) Docker のクリーンアップ

Docker は放置すると最も容量を食います。

# 未使用のコンテナ・イメージ・ボリューム・ネットワークを一括削除
docker system prune -a --volumes

# どれくらい使っているか確認
docker system df
コマンド削除対象
docker system prune停止コンテナ、未使用ネットワーク、ダングリングイメージ
docker system prune -a上記 + 全未使用イメージ
docker system prune -a --volumes上記 + 未使用ボリューム(DB データ等も消えるので注意)
docker builder pruneビルドキャッシュのみ削除

注意: --volumes を付けると DB のデータボリュームも消えます。必要なデータがある場合は外してください。

3) Node.js / npm / pnpm のクリーンアップ

# npm キャッシュの削除
npm cache clean --force

# npm キャッシュのサイズ確認
npm cache ls 2>$null | Measure-Object | Select-Object Count

# pnpm を使っている場合
pnpm store prune

# グローバルの不要パッケージを確認
npm ls -g --depth=0

古いプロジェクトの node_modules 一括削除

長期間触っていないプロジェクトの node_modules を削除すると大幅に空きます。

# 指定フォルダ配下の node_modules を検索(削除前の確認)
Get-ChildItem -Path "C:\Users\$env:USERNAME\Projects" -Recurse -Directory -Filter "node_modules" |
  Select-Object FullName, @{N='SizeMB';E={
    [math]::Round((Get-ChildItem $_.FullName -Recurse -File | Measure-Object Length -Sum).Sum/1MB, 0)
  }} | Sort-Object SizeMB -Descending

# 確認後、一括削除(npx npkill を使うと対話的に選べる)
npx npkill

npkill は node_modules を一覧表示し、スペースキーで選択削除できる便利ツールです。npm install で復元できるので安心して消せます。

4) WSL2 仮想ディスクの圧縮

WSL2 の仮想ディスク(ext4.vhdx)は ファイルを消しても自動で縮小されません。手動で圧縮が必要です。

# WSL を停止
wsl --shutdown

# 仮想ディスクの場所を確認(Docker Desktop の場合)
ls "$env:LOCALAPPDATA\Docker\wsl\data\ext4.vhdx"

# 圧縮(管理者 PowerShell)
Optimize-VHD -Path "$env:LOCALAPPDATA\Docker\wsl\data\ext4.vhdx" -Mode Full

# Hyper-V が無い環境では diskpart を使用
# diskpart
# select vdisk file="C:\Users\{ユーザー名}\AppData\Local\Docker\wsl\data\ext4.vhdx"
# compact vdisk
# exit

5) Windows 標準のクリーンアップ

# ディスククリーンアップ(管理者)
cleanmgr /d C /sageset:1
# → Windows Update のクリーンアップ、一時ファイル等にチェックを入れて実行

# Temp フォルダの削除
Remove-Item "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue

# Windows Update キャッシュ(管理者)
Stop-Service wuauserv
Remove-Item "C:\Windows\SoftwareDistribution\Download\*" -Recurse -Force
Start-Service wuauserv

6) その他の開発ツール

# NuGet キャッシュ(.NET 開発者向け)
# ⚠️ 下記の注意を必ず読んでから実行すること
dotnet nuget locals all --clear

# Playwright ブラウザの古いバージョン削除
# (プロジェクトで使っているバージョン以外)
npx playwright install --dry-run  # 確認

# Gradle キャッシュ(Java/Android 開発者向け)
Remove-Item "$env:USERPROFILE\.gradle\caches" -Recurse -Force -ErrorAction SilentlyContinue

⚠️ NuGet キャッシュ削除の注意: dotnet nuget locals all --clear を実行すると、ローカルにキャッシュされた すべての NuGet パッケージが消えます。次回ビルド時にパッケージの再ダウンロードが必要になりますが、オフライン環境や社内プロキシ経由の場合、パッケージが取得できずビルドエラーになることがあります。

実行前に以下を確認してください:

  • NuGet のパッケージソース(nuget.org や社内フィード)にアクセスできるか
  • 既存プロジェクトで dotnet restore が通るか(1 つ試してから全削除する)

安全策: 全削除ではなく、http-cache のみ削除するとリスクが低いです。

dotnet nuget locals http-cache --clear

📅 定期クリーンアップのおすすめ頻度

作業頻度効果
docker system prune -a週 1 回大(10GB+ 回復することも)
npx npkill(古い node_modules)月 1 回中〜大
npm cache clean --force月 1 回小〜中
WSL2 vhdx 圧縮月 1 回中(Docker 使用時)
Windows ディスククリーンアップ月 1 回小〜中

⚠️ 削除してはいけないもの

  • C:\Users\{ユーザー名}\.ssh — SSH 鍵(消すとリモート接続不可)
  • C:\Users\{ユーザー名}\.gitconfig — Git 設定
  • C:\Users\{ユーザー名}\.aws — AWS 認証情報
  • Docker ボリューム(名前付き) — DB データが入っている可能性あり
  • C:\Windows\WinSxS — Windows システムフォルダ(絶対に手動削除しない)

❓ よくある質問

Q1. node_modules を消しても大丈夫? npm install / pnpm install で復元できます。package.jsonpackage-lock.json さえあれば問題ありません。

Q2. Docker イメージを全部消してしまった docker compose pulldocker compose build で再取得・再ビルドできます。初回は時間がかかりますが、データの損失はありません。

Q3. WSL2 の vhdx を圧縮しても小さくならない WSL 内でまず不要ファイルを削除してから圧縮してください。WSL 内で sudo apt clean && sudo apt autoremove を実行すると効果的です。

Q4. どうしても容量が足りない D ドライブがある場合、Docker Desktop の設定で「データディレクトリ」を D ドライブに移動できます。WSL2 のディストリビューションも wsl --export / wsl --import で移動可能です。