ファイルの末尾にあるピリオドと3文字前後の文字列からなる「拡張子」。PNG画像は「.png」、ディスクイメージファイルは「.dmg」などと特定のファイルフォーマットに関連付けられ、開く/起動するアプリを特定する目的にも使用される。ファイルの末尾を見ればファイル種と対応アプリが判明するわけで、慣れれば便利な存在だ。

しかし、拡張子は変更できるのか、変更したらどうなるか、そもそも拡張子なしでファイルは存在しうるのか、といった「そもそもMacにおける拡張子とは」に関する情報は意外に少ない。今回は、そんなファイルと拡張子の関係について解説してみよう。

そもそも拡張子とは

そもそも拡張子は1970年代、DEC(Digital Equipment Corporation、1998年にCOMPAQが買収)のミニコンピュータで動作するOSに採用され、やがてCP/Mに採用、その影響を受け設計されたMS-DOSにも採用されてコンシューマOSで一般化したもの。CP/Mでファイル名は「8+3」、前半が8バイトでピリオド以降の後半が3バイトという形式が採用されたため、互換性を保つ目的でMS-DOSも追随したとされている。

拡張子の存在理由はどのOSも同じで、ファイル種の識別だ。ユーザだけでなく、システムもファイルの拡張子を見て作成元のアプリを推測できるため、ファイルのダブルクリックでアプリの起動とファイルオープンを一度に行うといった処理が可能になる。重複すると混乱を招きかねないが、書庫の「.zip」やExcelの「.xls」のようなメジャーなファイル形式は、他のアプリでは使用を避けるという暗黙の了解が生まれたほか、どの拡張子にどのアプリを対応させるかをOSが管理するようになったため、それほど混乱なく運用されてきた。

ファイル名を自由に変更できることと同様、拡張子もファイルブラウザなどを利用すれば変更できるが、拡張子を非表示にして安易な変更を妨げる、拡張子を変更しようとするとファイルが使えなくなる可能性があると警告するなどの対策を施している。

  • Windowsなど多くのOSで「拡張子」がファイルとアプリの関連付けに利用されている

  • macOSでも拡張子が利用され、安易な変更は警告されるが……

Macに拡張子は不要?

一方、Macの事情は少々複雑だ。Mac OS X/macOS以前のオペレーションシステム(旧Mac OS)は、ファイルに付帯する「リソースフォーク」にさまざまな付帯情報を保存し、さらに「ファイルタイプ」と「クリエータ」と呼ばれるメタ情報を利用して、ファイル種および作成元アプリを識別していた。拡張子はファイル名の一部分に過ぎず、あってもなくてもファイル種および作成元のアプリを特定できる(Windowsユーザへ渡したとき彼らが困らないよう敢えて拡張子を付けることも多かったが)。そもそもMacで拡張子は不要だったのだ。

事情が一変したのは、Mac OS Xが登場してから。Mac独自のファイル構造(リソースフォーク/データフォーク)とファイルタイプ/クリエータの機構は温存されたが、拡張子もファイル種別の判断基準として参照されるようになったのだ。

そして時が経ちMac OS X v10.6(Snow Leopard)になると、再び状況が変化。ファイルタイプ/クリエータが参照されなくなり、基本的には拡張子でファイル種および作成元アプリが識別されるようになったのだ。Catalinaの現在では、ファイル種は拡張子で認識されるのだ……とはならないのが、macOSらしいところ。

実は、拡張子を削除してもシステムはファイル種および作成元アプリ(あるいは開くことができるアプリ)を認識できる。たとえば、Terminalでmvコマンドを使いJPEGファイルやPNGファイルから拡張子を取り除いても、Finderでダブルクリックすればプレビューで開けるのだ。すべてのファイル種ではないが、fileコマンドでマジックナンバー(ファイルの先頭付近にに記載されている固有のパターンまたは識別子)を判定できるものについては、拡張子の有無を気にしなくていい。

対応するアプリを個別に設定しているファイルも、拡張子の影響を受けない。Finderの情報ウインドウにある「このアプリケーションで開く」でアプリを指定すると、「com.apple.LaunchServices.OpenWith」という拡張属性としてアプリのパスが記録される(Terminalで「xattr -l」を実行すれば確認できる)。

このように、Macでは拡張子なしでもやっていけないことはない。とはいえ、わずか4文字程度で適切なファイル種を認識してくれるのだから、拡張子が"使えるヤツ"であることもまた確か。テキストファイルは「.txt」、Excelファイルは「.xls」や「.xlsx」、Wordファイルは「.doc」や「.docx」などと、主だったものは覚えておいて損はないはずだ。

  • ファイルから拡張子を取り除くとアイコンが無地になるが、別の方法でアプリとの関連付けが行われる

  • 拡張子を取り除いたファイルをfileコマンドで調べると、マジックナンバーによりファイル種がわかる

  • 「このアプリケーションで開く」で指定したアプリは、拡張属性に記録される