2008-09-26 アーカイブ

http://hxxk.jp/2008/09/26/

「存在しないはてなキーワード」の適切なレスポンスや、そのキーワードが生成される理由などの考察

記事データ

投稿者

望月真琴

投稿日時

2008-09-26T00:30+09:00

タグ
概要

解説が書かれていないはてなキーワードは、ユーザがリクエストした文字列に対する情報を返せていないので、 404 Not Found のレスポンスを返すのが適切だと考えました。また、書籍の著者名などでこういったキーワードが生成されるようなので、それについての考察も行っています。

リプライ

6 件のリプライがあります。

記事本文

404 Not Found で良いんじゃないかなあ

はてなのキーワードページに関して起こっているここ数日のやり取りについては、私も色々と思うことがあるのですが、関連リソースを全て追えていません。 そのためそれまでの経緯は書きませんが、昨日公開された存在しないキーワードへのリンクに nofollow 属性を追加しました - はてなダイアリー日記という記事のコメント欄のやり取りでちょっと気になった点があり、 RFC を読み返すことになったのでメモ。

phaedra 2008/09/24 22:18 存在しないのに404じゃないんですか?

yukichi99 2008/09/24 23:22 これからキーワードの中身を作るんだから、404じゃないでしょう。ウィキペディアで存在しない記事を指定するのと同じですよ。

この存在しないキーワードというのは、はてなキーワードにその時点で登録されていないキーワードであって、作成予定のキーワードではないと思うんですが......。 はてなキーワードのトップページの検索ボックスに適当な文字列を入力してもこのキーワードはまだ作成されていません。という結果が返ってきますし、その全てが作成予定の文字列ではないと思います。

もっとも、「このキーワードはまだ作成されていません。」という表現だけを見れば これからキーワードの中身を作る と考えられなくもありません。 これは「このキーワードはまだ作成されていません。」ではなくて「このキーワードは存在していません。」などの言い回しであれば起こらない勘違いでありますが。 ( 後述しますが、「まだ作成されていません」と書かざるを得ない事情がはてなキーワードには存在します。 )

さて、これから作るのか作らないのかは置いておいて、リクエストされた内容 ( ユーザが求めるキーワード文字列に対する解説 ) が実際には存在していない状態を RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 と照らし合わせてみました。

200 OK だと、

10.2.1 200 OK

The request has succeeded. The information returned with the response is dependent on the method used in the request, for example:

GET

an entity corresponding to the requested resource is sent in the response;

HEAD

the entity-header fields corresponding to the requested resource are sent in the response without any message-body;

POST

an entity describing or containing the result of the action;

とあるように、 The information returned with the response 、すなわちリクエストに応じた情報がレスポンスとして返されることです。

404 Not Found だと、

10.4.5 404 Not Found

The server has not found anything matching the Request-URI. No indication is given of whether the condition is temporary or permanent. The 410 (Gone) status code SHOULD be used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.

とあるように、 The server has not found anything matching the Request-URI. 、すなわち Request-URI にマッチするものが無かったということです。 それは一時的なものか恒久的なものかということは関係ないため、キーワードとして作成されていないのか、あるいは作成予定のキーワードであるがまだ解説が書かれていないのかという区別をしなくても、 200 OK ではなく 404 Not Found を返される方が適切かと思います。

解説が無い状態のキーワードに対して 200 OK を返す今の現状を恣意的な書き方をすると、

  1. ユーザが「望月真琴」って誰なのさ ? と思ってはてなキーワードの望月真琴にアクセスする (Request)
  2. はてなのサーバが Request に応じてはてなキーワードの望月真琴のページをユーザに返す (Response: 200 OK)
  3. ユーザ「いや俺が知りたいのはその人の情報であって『このキーワードはまだ作成されていません。』っていうガッカリ回答じゃないんだよ ! 」
  4. はてなのサーバ「うっせばが ! 今こっちが持っているソイツの情報はないけどオマエが聞いてくるもんだから答えてやったんだよ ! 」
  5. ユーザ「無いなら無いでそう (404 Not Found) 言えよ ! 一瞬だけ『はいはいその人の情報あるよーあるよー』 (200 OK) とか思わせぶりなことすんな ! 」

という感じですよね。 まあ、これは Wikipedia の存在しない記事の表示でも同じことが言えますが......

