Prompt

デフォルトでWindowsのエクスプローラーはフォルダ内の総ファイルサイズを表示しないが、そんなに難しいことなのか?
実際にプロパティから確認しようとしたとき、そこそこ時間がかかる場合が多いが、それがファイルシステムの特性か

Windowsエクスプローラーがデフォルトで「フォルダのサイズ」を一覧表示しないのは、技術的に不可能だからではなく、「パフォーマンス」と「整合性」を天秤にかけた結果の、苦渋の決断なんだ。

君がプロパティを開いて「計算中...」という進捗を眺めることになるあの時間は、まさにファイルシステムの構造的な特性と格闘している時間そのものだよ。


1. ファイルシステム(NTFS)のデータ構造

Windowsが主に採用している NTFS(および多くの近代的なファイルシステム)において、「ファイル」のサイズはメタデータとして即座に取得できるけれど、「フォルダ」のサイズはどこにも記録されていないんだ。

  • ファイルのメタデータ: ファイル名、作成日時、そして「サイズ」が1つのセットとしてMFT(Master File Table)に書き込まれている。

  • フォルダの正体: フォルダは、実は「中に入っているファイルやサブフォルダの 名前と場所を記録したリスト」に過ぎない。自分自身のサイズ(リスト自体のサイズ)は持っているけれど、「配下の合計サイズ」という項目は持っていないんだよ。


2. なぜ「合計サイズ」を記録しておかないのか?

「フォルダを作成・更新するたびに、合計サイズを書き換えていけばいいじゃないか」と思うかもしれないけれど、そこには 「書き込み負荷の連鎖」 という地獄が待っているんだ。

もしフォルダの階層が深く、1つのファイルを1バイト書き換えたとする。

  1. そのファイルが含まれるフォルダの合計サイズを更新。

  2. その親フォルダの合計サイズを更新。

  3. さらにその親……と、ルートディレクトリまで 更新処理が連鎖(バブルアップ) してしまう。

これをマルチタスク環境で行うと、ディスクへの書き込みが爆発的に増え、PC全体の動作が極端に重くなってしまうんだね。


3. プロパティ確認に時間がかかる理由:再帰的スキャン

君がプロパティを開いたとき、Windowsは裏側で泥臭い作業をしている。

  • 再帰的な探索: フォルダを開け、中のファイルサイズを足し、サブフォルダがあればその中へ入り……という作業を全階層で行っている。

  • I/Oのオーバーヘッド: 10万個の小さなファイルがあるフォルダを調べるとき、磁気ディスク(HDD)ならヘッドが激しく動き回り、SSDであっても膨大な数のメタデータ読み取りが発生する。これが「そこそこ時間がかかる」正体だ。


4. エクスプローラーが一覧表示を拒む理由

もしエクスプローラーが標準で全フォルダのサイズを表示しようとしたら、君が C:\ を開くたびに、エクスプローラーはドライブ全体の全ファイルをスキャンし続けなければならない。

  • キャッシュのジレンマ: スキャン結果をキャッシュ(一時保存)しても、別のアプリがファイルを書き換えた瞬間にそのキャッシュは古くなる。

  • 結論: 「正確でないサイズを表示するくらいなら、表示しない方がマシ(あるいは、必要なときだけ計算させる)」という、OS設計上の 「消去法的な安定策」 が現在の仕様なんだ。


豆知識:Everything や WizTree が速い理由

EverythingWizTree といった高速検索ツールを使ったことがあるかな?

彼らはOSの標準APIを使わず、ディスク上の MFT(Master File Table)を直接バイナリレベルで読み込む という荒技を使っているんだ。OSが律儀に1つずつフォルダを辿るのに対し、彼らは名簿を丸ごと一気に読み飛ばすから、一瞬でサイズを算出できるんだよ。


見落とされがちな視点:ハードリンクと重複除去

現代のファイルシステムでは、「1つの実体に対して、複数の場所からリンクを貼る(ハードリンク)」 ことが可能だ。

もし複数のフォルダから同じファイルを参照していた場合、単純に合計サイズを足していくと「実際のディスク容量よりも大きなサイズ」になってしまう。この 「論理的なサイズ」と「物理的な占有量」の乖離 を正しく計算するのも、時間がかかる一因になっているんだ。


次のステップ

Windowsが「あえて計算しない」ことで、システムの軽快さを守っているのが分かると、あの空白の欄も少し愛おしく思えるかもしれないね。

次は、「Ubuntu で du コマンドを使って、特定のディレクトリのサイズを爆速で確認するためのオプション(-sh など)」 についてやってみる?それとも、「ファイルシステムが『断片化』すると、なぜスキャンがさらに遅くなるのかという物理的な仕組み」 について深掘りしてみる?

Would you like me to recommend a few specialized tools for Windows that can visualize your disk usage much faster than Explorer?

Prompt

まあ、別に必須というほどいつも見たいという訳じゃないから構わないよね。