2007年12月アーカイブ

ここ3ヶ月くらいずっと悩んでいる。どうにも解決方法と言うか、「これ!」と言う回答が見つからないので一旦整理する意味でブログに書いてみる。

よく、「ページトップに戻る」と言うリンクがある。
例えばドコモの製品ページ。ここでは「このページのトップへ」と言う表記でページ内の #top へリンクされている。この #top がどこに書かれているか探してみると、ドコモのロゴの a 要素に name 属性と id 属性の併記でなされている。
今度は mixi のヘルプページではどうか。「TOPへ戻る」と表記され、同様に #top へリンクされている。この #top はソースを見ると164行目に空の a 要素に name 属性で書かれている。

で、自分は何を悩んでいるのか。

  1. ページトップなどの表記は正しいのだろうか
  2. 本当にページの先頭に遷移するリンク先は #top(または #pagetop など)でよいのだろうか
  3. ページの先頭はどこなのだろうか
  4. そもそも古典的とも言えるこの手法は正しいのだろうか

この4点が全て。
今まで常識的にやっていたことを1回でも疑問に思うと、そこから先全てが疑問に思えてくるから不思議。うむむ。

ちなみにこのナビゲーションの存在そのものは否定しない。mixi のヘルプページのように、長いページであるとユーザビリティ上あってもよいと思う。だけどこれまで通りのやり方でよいのかが疑問視する点。

1. ページトップなどの表記は正しいのだろうか

ここで問題なのは「ページトップ」や「トップ」、「先頭」それに「戻る」の意味。これらの組み合わせでいろいろな表現がある。

  • ページのトップへ
  • ページの先頭へ戻る
  • ページトップへ
  • ページトップに戻る
  • トップに戻る
  • 先頭へ
  • このページのトップに戻る
  • このページの先頭へ
  • TOPへ
  • その他いろいろいっぱい

これらの言葉をかなり砕くと「あなたが現在閲覧しているページの最初に移動します」となる。

そもそもにおいて「トップ」や「先頭」と言う言葉の意味を考えると、header や footer と同じように、位置を意味することになるような気がする。だからそこから導かれるように #top が生まれたのではないかと思う。

2. 本当にページの先頭に遷移するリンク先は #top(または #pagetop など)でよいのだろうか

じゃあ #top と言う表記は正しいのだろうか。フラグメント識別子を含めた URI を1つのリソースとして見ると、top を示すリソースが固有名詞(例えば本のタイトル)であるなら問題ないが、それがページ内の位置を示すのであれば間違いではないか。

参照するリソースが固有名詞の例

<h2 id="top">山田太郎著「トップ」</h2>
参照するリソースがページの位置を表す例

<p id="top"><img src="logo.png" alt="ほげほげ株式会社"</p>

前項で header や footer と同じ、位置を表す意味となると言ったのはこうした理由である。

では代替案はあるのか。それはページの最初がどこであるか定義するかによると思う。

3.ページの先頭はどこなのだろうか

まずはこの double-team.org の大まかな構造から考えてみる。

  1. ブログ名(double-team.org)
  2. 検索窓
  3. ナビゲーション
  4. エントリのタイトル
  5. エントリの内容
  6. (上記2つが続くので略)
  7. 最新のエントリ10件のタイトル
  8. 月別ごとのエントリ
  9. エントリのタグ一覧
  10. コピーライト

これをもとに、ページの先頭として考えられる候補はいくつかある。

  1. 純粋にページの最初から
    • ブログ名(double-team.org)
  2. ヴィジュアル上の最初から
    • ブログ名(double-team.org)
    • 検索窓
    • 最新のエントリ10件のタイトル
    • これらのいずれか
  3. ユーザが次に行動しやすいような箇所から
    • 検索窓
    • ナビゲーション
    • 最新のエントリ10件のタイトル
    • 月別ごとのエントリ
    • エントリのタグ一覧
    • これらのいずれか
  4. 必要なのはコンテンツなのでエントリから
    • エントリのタイトル

考えようと思えばいくらでも考えられる。
恐らくその Web サイトまたは Web ページにあわせた、適切な箇所を参照するのが良いのだと思う。ただ、Web ページ単位で考えると制作者が思考迷路に陥る可能性が高いので、現実的ではないのかもしれない。
そしてもし Web ページ単体で考えるとなると、ページごとにフラグメント識別子を埋めて行く必要があり、それ以前に前項の #top が本当に正しいのかと考える必要がある。

4.そもそも古典的とも言えるこの手法は正しいのだろうか

フラグメント識別子を含めた1つの URI として考えるのならば、別の解決策を考えてみるのも1つかもしれない。

