MICANとわたし

このページはぽぽぽで更新情報の取得に使っているperlスクリプトMICANのページです。

MICAN2.0のリリースにあたって

そもそも、MICANというか、いわゆる「俺アンテナスクリプト」をつくろうと思ったのは、朝日奈アンテナの「Mar問題(*1)」にいらいらしていたころに、自分で作るのもいいかもと、朝日奈作者の片桐さんの言われたのが、最初。それまでは、「ぼくには技術的に無理だ。」と思っていたものの「できるよ」と言われると、なんだかそんな気になるのが、人間の不思議なところ。かといって、すぐに作り始めたわけではなく、なぜか、半年後の11月になって急につくりはじめたのでした。

そもそも「ぽぽぽ」が、他のアンテナの持つ情報をあつめてきて、それを更新時刻順にならべて表示する。という、他人の褌で相撲をとるだけのものだったので、その部分だけを抜きだした形で作成しました。ついでにHEADリクエストによる更新情報の取得にも対応し、1998年の11月に公開(ver0.3)しました。。その後、機能追加や、改良をくりかえし、1999年8月にはver1.3を公開するに至りました。。

ただ、「あたらしい情報」を「あたらしい更新時刻をもつ情報」と、考えて作られていたため、どうしても、ふとしたキッカケででてくる偽の情報に踊らされたり、各アンテナ間で情報がループしてしまうることが頻発しました。これは、「新しい情報」=「新しい更新時刻の情報」と考えていたころから、結果として「更新時刻は古いけれど、新しく取得した情報」を無視していたためでした。

そこで、MICAN2.0では、DI形式の情報のみを用いることを前提に「新しい情報」=「「新しく取得した情報」かつ「古くない情報」」と考えています。「新しく取得した」というのはlast-modified-detectedから、古くない情報というのはexpire(s)で判断します。また、MICAN2.0には実装していませんがExpireされたことをトリガーにして、更新情報を取得し、last-modified-detectedの新しい情報を流せば、その新しい情報が「正しい情報」として流れることになります。

これにより、ループは回避でき、偽の情報もExpireされることで淘汰されます。また、自分自身がauthorizeした情報が自分のところに戻ってきても、それは、現在自分の持っている情報と同じlast-modified-detectedですから、「新しい情報」ではありません。

ただ、これでは、hina.txt形式や、その他のDI以外の形式の情報が利用できません。そこで、hina.txt形式からの情報はlast-modified-detectedを最も古い値に変換し、別のDI情報源からの情報を優先するようにしています。

まぁ、結局のところ、いわゆるDI情報(*2)を活用することで、最新の正しい更新時刻を提供するのが、あたらしいMICAN2.0なんですよ。ということです。

  1. なんだっけ?たしか、hina.txt形式(似た形式含む)をリモートに指定したときに、URL中にmarなどの月の3文字表記が含まれていると、偽の更新時刻を取得してしまう。というバグ。最新の朝日奈アンテナでは修正されているもよう。
  2. DIについては、DIをめぐる議論をごらんください。

できます

できません

使い方

入手先

サポート


Konishi Katsuhiro
Last modified: Sun Sep 26 11:04:39 JST 1999