- ベストアンサー
「拡張子」という名前の由来
拡張子はどうして拡張子と言うのですか? 調べても答えが見つからずもやもやしています。 英語のextensionを調べても「延長・拡大・増設」としか 出ていなくて、なぜ「拡張」なのか分かりません。 ふざけているように思われるかもしれませんが、真剣です。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
「extension=拡張」というのは文字通り「それまでに新しい機能を追加する」という意味ですよ。 たとえば、Pentium 3ではSSE(Streaming SIMD Extension)といってSIMDでStreaming再生を行う「新機能」が追加されています。 MS-DOSの元になったCP/Mのさらに元になったのがDECのPDP-11というミニコンピュータ向けに作られた「TOPS-11」というDOSですが、これらの汎用機向けの古いDOSには元々「拡張子」が無かったのです。 (私もIBMとNECの汎用機を扱ったがありますので) ではどうやってファイルの種類を区別するかというと 1.ファイルの中(データの先頭部分)に種類を識別する情報を付加する(ヘッダ) 2.ファイル本体とは別に種類を識別する情報を記録する(リソース) という方法があります。 実はこの方が「ユーザーが間違って識別情報を書き換える」心配がない点で拡張子より優れています。 (Macは拡張子を使わず、2の方法を採っています) DOSで拡張子を使った理由は当時の貧弱なPCのスペック(現在の数万分の1のメモリと処理速度)で現実的な動作速度を得るため少しでも簡素な方法を採る必要があったからです。(ファイル全部読むより「3文字」を判別する方が「楽」ですからね。) 拡張子はUNIXで使用され、ディレクトリ(Windowsでいう「フォルダ」)とともにMS-DOSのファイル管理手段の「新機能」として後から取り入れられました。 (だからfile name 「extension」ですね。) DOSのファイル名は「ファイル固有の名前(8文字)」+「.」+「拡張子(3文字)」で構成されます。 なお、この「ファイル固有の名前(8文字)」を「識別子」と言います。 だから後ろ3文字を「識別子」とは呼べないのです。(^^) つまり ・「拡張」は「extension」の直訳 ・「子」はファイル名を2つの要素に分解した一部 という事だと思いますよ。
その他の回答 (3)
- poor_Quark
- ベストアンサー率56% (1020/1799)
Windowsでおなじみのファイルシステムは元をただせばMS-DOSに由来します。(MS-DOSはCP/M-86やCP/M-80を踏襲しています)MS-DOSのファイルシステムはあるルールによって縛られています。8バイトの識別子(プライマリーファイルネーム)と"."(ピリオド、ドット)によって分けられた3文字の拡張子(エクステンション)と呼ばれる文字列を併せたものがファイルの実態を代表するものとして扱われるというルールです。それらはアルファベットや数字、一部の記号、後になって2バイト系の日本語もファイル名を表現するのに使われるようになります。 ところで、DOSとはディスクオペレーティングシステムの略で、文字通り円盤状の記憶メディアにデータを記録するという前提があります。このメディアにはファイルを管理するためのFAT(ファイルアロケーションテーブル)と呼ばれる領域があり、1Mのフロッピーの場合、ひとつのファイルのために32バイト長の領域が割り当てられていたと記憶しています。 このテーブルは各フィールドが固定長でありディスクの上の決められた場所に格納されていました。最初から8バイトめまでが識別子(プライマリーファイルネーム)、そのあとの3バイトが拡張子(ファイルタイプ、エクステンション)、そのあとに属性やタイムスタンプなどが続いたと記憶しています。(セパレターの"."はこのディレクトリエントリにはどこにも記録されていません。) 各フィールドは固定長ですからあまりに長い名前を許すと当時の少ないディスクスペース上では無駄が多くなり、ユーザースペースが圧迫されます。逆にあまりに短いとファイルの数が制限されてしまうということで識別子のほうは8バイトということになったのではないかと想像します。 では拡張子はなぜ必要でなぜ3バイトなのかというと、まったくの想像ですが、ファイル管理の手段の一部をユーザーに開放すると同時に、DOSによるファイル管理の複雑化を防ぎシステムの負担を軽減することに目的があったのではないかと考えます。またファイルタイプを示す拡張子は識別子ほど必要とされる「場合の数」は多くないだろうということで3バイトに落ち着いたのではないでしょうか。 たとえば拡張子のないファイルシステムを考えるとき、"ABC"というワープロのデータファイルと"DEF"という表計算ソフトのデータファイルがあったとします。"DIR"などのコマンドがユーザーから与えられ、システムがファイルを俯瞰したときに、名前だけではファイルの中身がわかりませんのでそれぞれのファイルの実態をシステムが調べなくてはならないという必要が生じます。これではファイル管理にいちいち手間と時間がかかり不便です。拡張子があるとその不便が解決するということになります。 ただし、自由にユーザーがつけられる拡張子ですが、システムによって予約されている文字列があります。例えば"bat"や"exe"などは、ファイルの名前と実態が対応していない限り使えないわけですが、無理やりリネームをかければ変えられないことはありません。例えばテキストファイルに"exe"などという拡張子を無理やりつけることができるわけですが、そういうことを考えるとユーザーの暗黙の協力の上にファイル管理システムが存在していたといえなくもありません。 つまり、拡張子(エクステンション、ファイルタイプ)とは、識別子(プライマリーファイルネーム)と区別するためのネーミングで、OSのファイル管理の必要から生じたものであると考えます。
お礼
ご丁寧にありがとうございました!
- Singollo
- ベストアンサー率28% (834/2935)
filename extensionというシステムを最初に考えた人がどんなつもりでこの単語を選択したのかは存知ませんが、『拡張子』という訳語はおそらく、extensionの訳語の中から一番しっくりしそうなものを選んで『子』をつけただけ、といったところじゃないかと思います extensionにこだわらなければ、もっと適当な言葉もあるかもしれませんね ただ、元々ファイル名の機能自体が『ファイルを識別すること』です その機能を拡張して、『ファイルの種類を識別すること』という機能を追加し、同時にファイル名運用の柔軟性(拡張子のおかげで、同じフォルダにAAA.exeとAAA.txtと行ったファイルの組み合わせを共存させることができるようになりました)を増したのが拡張子ですから、『識別子』だと、無かった頃とどう違うのかが分かり難いかもしれませんね なお、一般には『識別子』はidentifier(いわゆるID)の訳語だと思います
お礼
2度もの丁寧なご回答ありがとうございました! もやもやもすっきり消えました。 本当にありがとうございました!
- Singollo
- ベストアンサー率28% (834/2935)
それはお使いになった辞書の詳しさの問題ですね 多分extensionの項目よりextend(extensionの動詞形)の項目の方が詳しいと思いますので、そちらを参照してみてください 『拡張する』もあると思いますよ PC用語のextensionは、ファイル名の定義や機能を拡張するものですから、『延長子』や『拡大子』、『増設子』よりは、やはり『拡張子』の方が適当でしょう
お礼
早速のご回答ありがとうございます。 私の質問の書き方がおかしかったと反省しています。 extensionやextendが「拡張」と訳せるのは分かるのですが、何を拡張しているのかが分からなかったのです。 例えば「識別子」とかの方がぴったりなんじゃないか?と思っていました。 「ファイル名の定義や機能を拡張」しているのですね。 実は来週くらいに人に説明しなければならないためこんなにこだわっているのですが、 「ファイル名だけなのに比べて、ファイルの種類も明確にすれば関連付け等ができるから機能が拡張される。だから拡張子」 と説明すれば良いのでしょうか? 私の説明が間違っていたらご指摘下さい。 また、より良い説明等ございましたら教えて下さい。 Singollo様への御礼のはずなのに御礼か質問か分からなくなってしまいました; すみません! 引き続きよろしくお願いいたします。
お礼
大変詳しいご回答ありがとうございました。 新機能として後から取り入れられたから拡張子なのですね。 よくわかりました。 私ももっと勉強がんばらなきゃ…と思います。 本当にありがとうございました!