IRCが面白いということを知ったので遊んでみよう

IRCを初めて使いました

最近会社にIRCサーバが立って、ついに人生初のIRCライフが始まりました。なにしろUNIX系で育ってない僕なのでこういうものにひどく弱いのです。IRCとかshellとかsshとかまあその辺。粒度ばらばらなのは勘弁してください。ニュアンスニュアンス


まあそこら辺の言い訳っぽいのはよしとして、IRCは面白いですね。実はIMと同じようなものかと思ってたんだけど、使用感は全然違うかも。IMだと1対1が基本の文字による会話で、IRCだと会議室でのコミュニケーションなんですね。
Internet Relay Chat - Wikipedia
IRCは根本的に"軽い"技術な感じがします。軽いのはいいことですよね。
なんかいい方向に印象が変わりました。聞きかじりだけじゃなくて使ってみるのは大事だなと思いました。


ちょうどこの記事読んだりした後で今、古くなった技術IRCを楽しむのはアリな感じがしてきました。ほら、Javascriptだってカラッカラに古くなったと思ったら新しい技術になったし。(ちょっと無理矢理)
“社内IRC”を駆使するエンジニアの仕事術とは――モバイルファクトリー・松野徳大さん - ITmedia エンタープライズ

IRCクライアント

周りではIRCクライアントは下の二つが人気です。

僕はLimechatを使ってます。
有名だし、Psychsさんが来てくれたりしますしね。IRC初心者の僕が戸惑いなくサクサクチャンネルも作って使えてる時点で良いクライアントソフトなのは間違いないです。
Operaは僕は使ってないのですがこれも人気あるみたいです。Operaメーラーも人気だったりするし、いちいち使いやすい機能が入ってるみたいですねー。

gem install ruby-irc

というわけで早速RubyでのIRCライブラリってどういうものがあるのかなーと探してみました。ぱっと見つかるのは

と4つくらいでしょうか。

最後のRuby-IRCはgemでインストールできるやつなんだけど、"ruby-irc"で検索してもたくさんヒットしすぎてHPがみつかりません。。当然かぁ。。。
でも、

gem install ruby-irc

でインストール出来ちゃうのはなんか良いっす。gem大好き。
そんなわけで、ruby-ircを使うことにします。

IRCConnectionが変なんで修正

ところが、
READMEに入ってるサンプルを参考に実行してみてもエラーが出てしまいました。(require適当・・。)

require 'socket'
require 'IRCConnection'
require 'IRCEvent'
require 'IRCChannel'
require 'IRCUser'
require 'IRCUtil'
require 'IRC'

bot = IRC.new("Nickname", "server.example.com", "6667", "Realname")
IRCEvent.add_callback('endofmotd') { |event| bot.add_channel('#eris') }
IRCEvent.add_callback('join') { |event|
    bot.send_message(event.channel, "Hello #{event.from}")
}
bot.connect

なんか

in `remove_IO_socket': undefined local variable or method `sock' for IRCConnection:Class (NameError)

とか出てくるのでIRCConnection.remove_IO_socketの中で、"sock"という変数が突然使われててundefinedで怒られるみたい??

勝手にIRCConnection.remove_IO_socket内の"sock"を本来使おうとしてたと思われた"socket"に変えたら動きました。
変更前

  def IRCConnection.remove_IO_socket(socket)
    sock.close
    @@readsockets.delete_if {|item| item == sock }
  end

変更後

  def IRCConnection.remove_IO_socket(socket)
    socket.close
    @@readsockets.delete_if {|item| item == socket }
  end

たぶんこれで合ってる。発言出来たし。


さあ、遊ぼうか!

余談

直ったのわかんないで何回も実行を繰り返してたらいつのまにか接続出来てて近くの人が
「うわぁ!うちのチャンネルがすごいことになってる!」
と軽く叫びました。
気をつけます。。。せめてテスト用チャンネル作るべきですね。