コンテンツへスキップ
ものがたり
戻る

2004-09-14

XPathAtomicValue

うーん、意外とこれがめんどくさい。こいつはprimitive typeの値またはobjectと、XmlSchemaTypeの2つを引数にして生成される。しかもValueAsXXXなんていうプロパティがある。だから文字列とxs:intのXmlSchemaSimpleTypeでインスタンスを生成して、ValueAsBooleanなんて呼び出しも出来てしまう。

さらにはオブジェクト型の引数もあって、これはもうやりたい放題。ValueAsXXXを取得しようとすると、InvalidCastExceptionになるのだけど(大抵の場合。全てではないようだ)、XmlDocumentやXmlSchemaなんかで生成してもエラーにはならない。何の役にも立たないけど。

今のところ分かっているのは、ICollectionだかIEnumerableだかを渡しても、1つだけ内容を保持するものであればValueAsXXX(ValueAsList以外)はエラーにならないことと(1つだけエントリをもっているようなHashtableでさえOKなのだ)、objectがXPathAtomicValueであれば、その内容がそのまま流用されるということだ(ちなみにXPathNavigatorを渡してもNGだったので、要は単なるコピーコンストラクタなのだろう)。他にも隠し技があるのかもしれないが、いかんせんobject型の引数なので、気が付いたものを試すしかない。

ひとつ言えることは、これがXQuery実装における型操作をまともに使えるようにするための必要条件であって、しかも十分条件ではないということだ。もうちょっと使えるAPIにしてほしいなぁ…って、冷静に考えたらMS.Internal.Xml.*で「公開」されてるか…。

サイコロ3

とりあえず後半は明日ね、明日。

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のキャッシュとでは構成や目的が異なる、と言う点は、僕も妥当な主張だと考える。ただし、法律的な評価において、意味のある違いだとは思えない。

全然関係ないけど

↑の記事にはいくつか「トラックバック」と称するものがついているが、ほとんど役に立ってない。なぜなら、そのうちの多くが「プライベートモード」とやらになっているからだ。これはいろんな意味で、トラックバックとして出してはいけないものだと思うのだけど…。まず、プライベートモードの日記は、公開できないような性質の内容なのだろうから、思わぬところで尻尾を出させてしまってはいけない(right to read anonymouslyが守られていない)。ユーザーとして見る側も、公開されていないような日記など、存在しないも同様なのだから、何の参考にもならないリンクなど表示されても、かえって迷惑だ。そして日記を書いている当人からしたら、何か反応しているらしいんだけど肝心の内容が見えない、というのでは、不気味なことこの上ないだろう(少なくとも僕がされたらそう思う)。自分の見えないところで批判している臆病者の存在だとしたら、そんなの教えてほしくないし。これははてなダイアリーへの要望として出すべき事項だろうか。


コメント

cache or copy — 09/15/2004 00:42:42

キャッシュというよりはコピーではないかと。

yaneurao — 09/15/2004 04:21:40

これははてなダイアリーへの要望として出すべき事項だろうか。

はてなに出すべきだと思います、はい。私もプライベートモードの日記からのトラックバックについては、同感ですので、是非お願いしますm(_ _)m

atsushieno — 09/15/2004 05:10:20

cache or copyさん:んん、何を対象として話されているのか、その一文ではわかりません。タイトル?

やねさん: 了解っす〜。ちょっと今ごたごたしているので落ち着いたら投げます。

atsushieno — 09/15/2004 22:54:39

市民ではないため、キーワードには書けなかったので、地味にコメントに書いときました。

Footnotes

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


この記事を共有:

前の記事
サイコロ3
次の記事
XPathAtomicValue