[7] [[ファイル名]]の[DFN[拡張子]]及び、それと同形の[DFN[接尾辞]]について。

* 仕様書

[REFS[
- [28] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-09 09:15:24 +09:00]] 版) <https://html.spec.whatwg.org/#concept-extension>
]REFS]

* 決め方

[35] 
[[拡張子]]の決め方には決まりはありません。好きなように[[拡張子]]を選ぶことができます。

[36] 
ただ既に一般的な用法がある[[拡張子]]を他の目的に使うのは避けるのが無難です。

* 区切り文字

[33] [[拡張子]]とその前の部分は、
[DFN[[CODE[.][拡張子]]][.]] で区切ります。

[1] 区切りの [CODE[.][拡張子]] を含めて「[[拡張子]]」と言うことと含めないことがある。

[2] >>1 含めない方がやや優勢か?

[34] しかし単独で[[拡張子]]だとわかりにくいときはつけて表記することが多い。

* Web における拡張子

[29] [[ダウンロード]]の[[ファイル名]]の決定における[DFN[[RUBYB[[[拡張子]]]@en[extension]]]]は、
[[ファイル名]]のうちで、[[プラットフォームの慣習]]によって[[ファイル]]の種別を表すために使われる部分です
[SRC[>>28]]。

[EG[
[30] 多くの [[OS]] では、[[ファイル名]]の最後の [CODE[.]] の後の部分が[[拡張子]]です
[SRC[>>28]]。
]EG]

[27] 00年代には、[[宗教的]]に[[拡張子]]は[[クール]]でないとされ、
[[Web標準]]からも徹底的に排除されました。しかし実際には[[拡張子]]は [[URL]]
上も [[Webブラウザー]]の処理上も使われ続けました。00年代後半以降の現実路線の
[[Web標準]]は、[[拡張子]]の取り扱いを明確化しています。

[23] [CODE(HTMLe)@en[[[embed]]]] [[要素]]の[[内容の型]]の決定や
[CODE(HTMLe)@en[[[object]]]] [[要素]]の処理方法の決定では、
[[拡張子]]が使われます。

;; [CODE(HTMLe)@en[[[embed]]]] [[要素]]では [CODE(HTMLa)@en[[[type]]]] [[属性]]よりは優先されませんが、
[CODE(HTTP)@en[[[Content-Type:]]]] [[ヘッダー]]よりは優先されます。
[CODE(HTMLe)@en[[[object]]]] [[要素]]ではそれほど優先度が高くありません。

[21] [[ヘルパーアプリケーション]]の選択では、[[拡張子]]が使われることがあります。

[25] [CODE(DOMi)@en[[[MimeType]]]] [[インターフェイス]]には
[CODE(DOMa)@en[[[suffixes]]]] [[属性]]があります。

[26] [CODE(HTMLe)@en[[[input]]]] [[要素]]の [CODE(HTMLa)@en[[[accept]]]]
[[属性]]には[[拡張子]]も指定できます。

[22] [CITE@en[gecko-dev/nsExternalHelperAppService.cpp at 9440cb5e327ebe08fd9eefff91b0927d7e707a7c · mozilla/gecko-dev]]
([TIME[2015-05-07 20:27:30 +09:00]] 版)
<https://github.com/mozilla/gecko-dev/blob/9440cb5e327ebe08fd9eefff91b0927d7e707a7c/uriloader/exthandler/nsExternalHelperAppService.cpp>

[24] [CITE[base/mime_util.cc - chromium/src/net - Git at Google]]
([TIME[2015-05-07 21:44:15 +09:00]] 版)
<https://chromium.googlesource.com/chromium/src/net/+/master/base/mime_util.cc>

* 特殊

[39] [CODE[_][EXPAND.EXE]]

* セキュリティー

[38] [[識別子文字]]も参照。

