![見出し画像](https://assets.st-note.com/production/uploads/images/136494195/rectangle_large_type_2_8de713468e6919844147c71bbe59ce72.png?width=1200)
拡張子の始まり - CP/M
WindowsにあってMacにないもの、って色々あるような気もしますが、ファイル名の末尾に拡張子という文字列が付いているのがMS-DOSから続くWindowsの伝統です(UNIXの拡張子はある意味、微妙なところがある)。
この拡張子という仕組みはMS-DOSが始めたわけではなく、その祖先でもあるCP/Mにもあったものですが、そもそもはDECのミニコンで動いていたRT-11というOSなどが採用したのが始まりのようです。
拡張子
CP/M
ファイル名には必ず名前と拡張子があり、それらはピリオドという記号で区切られるのが特徴です。名前は8文字までの英数字が使われ拡張子は3文字までの英数字です。この拡張子が特定の文字列であれば固有の意味があり、CP/Mの場合、例えば”COM”であれば、それは実行可能ファイルなので、コマンドプロンプトから名前を入力すれば(拡張子は不要)、そのファイルが「実行」されるという使い方です(CP/M-86では"CMD"が実行可能ファイル)。いろいろなプログラムは、それぞれ自分が扱うことの出来る拡張子を持っていて、BASICであれば”BAS”、テキストエディタであれば”TXT”などの拡張子が付いているファイルを扱えるようになっているという訳です。ちなみにDOSがファイル名を管理する領域には、このファイル名が登録されているわけですが、そこには名前8バイトと拡張子3バイトの領域があるだけで、ピリオド自身は入っていません。
8.3形式
この拡張子をどう解釈するかはあくまでプログラムの責任でDOS自身は管理していません。”COM”が実行ファイルだと解釈するのもコマンドプロセッサの仕様であって、テキストファイルを無理やり”COM”という拡張子に変更することは可能ですが、そんなことをしてもファイルの中身がおかしいのでエラーとなって起動できないだけです。ファイル形式を保証してくれたりするわけではないのです。
ファイルフォーマット
ちなみにUNIX系のファイルシステム(FS)では、そもそも交換可能なもので、ファイルは名前ではなく番号で管理されており、その番号とファイル名の対応表があるという作りとなっています。拡張子はあくまでファイル名の一部でありピリオドもファイル名の一部です。従ってピリオド自身も名前の一部として扱われるのでピリオドがたくさん入っているファイル名を作っても何の問題もありません。
そしてMacOSには元々は拡張子がなく、ディレクトリに相当する領域にファイル名とともにFileType(ここまではAPPLE][のDOSに酷似)と、このファイルを扱うためのCreatorCodeと呼ばれる識別子を持っています。これが拡張子に相当するようですね。これはHFS時代の話で、その後にいろいろ拡張されていて今は内部的には拡張子を持っていることが多いようです(Windowsと同じで拡張子は表示させない設定がある)。
参考:HFS Plus Volume Format
参考:catalog file
(2004.6.6追記)
リソースフォークが拡張子に相当するような説明になっていましたが、これは間違いでした。じ〜げん〜さん、ご指摘ありがとうございました。
さて拡張子と言うかファイル名に使える文字の種類ですが、基本はアルファベットと数字で、記号に関しては以下のものはCOMMAND.COMにとって意味のあるものなので使えません。
'(SPACE) ', '<', '>', '.', ',', ':', '=', ';', '*', '?', '[', ']’
また小文字は大文字に変換されます。厳密に言うとプログラムからシステムコールを使えば使えてしまう文字もあり、これは他のOSでも似たりよったりの話なのですが、CP/Mでは文字をエスケープする方法が無いので、そんなファイルを作ってしまえばCOMMAND.COMから開くことが出来ないファイルになってしまうのでロクなことになりません。
CPM_1_4_Interface_Guide
http://www.cpm.z80.de/randyfiles/DRI/CPM_1_4_Interface_Guide.pdf
これらの仕様は基本的にはCP/M-86やMS-DOSにも引き継がれ、長らく拡張子と言えば3文字までで大文字と小文字で意味を変えてはいけないという暗黙のルールが決まったわけです。その後Windowsでも長いファイル名が使えるようになり4文字以上の拡張子も作れるようになりましたが、互換性の問題で4文字以上の拡張子を使うとトラブルが起こることもあり、同じ意味を持つ3文字の拡張子も用意することが原則になったままです。
インターネットの時代になり、もはや拡張子でファイルの種別を判断するという方法は少しばかり無理があるということでMIMEタイプという仕組みが考えられて今に至ります。具体的な拡張子の意味付けはいずれのOSでもアプリに依存する話なのですが、MIMEタイプまで行かないと、まとめられないですかね。
ヘッダ画像は、以下のものを使わせていただきました。https://commons.wikimedia.org/wiki/File:CPM-86.png
By Digital Research, Inc. - http://www.hampa.ch/pce/screenshots/index.html, Public Domain, https://commons.wikimedia.org/w/index.php?curid=77387751
この記事が気に入ったらサポートをしてみませんか?