はじめに:Explorerが壊れたように見える現象
私が実際に遭遇したのは、次のような症状でした。
・デスクトップでコピーや切り取りをしても表示が更新されない
・ファイル操作自体は成功している
・F5を押すと突然反映される
・Explorerを再起動すると直る
一見するとWindowsやExplorerの不具合に見えますが、結論から言うと、原因はVS CodeとWindowsの設計が噛み合っていないことによるものでした。
直接の原因:VS Codeのファイル監視
VS Codeは、開いているプロジェクト配下のファイルをリアルタイムで監視しています。
これは編集内容を即座に反映させるための、正常な動作です。
しかし、以下のようなフォルダがあると問題が起きやすくなります。
・node_modules
・.git
・dist / build
・大量の小ファイルを含むディレクトリ
これらはファイル数が非常に多く、変更通知が短時間に大量発生します。
VS Code自体は真面目に仕事をしているだけなのですが、Windows側がこの負荷をうまく捌けません。
本当の原因:Windowsのファイル変更通知の設計
Windowsでは、次のようなアプリケーションが同じファイル変更通知の仕組みを共有しています。
・Explorer(表示更新)
・VS Code(ファイル監視)
・OneDrive
・ウイルス対策ソフト
VS Codeが大量の通知を消費すると、Explorer側の通知処理が詰まり、
その結果、Explorerの表示更新だけが止まります。
重要なのは、データは正しいがUIだけが嘘をつくという点です。
これが非常に気持ち悪く、原因を誤認しやすいポイントでもあります。
なぜ原因が分かりにくいのか
この問題が厄介なのは、次の特徴があるためです。
・エラーメッセージが出ない
・ログにも残らない
・環境依存で再現性が低い
・F5で「直ったように見える」
そのため、多くの場合、
「Windowsが不安定」「Explorerが壊れた」「自分の操作ミス」
と誤解されがちです。
対策:watcherExclude を設定する
対策は単純で、VS Codeに「監視しなくていいフォルダ」を明示します。
設定方法は、VS Codeの settings.json に以下を追加するだけです。
{
"files.watcherExclude": {
"**/.git/**": true,
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true
},
"search.exclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true
}
}
これは回避策というより、Windowsで開発する場合の実務上の必須設定に近いものです。
※!設定は自己責任となります!※
対策をした場合の影響
結論から言うと、悪影響はほぼありません。
・コーディング作業に支障は出ない
・ファイルの保存や編集は問題なく行える
・VS Code自体が軽くなる
・Explorerの表示が安定する
・OneDriveやウイルス対策との衝突が減る
むしろ、全体的な体験は改善します。
これはVS Codeのバグなのか
VS Codeが悪いのか、Windowsが悪いのかと言われると、答えは単純ではありません。
VS Codeはクロスプラットフォーム前提で作られており、
Windows特有の通知処理の弱点までは吸収していません。
一方、Windowsは後方互換性を重視するあまり、
通知が詰まった際に「沈黙する」という挙動を今も残しています。
どちらか一方のバグではなく、組み合わせが地雷
というのが実情です。
結論:知っているかどうかで体験が変わる
この問題は、OSの再インストールや大掛かりな対処は不要です。
設計上の癖を理解し、設定を一つ追加するだけで回避できます。
Explorerの表示が怪しくなったときは、
まずVS Codeのファイル監視を疑う。
これはWindowsで開発をする以上、
知っておいた方がいい現実的な知識だと思います