リンクは参照か - 徒書 及び iframeは参照か - 徒書 の補足を目的とした記事。別名「援護射撃」。
リンクとは、開始リソースと終了リソースとの間の関係、繋がりのことです。この関係もしくは繋がりをブラウザがどう表現するかは、リンクの本質ではありません(参照:link (Hypertext Terms))。
社会通念上は、クリック等すると画面遷移等が生じる「アンカーとなる文字列」のことをリンクと呼ぶようですが、ウェブページ制作者にとって、このような概念のごちゃまぜは恥です。
参照とは、「あるリソースを他のリソースと照らし合わせてみること」です。また、「他のリソースを指し示すもの(ポインタ)」を意味することがあります。
アンカーとなる文字列などはポインタとしての参照であると言えます。
ポインタというと、プログラム言語においては参照とポインタは微妙に異なる概念なので混乱するかもしれませんが、取り敢えず「他のリソースを指し示すもの(しかし実体ではないもの)」を便宜上ポインタと呼ぶことにします。
参照=ポインタというのは、ある方面の通念でしかないかも知れませんが、どちらにしろリンクとは違うことを示します。
ここに二つの文を比較してみます:
どちらも閲覧者に参照を促しており、Googleという文字列はどちらも閲覧者にとって他のリソースを指し示すポインタです。しかし後者は、Googleをa要素としてhref属性にURIを指定することによって、二つのリソース「文字列:Google」と「ウェブページ:http://www.google.com/」を関連付けています(リンクしています)。この関連がリンクです。リンク=参照、もしくはリンク=ポインタでないことは明らかです。
さらに、リンクした結果、閲覧者に対して参照やポインタが現れる必然性が無いことを、iframe要素の例で示します。
まずiframe要素とは何かということを考えます。iframe要素が作成するリンクにおいて、iframeという要素名が担う役割は、リンクの表現方法の指定です。そのsrc属性で示されたリソースを、その場所に埋め込むという表現方法の指定です。
iframe要素は、他のリソースを指し示す要素ではなく、それを文書内に埋め込む要素ですから、この要素はもはやポインタとしての参照でないことは明らかです。
ブラウザにとっては、src属性に示されたURIがポインタの役割を果たしますが、iframe要素をリンクの表現方法として選んだのは人間です。即ち、他のリソースを埋め込むという意思を持った人間です。埋め込むという意思を持っているのですから、これは参照行為でもありません。
以上より、iframe要素は、参照でもなければポインタでもありません。レンダリング過程において、そのsrc属性に示されたURIが、ブラウザ等のUser Agentにとってポインタであるだけです。
このiframeの例でも明らかになったように、リンクするということは、それが閲覧者に対する参照行為であるとも限らないし、また、閲覧者に用意されるポインタを作成するとも限りません。しかしブラウザ等のUser Agentに用意されるポインタは必ず存在します。
この「ブラウザにとってポインタである」という部分的な事実をもって、「iframe要素は参照である」と表現するのは、概念のごちゃまぜ、混乱の元、色々表現はありますが、兎も角正しくないと思います。