TopWeb > 2012年5月
2012年5月14日

「file:///」でスラッシュが3つ並んでいる理由

May 14,2012 12:03 AM
Tag:[]
Permalink

ブラウザにテキストファイルや画像ファイルをドラッグるすと、テキストや画像が表示され、URLが「file:///」で始まるのは皆さんご存知かと思います。

URLが「file:///」

Windowsであれば、「file:///」「file:///C:/」と入力すれば、エクスプローラーのような表示を行うこともできます。

エクスプローラー

で、「何でスラッシュが3つ並んでるんだろう?」と疑問に感じていたものの、「まぁそういうものなんだろう」と、ほったらかしにしていました。

ということでこの疑問を解消すべく、「file:///」について真面目に調べてみました。

1.「file」について

まず「file」は、ホストコンピュータ上でアクセス可能なファイルを示すもので、RFC1738(URL仕様)の3.10に以下の記載がありました。

3.10 FILES

The file URL scheme is used to designate files accessible on a particular host computer. This scheme, unlike most other URL schemes, does not designate a resource that is universally accessible over the Internet.(file URLスキームは特にホストコンピュータ上でアクセス可能なファイルを示す。他のほとんどのURLスキームと異なるこのスキームは、インターネット上でアクセス可能な普遍的なリソースを示しているのではない。)

「file」の部分は仕様上「スキーム」「スキーム名」と呼ばれるもので、前述のRFC1738、新しいところではRFC3986(URI仕様)に規定されています。

3.1. Scheme

Each URI begins with a scheme name that refers to a specification for assigning identifiers within that scheme.(各URIは、そのスキームを含む識別子を割り当てるための仕様書を参照するスキーム名で始まる。)

fileスキームにおけるURIは、次のような形式になります。

file://<host>/<path>

他のスキームとしては、よく知られた「http」「ftp」「mailto」などがあります。URIはスキームによって若干異なるようです。

公式なスキームは「Permanent URI Schemes」に登録されています。

2.「///」とスラッシュが3つ並ぶ理由

探したところ、RFC1738(URL仕様)の3.10に以下の記載がありました。

3.10 FILES

As a special case, <host> can be the string "localhost" or the empty string; this is interpreted as `the machine from which the URL is being interpreted'.(特殊な例として<host>は "localhost" もしくは空の文字列にできる。これは `URL が処理されているマシーンから' として処理される。)

つまり、ローカルPCにあるリソースにアクセスする場合、さきほどの

file://<host>/<path>

の「<host>」を省略した、

file:///<path>

で表現できるという仕様みたいで、これがスラッシュが3つ並ぶ根拠のようです。長年の疑問が解消しました(笑)。

RFC3986の1.1や3.2.2にも類似の記載がありました。

1.1. Overview of URIs

URIs that identify in relation to the end-user's local context should only be used when the context itself is a defining aspect of the resource, such as when an on-line help manual refers to a file on the end-user's file system(e.g., "file:///etc/hosts").(エンドユーザのローカルの状況と関連して識別するようなURIは、オンラインヘルプマニュアルがエンドユーザのファイルシステム上のファイルを参照する(例えば、"file:///etc/hosts")時のように、状況自体がリソースの定義している解釈である時のみ使用されるべきである。)

3.2.2. Host

If the URI scheme defines a default for host, then that default applies when the host subcomponent is undefined or when the registered name is empty (zero length). For example, the "file" URI scheme is defined so that no authority, an empty host, and "localhost" all mean the end-user's machine, whereas the "http" scheme considers a missing authority or empty host invalid.(URIスキームがhostについて初期値を定義する場合は、host副構成要素が未定義である時、あるいは登録名が空(長さ0)である時に、その初期値が適用される。例えば、"file"URIスキームでは、オーソリティがない、空のホスト、及び "localhost" が全てエンドユーザのマシンを意味するが、"http"スキームはオーソリティがない場合や空のホストは無効であるとみなす。)

ということで、httpではローカルPCであってもホスト名を省略できないようです(実験済み)。

3.関連情報

省略つながりということで、こちらもどうぞ。

HTMLやCSSでのプロトコル表記(http:、https:)の省略について
Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3