記事本文
はてなパラドックス
人力詮索サイト さてはのプレスリリースを行った記事を見た時にこの問題に気付きました。
1 日は、日付が変わっても仕事をしていたため、残念ながら「さては」の存在を知ったのは閉鎖後だったのですが、オープンの記事を見たときに前後のページのナビゲーションの「前の記事」にあたる部分がはてなダイアリー日記 - 「人力詮索サイトさては」閉鎖のお知らせだったので、すごく違和感を覚えました。 「何でオープンの記事より前に閉鎖のお知らせが来てるんだ ? 」 と。
すなわち、オープンの記事が書かれた時間は 4 月 1 日の 9:21 であるのに対し、その前の記事であるとされる閉鎖のお知らせの記事が書かれた時間は 4 月 1 日の 23:59 であるのです。
私は「記事の日付」で前後を判断しているのだろうと思い込んでいましたが、どうやら「同じ日付の記事は、実際に表示される順番」で前後を判断しているようです。
例えば、この記事を書いている時点でのはてなダイアリー日記の記事の最新 10 件を、見出し別記事表示の順番を基準として並べると次のようになります。
- キーワードページ間の移動リンクについて ( 4 月 2 日 11:10 )
- レビュー一覧のRSS配信について ( 4 月 2 日 11:42 )
- 「人力詮索サイトさては」オープン ( 4 月 1 日 09:21 )
- 「人力詮索サイトさては」閉鎖のお知らせ ( 4 月 1 日 23:59 )
- はてなウェブサービスページの公開について ( 3 月 31 日 16:23 )
- はてなフォトライフデスクトップへのスクリーンセーバー機能の追加について ( 3 月 31 日 17:10 )
- 「zef」テーマ ( 3 月 31 日 17:37 )
- はてなダイアリーのサービス一時停止について ( 3 月 30 日 12:43 )
- トップページ ( 3 月 29 日 12:04 )
- はてなダイアリー日記 - キーワード編集履歴の公開案について ( 3 月 29 日 14:57 )
日付別表示の時の順番を基準にしているため、必ずしも時系列通りにはなっていません。 時系列通りに並べるのが絶対ではありませんので、「パラドックス」と呼ぶのは違うかもしれませんが、複数の見出しに渡る連続性のある話題の場合には前後関係がおかしくなるため、はてなパラドックスと呼ばせていただきます。
はてなパラドックスが起こるケース
- 見出しのリンク先を見出し別にしている ( はてなダイアリー - はてなダイアリーガイド「見出しをつけてみる」とは - 見出しの『■』のリンク先 )
- 同じ日付の新しい書き込みを下方向に追加するように設定している、またはそのようにテキストエリアに追記している ( はてなダイアリー - はてなダイアリーFAQ「設定の変更」とは - 管理ツール画面「日記の設定 > 基本設定 > 新しい書き込み」…「同じ日付の新しい書き込みは、 〜方向に追加する」の設定 )
この 2 つは AND 条件です。 両方とも該当しなければ発生しません。 はてなダイアリーの記事別表示が便利になりましたの時は、同じ日付の新しい書き込みを上方向に追加するようにしている自分のはてなダイアリーでしか確認していなかったため、このパラドックスに気付きませんでした。 また、私の場合は携帯電話からメールで更新しているので、設定によって自動で追加されますが、パソコンから更新する人も、新しい記事を下方向に追記していくスタイルの人は該当します。
初期値は下に追加するようになっているため、このパラドックスが発生する人はけっこうな数になるのではないでしょうか。
私の巡回先のはてなダイアリーで調べてみると、以下の方たちが該当していました。
意外と少なかったですね……。 そもそも見出し別表示を採用しているところが、巡回先の半分以下だったり、新しい記事を上に配置するようにしている方がほとんどだったりしたので、最終的に 3 つになりました。
はてなパラドックスが起こらないケース
- 見出しのリンク先を日付別にしている ( はてなダイアリー - はてなダイアリーガイド「見出しをつけてみる」とは - 見出しの『■』のリンク先 )
- 同じ日付の新しい書き込みを上方向に追加するようにしている、またはそのようにテキストエリアに追記している ( はてなダイアリー - はてなダイアリーFAQ「設定の変更」とは - 管理ツール画面「日記の設定 > 基本設定 > 新しい書き込み」…「同じ日付の新しい書き込みは、 〜方向に追加する」の設定 )
日付別にしていれば、前後のページへのナビゲーションは「前の日 | 次の日」になるため、時系列に沿った並びになりますし、また見出し別表示にしていても、新しい書き込みを上方向に追加するようにしていれば時系列に沿った並びになります。
はてなパラドックスが起こるが、目立った影響が出ないケース
- 時刻に拠らない見出しをつけている ( はてなダイアリー - はてなダイアリーのヘルプ - 好きなname属性の見出しをつける )
- 各見出しの内容に連続性が無い
はてなパラドックスが起こるケースの条件に合致し、かつ上記の 2 条件に合致する場合は、はてなパラドックスが起きますが目立った影響はありません。 見出し別の URI は時刻に拠るものではなくなりますし、それぞれの見出しの内容が連続していなければ、はてなパラドックスが起こっていても、ダイアリーの作成者以外は違和感を覚えることはないでしょう。
はてなパラドックスの解決案 - ユーザ側へ
見出し別表示をやめるか、新しい書き込みを上方向に追加・追記するようにすれば解決します。 しかし、それでは根本的な解決になりません。 よって、次にはてな側が取れるであろう解決案を示します。
はてなパラドックスの解決案 - はてな側へ
おそらく、現状では記事のソート条件は 「日付 > 見出しの順番」 となっているのだと思います。 記事を日付別に並べた上で、同じ日付であれば上方向に配置される記事をより最新のものとする何らかのキーを設定しているのでしょう。 先程のはてなダイアリー日記の記事の最新 10 件の URI を例に出すと、
- http://d.hatena.ne.jp//hatenadiary/20050402/1112407832
- http://d.hatena.ne.jp//hatenadiary/20050402/1112409744
- http://d.hatena.ne.jp//hatenadiary/20050401/1112314896
- http://d.hatena.ne.jp//hatenadiary/20050401/1112367599
- http://d.hatena.ne.jp//hatenadiary/20050331/1112253829
- http://d.hatena.ne.jp//hatenadiary/20050331/1112256642
- http://d.hatena.ne.jp//hatenadiary/20050331/1112258262
- http://d.hatena.ne.jp//hatenadiary/20050330/1112154216
- http://d.hatena.ne.jp//hatenadiary/20050329/1112065469
- http://d.hatena.ne.jp//hatenadiary/20050329/1112075835
となっているので、ソートキーが 2 つあるのは容易に想像できます。 IRC で指摘を受けたのですが、むしろ 「日付でソートしていて、見出し毎にはソートしていない ( = 日付内の記事の並びそのまま ) 」 という可能性もあります。
時刻による見出しの場合、その時刻の UNIX タイムスタンプから URI が生成されるので、そのタイムスタンプを唯一のソートキーとして見出し別の記事をソートするようにすれば良いと思います。
- http://d.hatena.ne.jp//hatenadiary/20050402/1112409744
- http://d.hatena.ne.jp//hatenadiary/20050402/1112407832
- http://d.hatena.ne.jp//hatenadiary/20050401/1112367599
- http://d.hatena.ne.jp//hatenadiary/20050401/1112314896
- http://d.hatena.ne.jp//hatenadiary/20050331/1112258262
- http://d.hatena.ne.jp//hatenadiary/20050331/1112256642
- http://d.hatena.ne.jp//hatenadiary/20050331/1112253829
- http://d.hatena.ne.jp//hatenadiary/20050330/1112154216
- http://d.hatena.ne.jp//hatenadiary/20050329/1112075835
- http://d.hatena.ne.jp//hatenadiary/20050329/1112065469
タイムスタンプでのみソートすればこのようになるはずです。

