<?xml version="1.0" encoding="UTF-8" ?>
<entry
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
	xml:lang="ja-JP"
>
	<title>txqzのURI設計</title>
	<id>tag:txqz.net,2009-05-12:blog/2009/05/12/2331</id>
	<link rel="self" href="http://txqz.net/blog/2009/05/12/2331.atom"/>
	<link rel="alternate" type="application/rss+xml" href="http://txqz.net/blog/2009/05/12/2331.rdf"/>
	<link rel="alternate" type="application/xhtml+xml" href="http://txqz.net/blog/2009/05/12/2331.xhtml"/>
	<link rel="alternate" type="text/html" href="http://txqz.net/blog/2009/05/12/2331.html"/>
	<link rel="contents" href="http://txqz.net/blog/2009/05/12/.atom" title="2009年5月12日"/>
	<link rel="first" href="http://txqz.net/blog/2001/08/04/0001.atom" title="地球空冷化"/>
	<link rel="prev" href="http://txqz.net/blog/2009/05/11/2116.atom" title="研修テキストのマークアップのしかた"/>
	<link rel="next" href="http://txqz.net/blog/2009/05/16/2312.atom" title="フォーカスを当てるとデフォルト文字列が消えるinput text (jQuery編)"/>
	<link rel="last" href="http://txqz.net/blog/2010/02/14/1221.atom" title="VIASO/K-power追悼"/>
	<author>
		<name>陽坂智佐</name>
		<email>spambasket@txqz.net</email>
	</author>
	<content type="xhtml">
		<div xmlns="http://www.w3.org/1999/xhtml">
