replus

RE;COIL (リコイル)メンバーのarc@dmzによる日記

URIについて思うこと

書き途中だけど、まぁ、いいや。プログラマたるもの、思想は実装で示すべきだろう。

URI(Uniform Resource Identifier)

Webサイトにアクセスするとき、人は必ずそのサイトのアドレス──正確に言えばURIを指定する。例えばこのブログのURIは http://digitalmuseum.jp/text/replus/ だ。「お気に入り」とか「ブックマーク」はURIをいちいち入力する手間を省くための仕組みで、登録された項目をクリックしてWebサイトを表示するときには、必ずURIが呼び出されている。

URIは、もともと、インターネット上に存在する何らかの情報の場所を指定するURL(Uniform Resource Locator)の概念を拡張したものだ。詳しくはWikipediaのURIURLのページを見てもらえばだいたい分かる。自分でも説明を読むまで知らなかったが、今ではURLという言い方は古く、仕様上、公式にはURIに取って変わられているらしい。本稿ではいちおう表記をURIに統一するが、URLに読み替えても同じ話(httpスキームに絞った話)しか書いていない。

URIが指し示すもの

ファイル

Webサイトを作った人なら分かることだが、Webサイト上のURIが指し示すものは、普通、ファイルである。

例えば9/23付で公開した記事の中でリンクしたレポートのURI http://digitalmuseum.jp/text/replus/images/070831-nico.pdf は、そのままインターネット上のPDFファイルを指し示している。

また、このブログのURI http://digitalmuseum.jp/text/replus/ は一見、末尾にファイル名が付いていなくて何を指しているか分からないが、実は / で終わるURIはサーバ側(digitalmuseum.jp側)で index.html あるいは index.php を補完するように設定されている。このブログの場合は先のURIで http://digitalmuseum.jp/text/replus/index.php というファイルを指しているとするのが正解である。その証拠に、どちらのURIでアクセスしても同じ内容が見えるはずだ。

具体例はいくらでも挙げられる。例えば mixi は分かりやすくて、個々人のトップページを表示するプログラムのファイル名は home.pl 、メッセージの一覧を表示するプログラムなら list_message.pl などのようになっている。

昔は、URIがファイルを指すことがほとんどだった(と思う)。しかし、近年ではそれ以外の場合もある。というか、ファイル以外を指すほうが多くなってきている実感すらある。

情報

そもそもURIとは「何らかの情報のまとまり(Resource)のありかを特定する標準的な形式(Uniform Identifier)」だ。

ファイルという言葉は一般に「綴じるもの/クリアファイルの類」と説明される。コンピュータの世界では、有意味な一連の情報を綴じたものがファイルである。

だから、ファイル名はURIの一種になりうるが、URIが必ずしもファイルを指すわけではない。

では、「何らかの情報のまとまり(Resource)」には具体的にどんな種類があるのだろうか。

ブログの場合

手始めにブログのURIについて考えてみる。

固定リンクのURI

公に公開されたブログでは、だいたいどんなものでも記事ごとに「パーマリンク」とか「固定リンク」、「Permalink」というリンクが表示されており、クリックするとその記事だけを表示するページが出てくるはずだ。固定リンクという言い回しは知らない間に日本語圏で市民権を得ているようで、このブログでも使っている。

では、この固定リンクとは一体何を「固定」するものなのだろうか? permanent の訳は、英辞郎によれば

【形-3】 常設{じょうせつ}の、常雇用の、常置{じょうち}の、常在{じょうざい}する

である。要するに固定リンクとは、「このURIにアクセスすれば常にその記事が読めるよ」ということを保証してくれるURIへのリンクなのだ。

これは、ブログにおいてとても大事な仕組みだ。もし固定リンクがなかったら、「あ、あの記事どこ行ったかな」と思ったときにブログのトップページから時系列で追うか、タグ(記事ごとにキーワードを指定する仕組み)があればそこから辿るか…何通りかの方法があるにせよ、とにかく一発で記事の情報にたどり着くことはできない。「固定」という言葉を使って説明するなら、記事の情報一つ一つを、あるURIに固定するための仕組みが、固定リンクである。

調べてみたら、似たようなことを詳しくははてなの伊藤さんが二年以上前に書いておられる

その他のURI

固定リンクのところであらかた説明してしまったが、ブログには他にも「月別の記事群」「特定のカテゴリに属す記事群」などを表すURIがある。

まとめ

ブログでは、一つの記事情報に対し、その記事を表示するためのURIは複数存在する。例えばこの記事には、固定リンクでもアクセスできるし、2007年9月25日の記事としてもアクセスできる。タグ「Chippie」を含む記事を辿っても読める。

各URIにファイルを対応させると、一つの記事を修正したときにたくさんのファイルの修正を迫られる。

この処理は重い(時間がかかる)ので、個人向けの多くのブログでは、記事情報をデータベースに入れておき、URIが呼ばれたら、その都度データベースへURIに応じた記事を要求し、返ってきた結果を整形して動的にページを生成する、というやり方を採っている。

ただ、いちいちデータベースへ記事を要求する処理も軽いわけではない。そこで、「ページの閲覧者数が多い(=データベースへ記事を要求する回数が多くなってしまう)」「記事の修正・追加・削除などの頻度が低い(=各URIをファイルにしたとき書き換えを迫られる頻度が低い)」ならば、全てのURIに対応するファイルを書き換える方策のほうが軽い場合もある。著名なブログのシステム、Movable Typeはそのようにしている。どちらのほうが絶対的にいいというわけではないので、条件に応じて適した方法を採るべきである。

Wikipediaの場合

(以降、書き途中)

Movable Typeの機械的な文字列で構成されたファイル名は何とかならんのか。

Ruby on Rails で、URIがクラス、メソッド、引数を表す規約があるらしい。何という横暴。

URIは、情報のまとまりをなるべく忠実に表す文字列であるべきだ。なぜなら、プログラムの内部構造と違って、URIは、情報の受け手が直接に触れる部分=ユーザインターフェースの一部なのだから。

e.t.c.

ちょっとずつ書き足していこうっと…。


2007年9月25日の記事を全1件中1件目から計1件表示