ものがたり(旧)

atsushieno.hatenablog.com に続く

Webサーバにおけるキャッシュ

ああ、だからそんなことしてるバヤイじゃないっつーに…

このキャッシュの性質に関する議論は見るべきものがある。まだ読んでいなければ、まずは読むべき内容だ。

「デジタル化、ネットワーク化の進展に伴い、通信機器における蓄積、コンピュータのメモリー上における蓄積、キャッシュサーバーなどにおける蓄積など、瞬間的かつ過渡的なものを含め、プログラムの著作物及びその他の著作物に関する電子データの『一時的蓄積』の扱いが重要課題となっている」という一文において、「キャッシュサーバーにおける蓄積など『が』瞬間的かつ過渡的なもの」である、などと断定して違和感を感じることはおかしいのだが(句読点の読み方というものがあろう)、Webページのキャッシュは有形的複製と言うべきであろう。って、元記事にも書いてあるとおり、こんな議論は何も新しいものではないけど。

大前提として、Webキャッシュが高木氏の言うところの「本来のキャッシュ」に近くなったからといって、著作権法上の複製の問題が無くなるわけではないことは、たとえばこの手の問題に五月蠅い新聞社などのニュースサイトから、記事本文をまるまる持ってきて自分のサーバにコピーして(広告はあってもなくてもいい)、自分のサーバから公開することが議論の対象になることを考えればすぐ分かる。

つまり、サーバサイドWebキャッシュをクライアントサイドWebキャッシュにすることには、意味はほとんど無い。

外部へのアクセスに対するレスポンスタイムが未知数であるがゆえにHTTPのIF-Modified-Sinceをクライアント実装が無視することがあることを前半で指摘しておきながら、Googleが同じような設計思想になっていることが理解できないはずはない。そこで、具体的には書かれていないが、ここでは更新要求はあくまでキューイングされるのみで、そのキューに基づいてキャッシュ更新のためのWebリクエストは別のルーチンが行う、といった仕組みが、ここでは前提になっていると考えよう。

しかしそれでも、キャッシュへのアクセスという、比較的頻繁に実行されるであろうストアドプロシージャが、アクセス数のみの更新*1というシンプルなものを、元記事で述べられているような条件付きキャッシュ更新処理のような、複雑なコードにすることが、パフォーマンス上の問題になることは、想像に難くない。

また、Googleはあくまで外部のサーバに対してはクライアントなのだ、ということをちゃんと認識しておかなければならないだろう。クライアントたるGoogleとしては、外部のサーバから取ってきた情報は、まぎれもなくWebブラウザにおける「キャッシュ」と同等の存在だ。これをキャッシュと呼ぶことが「不誠実だ」などという主張は、採るに足りない。

Winnyのキャッシュがキャッシュでない、という見解には疑問がある。データのアイデンティティと、データのオリジナルのリソース ロケーションとは、何ら関連性が無い。オリジナルのリソース ロケーションに存在した情報を複製したものでなければ「キャッシュ」と呼ばない、という前提は、少なくとも僕は聞いたことがない(従来のキャッシュのオリジナルのリソースロケーションがたまたま固定の位置にあっただっただけではないか)。

そもそも厳密に言えば、名前解決された先のIPに、ずっと同じWebサーバ(物理的な装置)が存在しているとは限らないし、中継に中継を重ねたシステムにおいて、必ずしもオリジナルがかえってきているとは限らない(悪意のproxyサーバがある場合)。つまり、データの出自に対する信頼性という意味においても、通常のHTTP Webサーバのキャッシュは、Winnyのそれとそんなに変わらないはずだ。

「キャッシュ」という言葉が政治的に拡大解釈されている。全くその通りだと思う。

WebのproxyサーバのキャッシュとWinnyのキャッシュとでは構成や目的が異なる、と言う点は、僕も妥当な主張だと考える。ただし、法律的な評価において、意味のある違いだとは思えない。

*1:これは間違いなくあると思っているのだけど、もしなければ更新系がそもそも一切存在しないことになろう。ますます重くする理由が無い。