<p>とくに<a href="http://www.ietf.org/rfc/rfc3986.txt">RFC3986</a>とかで明示されているわけではないけど、Apacheとかを使っていると、http://example.com/hoge/のようなスラッシュで終わるURIはexample.comホストの中にあるhogeフォルダを指していると解釈するのが自然だ。もしDirectoryIndexで指定されたファイルが存在せずIndexesオプションが有効になっていれば、hogeフォルダ以下にあるファイルの一覧が表示される。hogeがフォルダである場合にhttp://example.com/hogeとスラッシュを省略すると、http://example.com/hoge/にリダイレクトされる。</p>
<p>現在のtxqzはブログの記事をデータベースから動的生成して一定期間キャッシュするような設計になっていて、たとえばこのエントリのURIはhttp://txqz.net/blog/2009/05/12/2331だけど、実際にドキュメントルートにblogというフォルダがあってその中に2009というフォルダがあって05というフォルダがあって12というフォルダがあって2331というファイルが置いてあるというわけではない。それでも、なるべく実際にそういう構造になっているかのように見せかけている。たとえば:</p>
<dl>
<dt><a href="http://txqz.net/blog/2009/05/12/2331">http://txqz.net/blog/2009/05/12/2331</a>にアクセス</dt>
<dd>2009年5月12日23時31分の記事(これ)が表示される</dd>
<dt><a href="http://txqz.net/blog/2009/05/12/">http://txqz.net/blog/2009/05/12/</a>にアクセス</dt>
<dd>2009年5月12日の記事インデックスが表示される(/2009/05/12/フォルダへのアクセスと捉え、Index of的な表示を行う)</dd>
<dt><a href="http://txqz.net/blog/2009/05/12">http://txqz.net/blog/2009/05/12</a>にアクセス</dt>
<dd>2009年5月12日の記事が新しい順に表示される</dd>
<dt><a href="http://txqz.net/blog/2009/05/">http://txqz.net/blog/2009/05/</a>にアクセス</dt>
<dd>2009年5月の記事インデックスが表示される</dd>
<dt><a href="http://txqz.net/blog/2009/05">http://txqz.net/blog/2009/05</a>にアクセス</dt>
<dd>2009年5月の記事が新しい順に表示される</dd>
<dt><a href="http://txqz.net/blog/2009/">http://txqz.net/blog/2009/</a>にアクセス</dt>
<dd>2009年の記事インデックスが表示される (実際は、年単位だと記事数が多くなるので月別の代表的な記事を何件か表示する。特にその月に多くタグ付けされたタグがついている記事を代表的な記事としている。)</dd>
<dt><a href="http://txqz.net/blog/2009">http://txqz.net/blog/2009</a>にアクセス</dt>
<dd>2009年の記事が新しい順に表示される</dd>
<dt><a href="http://txqz.net/blog/">http://txqz.net/blog/</a>にアクセス</dt>
<dd>記事インデックスが表示される(全記事の一覧を挙げても多すぎるので、年別の代表的な記事を何件か表示する。選び方は月別と同様。)</dd>
<dt><a href="http://txqz.net/blog">http://txqz.net/blog</a>にアクセス</dt>
<dd>記事が新しい順に表示される</dd>
</dl>
<p>また、古い順に読みたいという需要もあるため、<a href="http://txqz.net/blog/2009?1">http://txqz.net/blog/2009?1</a>などのように後ろに"?<var>ページ番号</var>"をつけてアクセスするとその範囲の記事が古い順に並べられた部分リストが見られるようになっている。これは<a href="http://txqz.net/blog/2009/05?1">http://txqz.net/blog/2009/05?1</a>でも<a href="http://txqz.net/blog/2009/05/12?1">http://txqz.net/blog/2009/05/12?1</a>でも同様の機能となるが、最近は1日はおろか月に15件も記事を書かないのであまり意味がない。たんに降順だけでなく昇順でも読めますというだけ。ただ、特定の内容について何回かに分けて記事にしてたりすると降順だと読みにくくなったりするので、ぜひ他のブログにも似たような機能をつけて欲しいところ。もちろん<a href="http://microformats.org/wiki/ja" title="Microformats Wikiにようこそ！ · Microformats Wiki">Microformats</a>には可能な限り対応し、<a href="http://autopagerize.jottit.com/">Autopagerize</a>などの便利なツールの恩恵に最大限預かれるようにしている。</p>
<p>以上の議論は記事データベースの中からどの範囲の記事リストをどの順で表示するかというものだが、そこから選ばれた記事リストをどういう表現であらわすかという問題もあり、txqzの場合は拡張子をつけることで対処している。<a href="http://txqz.net/blog/2009/05/12/2331">http://txqz.net/blog/2009/05/12/2331</a>と拡張子をつけずにアクセスした場合、ユーザーエージェントがtext/htmlをくれと言えばHTML4.01でマークアップしたものをtext/htmlとして返すし、application/xhtml+xmlをくれと言えばXHTML1.1でマークアップしたものをapplication/xhtml+xmlで返す。<a href="http://txqz.net/blog/2009/05/12/2331.html">.html</a>という拡張子をつければHTML4.01、<a href="http://txqz.net/blog/2009/05/12/2331.xhtml">.xhtml</a>ならXHTML1.1、<a href="http://txqz.net/blog/2009/05/12/2331.rdf">.rdf</a>ならRSS1.0、<a href="http://txqz.net/blog/2009/05/12/2331.atom">.atom</a>ならAtom、<a href="http://txqz.net/blog/2009/05/12/2331.json">.json</a>ならJSONを返す。このブログのフィードが<a href="http://txqz.net/blog.rdf">http://txqz.net/blog.rdf</a>ないし<a href="http://txqz.net/blog.atom">http://txqz.net/blog.atom</a>で提供されているのは単にこの仕様に従っただけで、最新の記事というリソースがあって、それをHTMLでマークアップすれば人間向きの表現になり、RDFやAtomでマークアップすれば機械向けの表現になる。リソースとしての意味合いはまったく等しく、単に表現が違うだけなのだから拡張子で違いを表すのが自然だ。</p>
<p>ほかのブログサービスがどうなっているかというと、たとえばはてなダイアリーだと、<a href="http://d.hatena.ne.jp/denken/">http://d.hatena.ne.jp/denken/</a>のフィードは<a href="http://d.hatena.ne.jp/denken/rss">http://d.hatena.ne.jp/denken/rss</a>で提供されている。完全に後出しじゃんけんなんだけど、ファイル名がrssとあってもなんのRSSか分からないわけで、もし最新の記事のRSSなのだったら、人間向けに/latest.html、機械向けに/latest.rssみたいな感じで提供されていればより分かりやすいURIになりますね。そんなのを追求することがビジネス的にどれだけ意味があるか知りませんが。</p>
<p>ただまあ、こういう内側の仕様や外側のマークアップやUIを考えることばかりに興味がいって、肝心のブログ記事が全然書かれてなかったりするのでナニでアレなわけです。</p>
<hr />
<p>拡張子で表現内容を変える例として<a href="http://mitter.jp/" title="Mitter - 動画視聴体験共有サービス">Mitter</a>がある。これは人間向け表現を<a href="http://mitter.jp/youzaka.html">http://mitter.jp/youzaka.html</a> (ただし、拡張子なしでのアクセスが一般的)、機械向け表現を<a href="http://mitter.jp/youzaka.atom">http://mitter.jp/youzaka.atom</a>で提供している。もしかしたらapplication/atom+xmlをほしがるユーザーエージェントがアクセスしたら拡張子なしでもAtom版が返ってくるかもしれないけどそこまでは検証してない。</p>
		</div>
	</content>
	<category term="このサイト"/>
	<category term="URI"/>
	<trackback:ping>http://txqz.net/blog/2009/05/12/2331/tb</trackback:ping>
	<published>2009-05-17T15:58:34+09:00</published>
	<updated>2009-05-18T19:02:58+09:00</updated>
	<rights>Attribution-Noncommercial-Share Alike 3.0 Unported</rights>
</entry>