* メモ
- [3] [[Web]] の世界には拡張子なる概念は基本的に存在しないわけですが。
- [4] >>3 では[[ファイル・システム]]の世界の概念では存在するのかというと、必ずしもそうではなく。 [[FAT]] などの一部ファイル・システムや、 [[Windows]] など一部環境にのみ存在する概念です。
- [5] >>2 含めても含めなくてもいい場面では、拡張子 (又は拡張子と同形の[[接尾辞]]) に敢えて区切の [CODE[.]] を含めることがあります。例えば [[Apache]] の設定ファイルで [SAMP[[[AddLanguage]] ja ja]] と書くより、 [SAMP[AddLanguage ja .ja]] と書けば、前の [SAMP[ja]] がこの場合は[[言語札]]で、後の [SAMP[.ja]] が接尾辞であることが明らかとなります。
- [6] なお、 Windoze 世界の拡張子は普通、[[ファイル名]]の最後の [CODE[.]] の後の部分を言いますが、 [[Un*x]] などで使われている、拡張子と同形の接尾辞は、拡張子に見える部分を複数重ねたものであることがあります。例えば [SAMP(file)[foo.tar.gz]] とか [SAMP(file)[bar.ja.html]] とか。慣習的には、前者は [SAMP(file)[foo]] という名前の [[tar玉]]を [[gzip]] 圧縮したもの、後者は [SAMP(file)[bar]] という名前の[[日本語]]の [[HTML]] 文書と解釈されます (慣習だけで、そうでないといけないわけではありませんが)。
- [8] ちなみに、 拡張子 == [[extention]], 接尾辞 == [[suffix]]。
- [9] [WEAK[2003-10-06 06:50:13 +00:00]] ''[[sys]]'': 
- [10] [WEAK[2003-10-06 10:20:07 +00:00]] ''[[iso]]'': 
- [11] [WEAK[2003-10-07 17:47:37 +00:00]] ''[[iso]]'': 
- [12] >>9 [[M$-DOS]] の慣習では、 DOS のシステム的に重要なファイルの拡張子を [CODE(file)[.sys]] とします。 [CODE(file)[[[IO.SYS]]]] とか [CODE(file)[[[MSDOS.SYS]]]] とか [CODE(file)[[[CONFIG.SYS]]]] とか。この場合実際のファイル形式と拡張子は対応しません。 [CODE(file)[IO.SYS]] や DOS の [CODE(file)[MSDOS.SYS]] はバイナリで、プログラムのようなものです。 [CODE(file)[CONFIG.SYS]] と [[Win95]] 以来の [CODE(file)[MSDOS.SYS]] はテキスト・ファイルで、 [[OS]] 起動時の設定ファイルになってます。
- [13] >>10-11 [[CD]] の image file は慣習的に [CODE(file)[.iso]] という接尾辞がよく使われます。 [[ISO9601]] 形式の [[CD-ROM]] の image, という程度の意味でしょう。中身を見るには、 image から焼くのに対応したソフトウェア (最近のは大抵そう。) で実際に焼いてみるか、又は image を直接覗けるソフトウェアを探すかでしょうね。[WEAK[image を直接 mount できるようなソフトウェア (デバイス・ドライバ?) があっても良さそうだけど、ないのかな? 探せばあるよね、きっと。]]
- [14] [WEAK[2003-11-05 16:36:47 +00:00]] ''[[img]]'': 
- [15] >>14 そうですね、ディスク・イメージには [CODE(file)[.img]] という拡張子を使うこともありますね。画像ファイルに使っても良さそうなものだけどそういうのはあまり見ないなあ。 (ゲームのデータファイルとかならありそうだけど。)
- [16] [WEAK[2003-11-24 10:46:48 +00:00]] ''[[xml]]'': 
- [17] >>16 [[XML]] でかかれた文書のファイル名が [CODE(file)[.xml]] で終わることが多いですね。
- [18] [WEAK[2003-12-20 12:38:56 +00:00]] ''[[iso]]'': 
- [19] [WEAK[2003-12-24 11:22:07 +00:00]] ''[[dat]]'': 
- [20] [WEAK[2003-12-28 03:46:08 +00:00]] ''[[img]]'': 

[31] [CITE@en[Standardize extension to content type mapping? · Issue #51 · w3c/FileAPI]]
([TIME[2017-02-04 00:55:41 +09:00]])
<https://github.com/w3c/FileAPI/issues/51>

[32] [CITE[File::MimeInfo - search.cpan.org]]
([TIME[2017-09-10 18:57:05 +09:00]])
<http://search.cpan.org/dist/File-MimeInfo/lib/File/MimeInfo.pm>

[FIG(quote)[
[FIGCAPTION[
[37] [CITE@EN-US[Akoma Ntoso Naming Convention Version 1.0]]
([TIME[2019-02-22 02:00:00 +09:00]])
<https://docs.oasis-open.org/legaldocml/akn-nc/v1.0/os/akn-nc-v1.0-os.html#_Toc409028154>
]FIGCAPTION]

> A unique three or four letter extension signifying the data format in which the Manifestation is drafted (required). For instance, such extension can be “pdf” for PDF, “doc” or “docx” for MS Word, “htm” or “html” for HTML “xml” for an XML Manifestation, or “akn” for the package of all documents including XML versions of the main document(s) according to the Akoma Ntoso vocabulary. For an Akoma Ntoso XML representation, this value MUST correspond to the content of element <FRBRformat> in the <FRBRManifestation> section of the metadata.

]FIG]
