Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

VFAT(ブイファット)とは | 意味や読み方など丁寧でわかりやすい用語解説

VFAT(ブイファット)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ブイファット (ブイファット)

英語表記

VFAT (ブイファット)

用語解説

VFAT(Virtual FAT)とは、Microsoft Windows 95で導入されたファイルシステム拡張技術である。それまでのFAT(File Allocation Table)ファイルシステムが抱えていたファイル名の文字数制限を大幅に緩和し、現代のコンピュータユーザーが当たり前と考える「長いファイル名」(Long File Name, LFN)をサポートするために開発された。FATファイルシステムは、MS-DOS時代から広く使われてきたシンプルで効率的なファイルシステムだったが、ファイル名を最大8文字のファイル名と3文字の拡張子(いわゆる「8.3形式」)に限定するという大きな制約があった。VFATはこの制約を解消し、最大255文字までの長いファイル名を扱えるようにした点で画期的な進歩だった。これにより、ユーザーはファイルの内容をより直感的に示す名前を付けられるようになり、データの管理と利便性が飛躍的に向上した。VFATは、FAT12やFAT16といった既存のFATファイルシステムとの互換性を保ちながら、その機能を拡張したものであり、ファイルシステムが進化する上での重要な過渡期の技術として位置づけられる。

FATファイルシステムは、ディスク上のファイルがどこに保存されているかを管理するためのFATテーブルと、ファイルやディレクトリの情報を格納するディレクトリエントリから構成される。VFATが導入される前の従来のFATシステムでは、ディレクトリエントリは固定長であり、ファイル名のためにわずか11バイト(ファイル名8バイト、拡張子3バイト)しか割り当てられていなかった。また、利用できる文字もASCII文字の一部に限定され、多くの記号が使えないなどの制約があったため、ファイル名が非常に読みにくく、意味を理解しにくいものになることが多かった。

VFATは、このファイル名の制約を打ち破るために、既存のFAT構造を根本的に変更することなく、「長いファイル名」(Long File Name, LFN)をサポートする新しいディレクトリエントリの仕組みを導入した。これは、既存の「短いファイル名」(Short File Name, SFN)エントリとLFNエントリを組み合わせて使用するハイブリッドな方式である。

具体的には、VFATは通常のディレクトリエントリに加え、LFNエントリという特殊なディレクトリエントリを追加する。LFNエントリは、本来ボリュームラベルや未使用エントリとして使われる特定の属性(ボリュームラベル属性、隠し属性、システム属性、読み取り専用属性をすべてセット)を持つように偽装され、既存の古いFATシステムから見ると認識できないか、無視されるように設計された。これにより、古いDOSアプリケーションなどがLFNエントリを誤って変更したり削除したりすることを防ぎつつ、互換性を維持した。

LFNエントリには、Unicode(UTF-16)形式でエンコードされた長いファイル名の部分が複数に分割されて格納される。1つのLFNエントリには最大13文字のUnicode文字が格納でき、長いファイル名の場合は複数のLFNエントリが連鎖して使用される。これらのLFNエントリは、ファイルの実体を示す短いファイル名エントリの直前に配置される。また、LFNエントリにはチェックサム(短いファイル名から計算される値)が含まれており、LFNエントリと短いファイル名エントリの整合性を保証する役割を持つ。

ファイルが保存される際、VFATはまず長いファイル名をLFNエントリに書き込む。そして同時に、古いDOS互換のために、その長いファイル名から自動的に8.3形式の短いファイル名を生成し、通常のディレクトリエントリに書き込む。例えば、「My Very Important Document for Project A.docx」という長いファイル名の場合、VFATは「MYVERY1.DOC」のような短いファイル名を生成する。この生成ルールは、長いファイル名の先頭6文字とチルダ()、そして連番、さらに元の拡張子の先頭3文字を組み合わせるというものだった。これにより、Windows 95以降のOSやアプリケーションからは長いファイル名として認識され、古いDOSアプリケーションからは短いファイル名として認識されるという互換性が実現された。ユーザーは常に長いファイル名を使用できるため、ファイルの内容を明確に記述できるようになり、データの検索性や整理が格段に向上した。

しかし、VFATにもいくつかの課題があった。最も顕著なのは、LFNエントリが追加されたことによるディスク容量の消費である。長いファイル名を持つファイルが増えるほど、ディスク上のディレクトリエリアを占めるエントリの数が増え、それがディスクの断片化(フラグメンテーション)を助長する可能性があった。LFNエントリは、短いファイル名エントリと比較して、同じ情報を格納するためにより多くの物理的な領域を必要とした。また、長いファイル名の検索や管理には、短いファイル名のみの場合よりも多くの処理が必要となるため、OSのファイル操作の一部でパフォーマンスがわずかに低下することもあり得た。

VFATはFAT12およびFAT16の拡張として機能し、後のFAT32ファイルシステムにもそのLFNサポートの仕組みが引き継がれた。最終的には、Windows NT系OSで標準となったNTFS(New Technology File System)が登場し、NTFSはファイル名だけでなく、セキュリティ、信頼性、大容量サポートなど、より高度な機能を提供するようになった。現在では、PCの内蔵ドライブでVFATが直接使われることは稀だが、USBメモリやSDカードなどのリムーバブルメディアにおいては、FAT32と共に、OS間の互換性を保つためのファイルシステムとして依然として広く利用されている。これらのメディアがWindows、macOS、Linuxといった様々なOSで読み書きされる必要があるため、VFAT(またはFAT32のLFNサポート)は今もなおその重要性を保っていると言える。

関連コンテンツ