Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

IRC Bot で、IRC をもっと便利にしたい

IRC 中毒の皆様におかれましては、例えば面白そうなサイトを見つけた時に、join しているチャンネルに URI を投げて話題にしてみたり、あるいは他のメンバーによってオモロ URI が投げられ、そこから有用な情報を得る機会が多々あることかと存じます。その際、単に URI をコピペするだけでは、その先にどういう内容が存在するかわかりませんし、また、それを避けようと、URI とともに例えば title をもコピペするとなると、二度手間、三度手間がかかることにもなり得、大変に面倒です。

優れた人工無脳として高名なとぼっちさんは、おしゃべりが達者なことはいうまでもないのですが、無脳的というよりもむしろ Bot 的な、つまりはパターンに対する反応を示す便利 Bot 的な機能においてもまた優れていて、中でもメッセージに URI が含まれていたらそのタイトルを取ってきてくれる機能は、上記した問題を解決してくれる大変に便利な機能であることだなーと思いましたので、僕が戯れに作成しつつある便利 Bot 君にも実装してみました。また、要望により、Content-Type や Content-Lengtj も(取れた場合は)表示するようにしました。

処理の流れ的には、まず HEAD リクエストをしてみて、Content-Type が text/html あるいは application/xhtml+xml であった場合、GET リクエストしてタイトルを抜き出し、それらの情報を IRC に流すってなニュアンスです(もすこし微妙なアレがあるのですが、細か過ぎるので割愛)。ともあれ、そんなこんなで URI を出すだけでタイトルその他を取得して表示してくれるので、なかなかに便利です。

ところで、MyClip という、気になった Web ページを、ブックマークレットを使用することによりほとんど手間をかけずにクリップすることができるサービスが存在します。クリップしたデータは、Javascript によって Blog のサイドバーに張りつけたり、RSS として外部へ公開することもできる他、ある記事を一番先にクリップしたひとが Clipper として称揚されたり、また、多くのひとの興味関心をアグリゲートすることによって、新着 Clip 一覧は大変興味深い情報の集う場所となっています。

僕も以前、「積ん読」という似たようなスクリプトを使って、Web 巡回中に出会った面白ぱげや、メモすべき URI 等をクリップしていたのですが、いろいろあってそのスクリプトは使えなくなってしまいました。しかし、あんまり困ってはいませんでした。なぜか? 「積ん読」が使えなくなった頃にはすでに IRC を始めていて、なにかメモすべきことがあればメインで常駐しているチャンネル「#順列都市」に投げておいて、別に作成したログ・ビューワでもって後から参照することができるからです。しかし、メモした URI を参照するためには、一日分のログから探さないとならないのがやや面倒です。

その辺どうしようかなと考えていた折り、「積ん読」的な、個人による興味の集成と、MyClip 的有象無象のアグリゲートの中間を行く、IRC メンバというある程度なにかを共有している者たちによるメモや話題にされた URI を一括して表示することができたらおもろいのではないかと思いました。そこで、先述した URI を投げたらタイトルとかを取ってくる機能にちょっと追加して、ただ表示するだけではなく、それをデータベースに記録する機能を実装してみました。んでもって、記録したデータ HTML あるいは RSS として表示するべく、簡単なスクリプトを書いてみました。

このページを参照する、あるいは、RSS をリーダに登録しておくことにより、チャンネル上で話題になった URI をいつでも簡単に参照することができるようになります。

しかしながら、これだけではあんまり面白くないので、チャンネル参加者それぞれが話題にした URI を、HTML および RSS で見ることができるようにもしてみました。

チャンネルで話題になった URI を一括して、かつ、見やすい形で表示することにより、後々の参照が容易になります。そのページや RSS を公開することで、誰かがうれしいことになるかもしれません。また、ユーザごとに表示するようにすることでなにがよくなったかというと、先に「積ん読」というスクリプトにより、興味を持ったりメモの必要のあったりする URI をクリップしていたと述べましたが、いまや(僕にとっては)Web 巡回と同じかそれ以上のウェイトを占めるようになった IRC から URI をメモするインタフェイスを得たことにより、それら Clip サービス的な機能を、IRC に一元化することができ、個人的には大変に便利になりました。

ここでは実装の詳細については述べませんでしたが(述べるほどのことはやってないので…)、例えば Bot をこのように実装することによって、IRC の面白さをさらに引き出すことが可能になるのではないかと思います。みなさんにも、それぞれであれこれ工夫して Bot を作成してみることをオススメいたします。ちなみに、Perl ならば Net::IRC を、PHP ならば Net_SmartIRC というモジュールを使うと、簡単に Bot を作成することができます。是非、お試しください。