なぜ拡張子が必要か?
- 著者:YAMANJO
- 公開日:2008年7月25日
- 最終更新日:2024年12月23日
OSはファイルの中味であるファイル形式について、ディレクトリを参照するのではなく、拡張子によって判断しています。なぜ、拡張子である必要があるのか理解していきましょう。
なぜ、拡張子なのか?
拡張子とは、ファイルの中身がどのような形式なのかを示す文字列のことでした。拡張子がないとOSやアプリケーションソフトは、ファイルを識別することができません。
なぜ、ディレクトリではなく拡張子によって判断されるのかというと、ディレクトリに過剰な情報を持たせると構造が複雑化し、処理の効率が低下するという理由からでした。
初期のファイルシステムはさらに単純な構造で、ファイル名やサイズ、保存場所といった基本情報しか登録できませんでした。そのため、ファイルの内容を管理する機能はなく、ファイル形式を識別するための手段として拡張子が必要になったのです。
そのファイルがテキストなのか画像なのか、実行ファイルなのかは、ファイルシステムの範疇ではなく、そのファイルを利用するアプリケーションソフトに任せています。
つまり、ファイルシステムは、ファイルの管理を行うものの内容には関与せず、ファイルの識別や内容については、アプリケーションソフトの仕事として役割分担されているということです。(実行ファイルなどの特別なファイルはOSが関与する場合があります)
基本的には、その流れを今も引き継いでいます。拡張子はシンプルな仕組みであり、使い続けるメリットが大きいからです。
ファイル名の末尾に付加するだけなので、特別な保存領域を必要とせず、OSの種類など異なる環境間でも共通的に使うことができ、汎用性が高いといったメリットがあります。
ただし、現在では拡張子だけでなく、ファイルのヘッダ情報も参照してファイル形式を判断する場合があります。
ヘッダ情報とは、ファイルのバイナリの中で最初の数バイト程度の領域を指します。ほとんどのファイル形式では、このヘッダ部分に形式を特定する情報を記録しています。
具体的には、JPEG(ジェイペグ)と呼ばれる画像ファイルの場合は「FF D8 FF」という数値が入り、PDFファイルの場合は「25 50 44 46 2D」が入ります。(この場合の数値は16進数)
こうした数値は、
マジックナンバー
と呼ばれています。
マジックナンバーもファイル形式を表す仕組みです。拡張子と似た仕組みですが、マジックナンバーはユーザーが変更することはできません。そのため、両方を確認することで、誤った拡張子が付けられている場合でも正しい形式を特定することができます。
とは言え、OSやアプリケーションソフトがファイルを開く際に、必ずマジックナンバーを確認しているというわけではありません。多くのアプリケーションソフトは、拡張子を最も重要視(優先)しています。
前項で学習のとおり、Wordファイルの拡張子「.docx」を「.do」に変更するとファイルが開けなくなるのは、Wordがマジックナンバーを厳密に確認していないからです。
例えば、画像編集ソフトなどはマジックナンバーを確認するアプリケーションソフトが多いので、拡張子が異なっても正しく開ける場合があります。
拡張子がなかったら、どうなるか?
このように、拡張子は単純な文字情報だけシンプルな仕組みですが、非常に重要な役割を担っています。
拡張子がなかったら、OSやアプリケーションソフトがファイルの種類を判別できなくなり、どのアプリケーションソフトで開いたらよいのかわからなくなります。
また、拡張子がなかったらマジックナンバーだけに頼ることになりますが、現代の主要なOSでも、マジックナンバーから自動的にファイル形式を判断して開く機能は標準提供されていないのが現状です。
なぜなら、ファイルシステムにファイル形式や内容が登録されないため、毎回ファイルを開く前にマジックナンバーを解析してファイル形式を確かめる必要が生じるからです。これをすべてのファイルに対して行うことは非常に非効率的で、パフォーマンスに大きな影響を与える可能性があります。
拡張子を使うだけで、ファイル形式を容易に判別でき、その拡張子に対応するアプリケーションソフトを決めておくことができます。また、ファイルシステムやOSに負荷をかけることなく効率的にファイルを管理することができるため、拡張子がなくなることは今のところないと言えるでしょう。
ではもう一度、拡張子の役割を整理します。このように拡張子は、2つの大きな役割を担っています。
ファイル形式を示すことと、どのアプリケーションソフトで開くかを示すこと
です。
拡張子を見れば、OSもユーザーもファイル形式が瞬時にわかります。また、その拡張子のファイルにどのアプリケーションソフトが対応しているのかもわかります。
具体的な拡張子の種類やファイル形式、アプリケーションソフトの関連付けについては次項から詳しく学習しますが、こうした重要なことを3~4文字の文字情報だけで可能にしているのです。
ただし、逆に言えば簡易な仕組みであるために、拡張子は簡単に変更できてしまいます。拡張子を理解していないユーザーでも、簡単に文字列を変えることができます。
前項の例のように、Wordファイル「.docx」を「.xlsx」に変えると、アイコンもWordからExcelのアイコンに変わります。しかし、ファイルの中味にまで影響を与えるものではないため、ファイルの中味はWordのファイル形式のままです。
そのままExcelで開こうとするとエラーになり、正しく表示することができません。
こうしたリスクがありますが、現在OSの標準設定で拡張子は表示されないようになっており、仕組みが単純なため、ユーザーの理解も得やすいと言えます。
なぜ、異なるアプリケーションソフトで開けないのか?
では、そもそもなぜアプリケーションソフトが異なると正しく開けないのでしょうか?
当然のことなので考えたこともないかもしれません。そのアプリケーションソフトが扱えるファイル形式で作成されているからという当たり前の答えになります。
しかし、ファイルの元はただの2進数であるバイナリです。ただの2進数が、アプリケーションソフトの違いによって読み取れなくなるのはなぜでしょうか?
これが示す意味は、
アプリケーションソフトによってバイナリの解釈が異なる
ということです。
例えば、「11100110」というバイナリデータあるとします。
これをテキスト、画像、音声の3つの異なるアプリケーションソフトで読み取ると、テキストのアプリケーションソフトは、文字コードの一部と解釈して文字を表示します。画像ソフトの場合は、画像の一部と解釈して画像を表示します。音声ソフトの場合は、音の波形の一部と解釈して音声を再生するというイメージです。
つまり、2進数の解釈はファイル形式に依存し、その解釈は、その形式に対応するアプリケーションソフト次第ということです。そのため、拡張子によって開くアプリケーションソフトを示してやらないと、ファイルのバイナリを正しく解釈することができません。
ではなぜ、バイナリの解釈がファイル形式やアプリケーションソフトによって異なるのでしょうか?
それは、そのことがパソコンの大きなメリットのひとつだからです。もしバイナリが単一の解釈しかできなかったら、複数のアプリケーションソフトをパソコンに共存させることが非常に困難になります。
例えば、テキストファイルと画像ファイルは、それぞれ異なる処理が必要です。テキストファイルは文字コードとして解釈され、画像ファイルは画像データとして解釈されます。しかし、すべてのデータが同じ形式で解釈されるとすると、画像データも文字データとして処理されてしまい、画像が正しく表示されなくなります。
これでは、テキストや画像など、異なる種類のデータを扱うアプリケーションソフトをパソコンに共存させることができません。異なる解釈を許すことが、パソコンにおけるアプリケーションソフトの共存と柔軟なデータ管理を実現しているのです。
このことを実験で確認してみましょう。
Wordに、下図のように「テスト」と入力して適当なファイル名で保存します。
ファイルを一度閉じ、今度はファイルを「右クリック」から「プログラムから開く」→「別のプログラムを選択」 でプログラムの選択画面から「メモ帳」を選択します。
メモ帳は、ファイルとは で学習したテキストファイル(プレーンテキスト)を作成することができるアプリケーションソフトです。一覧にメモ帳が表示されなければ「その他のアプリ」をクリックしてメモ帳を選択します。
これで、DOCX形式のファイルをメモ帳で開くことができます。(「常にこのアプリを使ってファイルを開く」のチェックを必ず外してください。これを外し忘れると常にメモ帳で開くように設定されてしまいます)
すると、下図のように意味不明のファイルが立ち上がります。
このように同じファイルであっても、Wordでは「テスト」と表示され、メモ帳では文字化けした意味不明の文字列が現れます。使用するアプリケーションソフトによってバイナリの解釈の仕方が違うということがわかります。
Wordはメモ帳と同じようなテキスト編集ソフトですが、テキストファイル(プレーンテキスト)を扱うメモ帳とはバイナリの解釈がまったく異なります。
では、拡張子を削除してしまって何のファイルかわからなくなってしまったら、元に戻すにはどうしたらいいのでしょうか?
拡張子がわかっていれば、拡張子を戻すだけですが、わからなければ、手当たり次第にそれらしい拡張子を試してみるのがもっとも簡単な方法になります。
つまり、ひとつずつ手動で開けるアプリケーションソフトを探していくということです。その他の方法としては、マジックナンバーを確認するか、専用のアプリケーションソフトを使うかになります。しかし、どちらも初心者には難しく、ある程度の知識が必要になります。
拡張子はファイル形式同様に種類が多くあります。拡張子を表示させたら、メジャーどころの拡張子は自然と覚えていくことができますが、特に知らない拡張子は変更しないように注意しましょう。
更新履歴
- 2008年7月25日
- ページを公開。
- 2009年3月30日
- ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
- 2018年1月25日
- ページをSSL化によりHTTPSに対応。
- 2024年12月23日
- 内容修正。
著者プロフィール
YAMANJO(やまんじょ)
- 経歴
- 岡山県出身、1980年生まれ(申年)の♂です。現在、総合病院で電子カルテなどの情報システム担当SEとして勤務。医療情報学が専門ですが、ネットワーク保守からプリンタの紙詰まり、救急車の運転手までこなしています。
- 医療情報技師、日本DMAT隊員。ITパスポート、シスアドなど、資格もろもろ。
- 趣味は近所の大衆居酒屋で飲むこと、作曲(ボカロP)、ダイビング。
- 関連リンク
- 詳細なプロフィールはこちら
- 作成したボカロ曲などはYoutubeへ
- X(Twitter)