Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

"IRC Hacks" 評

IRC Hacks
  • Paul Mutton
  • ペーパーバック
  • 059600687X
  • 2004/11/30
  • ¥2,935
  • Oreilly & Associates Inc

「みみず」という名の人工無脳を作ろう! とかゆってあれこれやってたものの、いろいろ考えてもさっぱりうまくいかないので飽きてたのですが、そんな折り Hacks シリーズのひとつとして "IRC Hacks" なんてのが出ることを知り、楽しみにしてたのでした…とかゆいつつ、気づいたらリリースされてて、あわてて購入。一通りざっくり読んでみた。

最初の 4 章でまず IRC のプロトコルの説明や、クライアントの使い方等が説明され、第 5 章からいよいよお待ちかね! って感じで Bot 作成話に入っていくのですが…。

まず基本的に本書は、人工無脳的な、おしゃべりする存在としてのプログラムよりもむしろ、便利 Bot 的なプログラムを作る手法を紹介しています。また、著者の Paul Mutton さんが開発した IRC Bot 開発フレームワークであるところの PircBot によりほとんどの Hack の実装が行われており、そのためか「こういう Bot があったら便利だよね。そのためには、Pircbot を継承して、onMessage メソッドをオーバーライドして…云々」みたいな感じで、最初のアイディアだけ入れ替えたら同じようなことをくりかえし読まされてる気分になる箇所が多々あったりもしました(申し訳程度に、PerlPython による実装が触れられている程度)。

単にくさすだけなのもアレなんで、面白かったものを挙げてみる。"Hack #48 Getting Friendly with FOAFBot" では、チャンネルのメンバ情報を FOAF によって取得し、例えば「けんたろのメールアドレスは?」などと質問をすると答えてくれるような Bot を実装しています。もちろんそれだけでは特にアレなんですけど、FOAF がひととひととのつながりを表現するものであることを利用して、信頼のネットワークを IRC 上に持ち込めるんじゃねーの的な展望が描かれていて、面白い。んでもこれって、Python による実装がすでにありますね。面白げ! とか思いつつ忘れ果てていたので、今度試してみよう。

また、"Hack #62 An Artificial Intelligence Bot" は、MegaHAL なる、マルコフ連鎖アルゴリズムにより文章を生成する、いわば英語版人工無脳を、これまた Paul Mutton さんが Java で実装した JMegaHal を用いて、会話する Bot を作ってみよう! というお話で、興味深い。が、しかし、実装についてはまぁ特に得ることはなかったのですが…。人工無脳的な Hack はこれ一本のみでした…。

んで、ラスト 20 Hacks は、さらに IRC のプロトコル解説、携帯電話や PDA あるいは、Java アプレットや CGI から IRC に接続する方法、IRC サーバのセットアップについての解説。その他、内容の詳細については Table of Contents, Sample Hacks や、著者の Paul Mutton さんのサイトをご覧下さい。

正直言って、本書、期待したほどは面白くなかった。というのもやっぱ、実装が Pircbot を利用する手法に偏り過ぎなんですよね…。個人的には、Hacks シリーズには雑多なアイディアのごった煮みたいなワクワク感を求めているので。しかし、アイディアだけパクらせてもらって、実装についてはまぁ自分であれこれ考えればいいことなので、そういう意味ではまぁ読んでよかったかな、と。

あと、余談的なことをダラダラと。IRC にまつわる Hack ということでいえば、『Blog Hacks』に収録されている「Hack #52 pingbot - Ping を IRC にポストする bot」が面白いです。これは、POE という、例えば IRC BotXML-RPC サーバといった役割の異なるいろんなコンポーネントを非同期に、かつ、連携させてあれこれごにょれるってなモジュールを使用して、Ping サーバであり、かつ、IRC Bot でもあるってなプログラムの作成方法が解説されています。

"IRC Hacks" を読んで、ともあれとりあえずなんかやってみようってんで Net::IRC を使って、ちとごにょってみてたんですが、例えば Web 巡回中に面白いサイトを見つけたときに、その URI をコピーして IRC クライアントにペーストしたりするわけですが、そのコピペの手間をなくすために、ブックマークレットIRC BotURI を投げたら BotIRC に吐いてくれる、みたいなことができたらいいなぁと思ったわけです。しかし、どうやれば HTTP のリクエストを、いままさに動いている IRC Bot が受け取れるようにできるかがわからない…。そういえば『Blog Hacks』にそゆの載ってたな! と思い出して、POE でできるかなぁってんでやってみたけど…ちょっとこれは僕の手には負えませんでした…。理屈としては多分できるんだと思うけど…。修行して出直してきます…。

"IRC Hacks" はもしかしたら和訳されるかもしれんしされないかもしれないけれど、むしろ Bot 作成 Hack に Java 以外の実装も多く取り入れ、また、madoka や plum といった IRC プロクシサーバについての解説やクライアントの Tips など、そしてもちろん日本語による人工無脳話等を盛り込んだ、もっと面白い、ワクワクする本を読みたいなぁとか思ったり。アマゾンの和書で IRC を検索してみると、2 件しかかからない…。これでは寂しいので、誰か! とか思いますよ。