# WindowsのVS Codeが使う容量: キャッシュ、拡張機能、残る状態

VS Codeには、拡張機能、キャッシュ、ログ、ワークスペースの状態、拡張機能が所有するデータがたまっていきます。`Code`フォルダ全体を消すと、キャッシュを外すとともに設定もリセットされ得ます。再現できる内容と、残す必要のある開発環境を分けます。編集が重いときは、ストレージの整理を対処にする前に、働いている拡張機能を特定します。

## プログラムファイル、拡張機能、ユーザーデータを区別する

標準的なWindowsのインストールでは、プログラムのパスはインストーラーに依存し、拡張機能の既定は`%USERPROFILE%\.vscode\extensions`、ユーザーデータはたいてい`%APPDATA%\Code`にあります。Insiders、ポータブルモード、独自の`--user-data-dir`や`--extensions-dir`は、別に確認が必要です。

| 内容 | 用途 | 残す判断 |
| --- | --- | --- |
| インストール済み拡張機能 | 編集、デバッグ、言語機能 | 使っているツールと、そのインストール元を残す |
| 設定、ショートカット、スニペット | 自分で組んだ作業の流れ | 回復できる構成を書き出して確認する |
| ワークスペースと拡張機能の状態 | プロジェクトの状態と、永続する拡張機能のデータ | 不確かな内容は残す。拡張機能の書き出し手順に従う |
| ダウンロード/実行時キャッシュとログ | 再利用するダウンロード、生成結果、診断 | 使用中の内容と、調査に必要なログを守る |

[拡張機能のリファレンス](https://code.visualstudio.com/docs/configure/extensions/extension-marketplace)は既定を挙げ、[CLIのリファレンス](https://code.visualstudio.com/docs/configure/command-line)は独自ディレクトリとプロファイルを説明しています。プロジェクトの`.vscode`ディレクトリは別の範囲で、たいていプロジェクトの構成が入っています。名前が似ていても、ユーザーの拡張機能フォルダではありません。

## 今の構成を記録する

特定したインストールのCLIを使います。次のコマンドは、バージョン付きで拡張機能を一覧し、ファイルを消さずにプロセスの診断を報告します。

```powershell
code --list-extensions --show-versions
code --status
```

拡張機能の一覧は目録であり、拡張機能のバイナリ、アカウントの状態、作業データのコピーではありません。プロファイルは、作業の流れのための設定と拡張機能の選択をまとめます。`settings.json`1つより大きいものです。プロファイルが複数あるときは、今のプロファイルを調べ、必要なら文書化されたプロファイルのオプションを使います。既定の一覧は、すべてのプロファイルの目録ではありません。

関連する設定、ショートカット、スニペット、拡張機能の選択は、[プロファイル](https://code.visualstudio.com/docs/configure/profiles)から書き出します。書き出しを確認します。プロジェクトのファイルと、拡張機能が所有する内容には、それぞれのバックアップがまだ必要です。

## アンインストールを決める前に無効化する

プロジェクトで再現できる遅延なら、疑わしい拡張機能に「無効にする (ワークスペース)」を選び、求められたら拡張機能を再起動して、同じ操作を繰り返します。一度に変える拡張機能は1つで、診断と応答性を比べます。もう不要と決めてから、管理メニューでアンインストールします。

無効化はインストール済みファイルを残すので、インストール容量を回収せずに挙動を試せます。[拡張機能の管理](https://code.visualstudio.com/docs/configure/extensions/extension-marketplace)は、ワークスペース/グローバルの無効化、アンインストール、有効化を区別しています。デバッグ、言語サポート、書式設定がまだその拡張機能に依存していないかを確認します。

ローカルのWindows、WSL、開発コンテナの環境は、別々の拡張機能インストールを持ち得ます。拡張機能ビューで場所を見ます。ローカルのWindowsのコピーを外しても、リモートが外れたことにはなりません。

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-vscode-storage-windows-en-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-vscode-storage-windows-en.webp" width="1360" height="454" loading="lazy" alt="VS Codeのデータには持ち主が違う">
  </picture>
  <figcaption>拡張機能の状態には残すべき作業が入り得ます。拡張機能を無効化すると、インストールファイルを残したまま挙動を試せます。</figcaption>
</figure>

## 永続する拡張機能の状態は、一般的なキャッシュではない

[ExtensionContext API](https://code.visualstudio.com/api/references/vscode-api#ExtensionContext)は、拡張機能がグローバルおよびワークスペース固有の状態を保存できるようにします。意味を決めるのは拡張機能です。インデックス、履歴、セッション、そのほか残した内容です。大きな`User\globalStorage`や`User\workspaceStorage`の項目は、名前で一律に消さず、持ち主を調べます。

[クリーンアンインストールのガイド](https://code.visualstudio.com/docs/setup/uninstall)は、ユーザーデータを消すことをリセットとして扱います。それは環境を変える操作で、日常のキャッシュ整理として示してはいけません。意図したリセットの前に回復を書き出して確認し、データを共有しているかもしれないほかのインストールも確認します。

## 拡張機能が戻るときは同期とプロファイルを確認する

[設定の同期](https://code.visualstudio.com/docs/configure/settings-sync)は、拡張機能の目録、有効状態、選ばれたプロファイルデータを同期できます。マージしたあとや別のマシンを使ったあとに拡張機能が戻るなら、同期されたデータと有効なプロファイルを見ます。同期はすべてのリモート拡張機能や非公開の拡張機能ファイルを対象にしないので、オンにしても開発環境全体のバックアップにはなりません。

Mole for Windowsは、Cache、CachedData、拡張機能のダウンロードキャッシュなど、特定のVS Codeの場所を認識し、関連する実行時キャッシュにはプロセス保護があります。その範囲は、ユーザーデータフォルダ全体の削除を許しません。エディターを普通に保存して終了し、必要な診断ログを残してから、元のプロジェクトを開き直します。元のビルドや編集作業を繰り返す前に、設定、デバッグ、ターミナル、必要な拡張機能を確認します。

言語パッケージのキャッシュは、[キャッシュとプロジェクトの依存関係](/ja/windows/blog/windows-developer-caches)を読んでください。コンテナ環境とボリュームは、[Docker/WSLのストレージのガイド](/ja/windows/blog/docker-wsl-disk-space-windows)を読んでください。


Canonical: https://mole.fit/ja/windows/blog/vscode-storage-windows