前項ではページの先頭がどこかを定義する必要があったが、純粋にページの最初であるのが多いと思う。アクセシビリティの分野で名高い富士通株式会社株式会社インフォアクシアでは body 要素の開始3行以内にページの先頭へのリンク先として id 属性が記述されている。

つまり、極端な話をしてしまえばページの最上部へブラウザが表示してしまえばいいとなる。
これを実際にやっているのがニコニコ動画である。

ニコニコ動画では body 要素の開始直後にページの最初に戻るための id 属性が空の a 要素で記述され、そこにページ下部にあるリンクから参照されているが、その方法が JavaScript で id 属性値が PAGETOP であるところまでスクロールさせると言う手法である。

この方法であれば URI はフラグメント識別子を含めずにページの最初に遷移させることが可能となる。ただし、潜在的には #PAGETOP があるために、見た目上はフラグメント識別子を含めない URI であっても実質的にはこれまで通りの方法とあまり変わらないのは確かである。
さらに言えば、あくまでブラウザ上の表示位置をスクロールして変えただけであって、例えば音声ブラウザではそこに遷移したことにならないので意味が無い。

結論

ここまで書いても結局答えはでてないのだが、一番近いと思っているのはこれ。

<p><a href="filename.html">このページの最初から再度読む</a>

ただしこれも問題があり、再度同一のリソースを参照することになるので「最初から読む=HTML の参照」となってしまう。意味合いが変わってくる。
また、最初から読むのが必ずしも HTML の先頭からとは限らないので、無駄が発生する可能性がある。
さらに、サーバへのリクエストが増える可能性もあるので、やはり無駄が発生する可能性がある。

なので、やはり結論が出ていない。この辺の考え方を偉い人がブックマークのコメントとかで教えてくれると助かったりします。

あー長かった。これ書くのに3時間かかるとかどんだけー。

参考サイト

ただの気まぐれではてなスター導入。簡単だった。

導入にあたっての参考ページ

まあ自分自身、はてなスターをポチポチ押すことは3日に1回くらいだからー。押す時は1日に20回以上ポチポチしたりするけど。

追記 2007年12月5日 10:37

星の位置がおかしかったのを直した。

N905i がこれまでと一線を画したデザインであるので非常に気になる。SH に近くなった感じ。
買いたいと思っても嫁に却下されているので何とか説得したいです(何

さて以前 XHTML+CSS Slideshow Tool を作りましたが、今回は勉強も兼ねて XML と XSLT で構成してみました。

XML+XSLT Slideshow Tool とは

XML と XSLT の組み合わせで PDF 印刷することを前提に作られたプレゼンテーションツールです。
基本姿勢は前回とほぼ同じです。使い方とか。

XSLT スタイルシートを書くこと自体はそれほど難しくもなく、ただの XML 整形式であれば障壁なんてなかったです。ただ、XML 文書であるため、要素の定義をきちんとしなければならないです。本来であれば XML Schema か DTD で定義したいところですが、それは次回の課題と言うことで。。。

と言うか、極論を言ってしまえば XSLT スタイルシートが無くてもこのツールは成り立ちます。XML 文書用に CSS を書けば済みますし。
その場合、XML 文書の <?xml-stylesheet type="text/xsl" href="xxst.xsl" ?> の部分を <?xml-stylesheet type="text/css" href="hoge.css" ?> とすればよいです。

以下今回のツールを作って思ったこと。

XML+XSLT と言う言葉自体がなんだか違和感を覚えるのはなぜだろう。
それはともかく、XSLT スタイルシートで文書を変換するパーサはブラウザに依るわけですが、やはり重いです。まだこの程度の文書量ですし、スタイルシートも大したことを書いてるわけでもないのでそこまででもないですが、HTML のレンダリングとは別にパーさが存在するので、どうしても1クッション分が重くなります。まあこの辺のロジックはよく分からないですが、実用性に耐えるものとはあまり思えず。。。

とは言え、これはこれで結構面白いです。本格的に XML を勉強したわけですが、これを作るのに本1冊で済みました。まあ見る人が見ればアレな中身でしょうが、取っ掛かりとしてはとりあえず、って感じで。

しかし要素名は何でも良いと言っても、XHTML で定義されているのをそのまま持ってくるのはさすがに気が引けたのでやめましたが、かと言って全て独自でやれと言うのも無茶な話で。改行とかどーしろとと思ったのでそこはそのまま br にしましたが。
XHTML のそのままでも良かったですけどね。XHTML の名前空間を使えば良いわけですし。

と言った感じで実用性がさらに下がったツールの紹介でした><

このアーカイブについて

このページには、2007年12月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年11月です。

次のアーカイブは2008年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。