« パンくずリストのマークアップ | トップページ | My del.icio.us daily bookmarks »

2007-02-08

link 要素をナビゲーションに利用することの注意点(改訂)

[2007-02-08 18:00: 内容を増訂しました。]

パンくずリストがベストとは限らない(WWW WATCH)で、link 要素を使ってページ間を関連づけるという方法が解説されています。本文でも指摘されているように、ブラウザの実装上の問題で、現実的にはナビゲーションとしては使えませんけど、セマンティックウェブという観点で見れば、むしろパンくずリストなどよりも、よほど重要な要素には違いないので、僕も興味深く拝見させていただきました。(「参考までに」で済ませてしまうのは、ちょっともったいないくらい。)

実装面について
機能として標準実装されている Opera に加え、Firefox 向けの可視化 Tips が FirefoxでOperaのようなlink要素を表示させる「Mozeraナビ=叢ナビ」 (インターネット帳面)と、link 要素を可視化してみる(double-team.org)で紹介されています。

ただ一点だけ気になったのは、「本来パンくずリストのようなナビゲーションは link 要素として記述するのがマークアップ的には自然だったりします」という一文です。(「ページ間の関係を示す」のには link 要素の方が良いという点はまったく同感ですが、パンくずリストの目的自体が、そもそも「ページ間の関係を示す」ことではなく、"サイト構造全体の中における現在位置の提示" にあるのではないでしょうか?)ブラウザの実装面から現実的な選択肢とはなりえないことを差し引いても、少なくとも現時点では、僕個人は、パンくずリストと link 要素は完全に切り離した方がいいように思います。おもな理由は以下の通り。

link 要素がパンくずリストに適さない理由

  1. link 要素は空要素なので、(title 属性でラベルを貼ることはできるが)コンテンツを持てない。(これ自体は大した問題じゃありませんが、一応。)
  2. link 要素は空要素なので、構造を持てない
  3. link 要素は自文書と他のリソースとの間の関係を記述する要素なので、他のリソース同士の関係は記述できない
  4. よって、原則として祖先・子孫関係にあるコンテンツと関連づけても、それらの間を "path" として有機的に関連づけられない。(多段階層を持った、階層型構造のサイトや、リニア型構造のサイトのナビゲーションには向かない。)
  5. パンくずナビゲーションは、(基本的に)サイト全体の中の現在位置を示すためのインターフェイスなので、link 要素はパンくずナビゲーションには向かないことになる。

あと、link の rel, rev の値を拡張するという手段もありますけど、ローカルセマンティクスになってしまって、あまりスマートじゃないような気がします。

link 要素だとパスが記述しにくい

link 要素の利点: サイト構造を機械に伝えるなら断然 link 要素

  1. リソース間(というか自文書と他のリソースと)の関係を記述するだけなら、むしろ link 要素の方が適している。(たとえば、link 要素で関連づけを行う場合、RDF 的に link 要素を主語・述語・目的語の関係に置き換えるなら、主語は自文書そのものになる。)特に人間ではなく、機械(コンピュータ)に対して、サイトの構造や文書間関係を伝えるなら、断然 link 要素の方が有利。
  2. サイト構造が階層型でもリニア型でもない、パターンに一貫性のない "organic structure"(cf: Jesse James Garrett The Elements of User Experience より。神崎正英『ユニバーサル HTML/XHTML』p.212 でいうところの「放射状型」)の場合は、むしろ link 要素が効果を上げそう。
  3. 検索エンジンなど、パンくずリストなどなくても、サイトをまるごと構造解析できるシステムの場合は、link 要素の方が大きな効果を発揮する。(むしろ機械側には、パンくずリストの方が大したメリットがなくなる。)
link 要素を主語・述語・目的語の関係に置き換えてみる
<link rel="stylesheet" href="/css/style.css" type="text/css" />

上の例なら、「[主語: このページ(ex. /index.html)]の[述語: stylesheet]は、[目的語: /css/style.css]です」といったような感じでしょうか。

<link rev="section" href="/index.html" type="text/css" />

rev 属性なら、述語はそのまま(rev 属性)にして、主語(自文書)と目的語(href の参照先リソース)が入れ替わる..というイメージになるのかな。上の例だと「[主語: /index.html]の[述語: sectionは、[目的語: このページ(ex. /section1.html)]です」といったような感じでしょうか。

link 要素の特性

敢えて、link 要素の特性を取り上げるとすれば、link 要素は RDF のような、有向グラフ型のモデルで、基本的に階層構造を記述する (X)HTML 要素群の中では、やや異色の存在のような感じがします。

link 要素の有向グラフモデル

link 要素の有向グラフモデル

ちなみに link 要素は (X)HTML 文書だけでなく、RSS | ATOM(フィード)や、PDF 文書、MP3 ファイル(音声)といった、様々な形式のファイルと関連づけることができます。

要するに、手段は色々あれども、特性をよく理解して、状況に応じて最適な手段を選択したいですね..という点は、パンくずリストのマークアップ の時の方針とまったく同じです。

参考文献

それにしても、我ながら何だかわかりにくくて不親切な文章になってしまいましたね..。あとで、もう少し砕いてみます。すみません。(- -;)

|

« パンくずリストのマークアップ | トップページ | My del.icio.us daily bookmarks »

[Web]XHTML」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/15394/5259796

この記事へのトラックバック一覧です: link 要素をナビゲーションに利用することの注意点(改訂):

« パンくずリストのマークアップ | トップページ | My del.icio.us daily bookmarks »