「file:///」でスラッシュが3つ並んでいる理由
ブラウザにテキストファイルや画像ファイルをドラッグるすと、テキストや画像が表示され、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.関連情報
省略つながりということで、こちらもどうぞ。
- フォームのファイル選択でドラッグ&ドロップする方法
- テキストの行を入れ替えるツール
- 「ラジオボタン」の由来
- ウェブサイトで事前レンダリングする方法
- 「2015年年次訪問者調査の参加者に特別に選ばれました!」というサイトに注意
- 自分のIPアドレスを調べる方法
- index.htmlの理由
- PubSubHubbubのまとめ
- メールのPOPとIMAPの違いについて
- ブラウザでパスワードを表示する方法のまとめ
- Unicodeエスケープシーケンス変換ツール