そもそも何故そのようなキーワードページが生成されるか

望月真琴とは - はてなキーワードを先ほど例に出しましたが、このキーワードも ( この記事執筆時点では ) 「このキーワードはまだ作成されていません。」なキーワードです。 これは次に示す順序で自動で生成されたものと思われます。

  1. 書籍を執筆する
  2. Amazon に実践 Web Standards Design - Web 標準の基本と CSS レイアウト &Tips が登録される
  3. 実践Web Standards Design―Web標準の基本とCSSレイアウト&Tips - はてなダイアリーが生成される
  4. 著者名は自動的にキーワードとして作成され、望月真琴とは - はてなキーワードが生成される

少なくとも、 ASIN コードが存在する書籍の著者名はこのようにしてキーワードページが生成されています。 もしかしたら著者名以外でも「このキーワードはまだ作成されていません。」なキーワードがあるかもしれませんが、今回は自分の名前のキーワードが「このキーワードはまだ作成されていません。」なキーワードだったので、それを例にとりました。

有名な著者であればはてなユーザによってキーワードとしての解説がされているため、自動生成で作成されたキーワードについては「このキーワードはまだ作成されていません。」という言い回しになっているのではないか、と推測しています。

現時点では「 ASIN ページ→著者名キーワード」という方向でキーワードリンクが存在するのみで、逆方向の「著者名キーワード→その著者が関わった ASIN ページ」へのリンクがありません。 自動生成の際に、そのリンクを解説欄に自動で記述していれば「このキーワードはまだ作成されていません。」よりは印象が違っていたと思うのですが......。 ( ちなみに、解説欄ではなくて関連商品のサムネイルという形で ASIN ページへのリンクがあるにはありますが、望月真琴とは - はてなキーワードのように、名前が被っているだけで著者本人には全く関係の無い商品も表示されています。 )

トラックバック送信先

存在しないキーワードへのリンクに nofollow 属性を追加しました - はてなダイアリー日記

解説が書かれていないはてなキーワードは、ユーザがリクエストした文字列に対する情報を返せていないので、 404 Not Found のレスポンスを返すのが適切だと考えました。

リプライ

6 件のリプライが送られています。 この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。

2008-09-26T07:15+09:00 - 瑠璃

はてなキーワードの仕組みを理解しているわけじゃないのでアレですが。「作成されていないキーワード」はあくまでも「作成されていない」のであって、自動生成されたという書き方は語弊があるような気がします。なぜなら、キーワードとして登録されてはいるが説明文のない「説明待ちのキーワード」というものがありますので、「作成されていない~」とは明確に異なります。参考→http://d.hatena.ne.jp/keywordlist?s=empty

2008-09-26T07:20+09:00 - 瑠璃

本題の、作成されていないキーワードページに対しては「キーワードして存在していない」のだから404でいいんじゃない?派(何)です。

2008-09-26T08:06+09:00 - 瑠璃

連投すみません。最初のコメントで「語弊がある」と書いたものの、「作成されていません」と表示されるものは出鱈目な語句を入力した場合とは異なる表示をするので、「自動生成された」というのも間違っているわけではないですね。すみません。(そのあたりが議論をややこしくしている一因なのでしょうが)

2008-09-26T12:33+09:00 - nagise

キーワード参照のURLと新規キーワード登録のURLが違えばいいんじゃないですかね。http://d.hatena.ne.jp/Nagise/20080925/1222346563

2008-10-07T23:50+09:00 - 望月真琴

>瑠璃さん 今回は書籍の著者を例に出しましたけど、他にも自動生成されるパターンはありますね( Wikipedia に存在していてはてなキーワードにない語句とか)。そういったキーワードに対するはてな側の表現がややこしさを増大させているような気がします。

2008-10-07T23:55+09:00 - 望月真琴

> nagise さん たとえば私の名前のキーワードだと <a href="http://d.hatena.ne.jp/keyword?mode=edit&#38;word=%CB%BE%B7%EE%BF%BF%B6%D7">http://d.hatena.ne.jp/keyword?mode=edit&#38;word=%CB%BE%B7%EE%BF%BF%B6%D7</a> になっていますね。<キーワード登録

補足情報

著作、講演、制作実績など