.txt
, .exe
, .jpg
, .bat
, .png
, gif
, .mp4
, .pdf
, php
, csv
...
世の中の拡張子は3文字に溢れています。
拡張子とは、ファイル名の最後につけられる文字列で、そのファイルの形式を示しているものです。
しかし、3文字の拡張子が非常に多いです。
3文字で起こる問題がある
文字数によって発生する問題ってどういうこっちゃと思われるかもしれませんが、
素敵なエンジニアライフを送られている皆様方なら一度は目にするでしょう。
.htm拡張子。
いや、これはただのhtmlファイルなんですが、私としてはなんだかムズムズします。
だって私の見知ったhtmlファイルはこっちです。
そう、拡張子に表記ゆれが発生するのです。
yamlファイルの拡張子に関しては業界全体で表記ゆれが発生しているように思います。
どちらもyamlファイルではあるのですが。
表記ゆれ自体が大きな問題を引き起こすわけではないのですが
- 命名に迷う
- 混乱が起こる
などのトラブルの原因になりかねないと思います。
実際、それを問題として解決するためのissueが投げられているのをたまに目にします。
ちなみに、.doc
と.docx
はどちらもMicrosoft Wordのファイルですが、
実は仕様が異なっています。罠すぎる。
どうしてこんなことになってしまったのか
昔のMicrosoftのせい。
むかしむかし、あるところにMS-DOSがありました。
MS-DOSというのは、1981年発売の古のOSです。
古のOSだからこそ、技術面に多くの制約があったため、今では理解できないような変な?仕様がたくさんあったようです。
ちなみに、MS-DOS 4.0 は現在OSSになったらしいです。
よかったらビルドして遊んでみよう(?)
https://qiita.com/reika727/items/32a74226aea427044b41
そのMS-DOSの変な仕様の中には、以下の制限がありました。
「ファイル名は“8文字の名前+3文字の拡張子”にする必要がある」
この制限は8.3形式
とよばれ、Windows3.x、部分的にはWindows 95以降も続くことになるファイル名の仕組みでした。
当然今では長いファイル名も可能になり、8.3形式
は考慮する必要がなくなりました。
しかし現在の3文字拡張子は、この慣習が続いたものだと考えられます。
(脱線)今日から使える使えない豆知識
さて、わざわざこんな記事を見に来てくださったみなさんへ、
お礼といってはなんですが、今日から使えない豆知識を授けましょう。
この8.3形式、ファイル名に空白を入れることを許さないものでした。
そう、今のwindowsに存在するProgram File
は8.3形式において正しくないファイル名なのです。
そのためか、実はProgram File
はPROGRA~1
という8.3形式のファイル名でも表示されるようになっています。
batファイルなどでstart
コマンドを利用する場合、空白文字を含むような長いファイル名では正しく動作しません。空白がコマンドを区切る仕組みになっているからです。
$ start C:\Program Files\Google\Chrome\Application\chrome.exe
""
で囲めばいいじゃんと思ったあなたは少し黙っていてください。
実は、C:\PROGRA~1
にすると正しく動作します。
$ start C:\PROGRA~1\Google\Chrome\Application\chrome.exe
初めて知った人は是非この記事にいいねを付けてください。(傲慢)
ただし、この短いファイル名は環境依存です。
もしかしたらPROGRA~1
でアクセスできない環境が存在するかもしれない...
結論
やっぱ全部昔のMicrosoftが悪い。