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

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

Posted at May 14,2012 12:03 AM
Tag:[Scheme]

ブラウザにテキストファイルや画像ファイルをドラッグるすと、テキストや画像が表示され、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:)の省略について
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)