Tiarra + mobirc を導入してIRCを楽しもう。

IRC を便利に楽しく利用するようになって早1年が経ちましたが、これからも色々な人がどんどん IRC を利用してくれるように Tiarramobirc の導入をまとめた記事を書いておこうと思います。
TiarraIRC Proxy ソフトで、IRC のチャンネルに入りっぱなしにしておいて、ログをとっておいたり、Tiarra に接続するだけで、登録してあるチャンネルに自動的にJoinしてくれるようにする便利なソフトです。
mobirc は携帯でIRCを使うためのソフトで、Tiarra と組合せると、Tiarra でJoinしているチャンネルを見たり、書き込んだりできます。
他にも TwitterWassrはてなハイクなどの各種IRCゲートウェイを組合せる事で、IRC一本で色々楽しめるという優れものです。
導入については、ターミナルを使って SSH でサーバーに接続して操作するので、ちょっぴり敷居が高いかもしれませんが、CLIの勉強にもなって良いと思います。

サーバーを用意しよう。

常時稼動しているサーバーマシンが望ましいです。ですが、常時稼動しているサーバーがなくても、とりあえず Tiarra だけ導入しておけば、それはそれで便利かもしれません。
サーバーを用意する場合は、レンタルサーバーだとプロセスを切られたり、いろいろな設定が面倒だったりするので、自宅で自分のサーバーを用意した方が楽ちんです。IRC Proxy だけのサーバーだと勿体ないので、ファイルサーバーにしてみたり、Subversionリポジトリにしてみたり何なりして楽しみましょう。
自宅のサーバーへ外部からアクセスするにはドメインを取得してDDNSの設定と、ルーターを用意して、ポートの公開設定をする必要がありますが、これについては今回割愛します。
OS は PerlSubversionSSH が使えるものであれば何でも良いです。僕は Mac OS X 10.3 を使っていますが、環境が古くて色々と面倒なので、最新のLinuxディストリあたりがオススメです。
非力なマシンであれば、Cent OS Server などのXが立ち上がらないものが良いでしょうし、5年以内のパソコンであれば、設定が楽な Ubuntu などが宜しいんじゃないでしょうか。
あと、Subversion は標準では入っていない事が多いので、インストールしておきましょう。

SSH を使ってサーバーに接続。

サーバーマシンのセットアップが完了したら、お手持ちのマシンでターミナルからSSHからログインしましょう。もちろん、SSHでログインせずに、サーバーマシンを直接操作してもオッケーです。その場合は、ターミナルクライアントを起動しましょう。
ただし、今回はSSHでログインしているものとして説明していきます。

screen のインストール。

GNU Screenというのは仮想端末ソフトで、デスクトップ画面を幾つも使える仮想デスクトップのターミナル版です。Tiarramobirc を別の画面で起動しておいて、ログを見るとかもできるので便利なのですが、ここでscreenを使うのは、別の理由があります。
SSH でログインして何かプログラム(プロセスといいます)を立ち上げても、サーバーからログアウトすると、通常そのプロセスも一緒に終了してしまいます。何かのコマンド(忘れました)を使うと、プロセスが終了せずに済むのですが、screen を使うと、プロセスが終了しないだけではなく、作業していた状態そのものを残すことができます(Detach:離脱 という機能です)。次回、SSH からログインした際には、Reattach:再接続 すると、Detachする前とまったく同じ場面から作業を開始できます。
これは、不意にサーバーとの接続が切れた時にも有効です。ADSLだと電話がかかると通信が一時的に途切れる場合があります。screen を使っていないと、その時に行なっている作業が中断されてしまいますが、screen を使っていると、サーバーで作業が滞りなく行なわれており、再び SSH でログインして、Reattach すると、先程の続きから作業できてしまうのです。
SSH で作業するときは、まず screen を張れ!」と偉い人が口を揃えて言っているのにはこういう理由があったのです。
スクリーンのインストールと設定については割愛。naoyaさんの有名な質問あたりを参考にして下さい。

termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
termcapinfo xterm-256color 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
hardstatus alwayslastline "%`%-w%{=b bw}%n %t%{-}%+w"
startup_message off
autodetach on
defscrollback 10000
deflog on
logfile "/Users/tomoya/log/%y.%m.%d.log"
escape ^Z^Z

bind ^U encoding utf8
bind ^E encoding euc
bind 2 split
bind o focus
bind 1 only
bind 0 remove

と、いいつつ僕の .screenrc を張りつけておきます。なお、^Z など ^ が前にある文字は制御文字です。そのままコピーしても動きません。制御文字でもだいじょうぶだって! logfile の所だけ削るか修正すればちゃんと動くね!
まぁ、screen の設定についは後回しでオッケーです :p)

$ screen -S irc

という風にscreen を起動しましょう。-S オプションを使うと、screen に名前を付ける事ができます。

$ screen -d

とすると、Detach して作業を中断できます。作業を再開したいときは、

$ screen -r irc

とすると、先程と同じ場面から作業を再開できます。

Tiarra のインストールとセットアップ。

ここでようやく Tiarra のインストールとセットアップを開始します。screen を使っておきましょう。

svn co http://svn.coderepos.org/share/lang/perl/tiarra/trunk/ tiarra

Subversion を使って、最新のTiarraをチェックアウトします)(要はインストールするという事です)。場所はホームディレクトリでオッケーです。ホームディレクトリって何?っていう人は気にしなくて良いです。

$ cd ./tiarra
$ cp ./sample.conf ./tiarra.conf
$ emacs ./tiarra.conf

という感じで、tiarra.conf という設定ファイルを作成してエディタで編集します。エディタは好きなエディタを使いましょう。
Emacs の場合は、

  • C-x C-s*1 で保存。
  • C-x C-c で終了。
  • C-/ でアンドゥ。
  • C-space でマウスカーソルの位置をマークして、カーソルを動かして挟んだ文字を、C-w でカット。M-w*2 でコピー。
  • そして、C-y で貼り付け。
  • 何か変なコマンドを押して、言う事聞かなくなったら、C-g 連発。もしくは、Esc 連発。

さえ覚えておけば、無問題なはずです。
tiarra.conf の設定は、解説がついていますので、しっかり読めばあまり悩みませんが、僕の設定を参考に必須の部分を纏めておきます。以下、## で始まるコメントは僕がつけたコメントです。

general {
  # ユーザー情報
  # 省略不能です。
  nick: tomoya
  user: tomoya
  name: tomoya

  # Tiarraが開くポート。ここに指定したポートへクライアントに接続させる。
  # 省略されたらポートを開かない。
  tiarra-port: 6667
  ## 家の外からも接続できるようにしたい場合は、ルーターで空けているポートにしましょう。

  # Tiarraにクライアントが接続する際に要求するパスワードをcryptした文字列。
  # 空の文字列が指定されたり省略された場合はパスワードを要求しない。
  # crypt は ./tiarra --make-password で行えます。
  tiarra-password: Mf113OWgX****
  ## 家の外から接続できるようにする場合は、パスワードを設定しておきましょう。ただし、この文字列は暗号化されています

  # IRCサーバーから送られる文字のコードと、IRCサーバーへ送る文字のコード
  # どちらも省略された場合はjis。
  server-in-encoding: utf8
  server-out-encoding: utf8
  ## 最近では utf8 化が進んでいるチャンネルが多いので、今後の事を考えると jis より utf8 の方が良いかも。
  ## なお、これはデフォルトの設定であって、サーバー毎に個別に設定できます。

  # クライアントから受け取る文字のコードと、クライアントへ伝える文字のコード
  # どちらも省略された場合はjis。
  client-in-encoding: utf8
  client-out-encoding: utf8
  ## これはクライアントの設定に併せると良いです。 utf8 の場合、クライアントを utf8 にしておきましょう。

}

networks {

  # 接続するIRCネットワークに名前を付けます。この名前は後で使用します。
  # 複数のネットワークに接続したい場合は多重定義して下さい。
  name: wide
  name: ust
  name: tw
  name: mozilla
  name: moz
  name: opera
  name: woremacx
  name: fn

}

# -----------------------------------------------------------------------------
# 各ネットワークの設定
#
# networksブロックで定義した全てのネットワークについて、
# そのアドレス、ポート、(必要なら)パスワードを定義します。
# -----------------------------------------------------------------------------
wide {
  host: irc.nara.wide.ad.jp
  port: 6663

# general/setver-in/out-encodingで設定したエンコーディングを使わずに、
  # 各ネットワークで独自のエンコーディングを使用する事も可能。
  # 省略されたら当然、generalで設定したものが使われる。
  in-encoding: jis
  out-encoding: jis
  ## wide系は jis が多いので、jis にしておきます。
}

ust {
  host: chat1.ustream.tv
  port: 6667
  password: ***
}

## これは TwitterIrcGateway のサーバー設定です。
## TIG が動いていなければ必要ありません。
tw {
  host: localhost
  port: 16668
  password: ***
}

mozilla {
  host: irc.mozilla.org
  port: 6667
}
moz {
  host: irc.mozilla.gr.jp
  port: 6667
}

opera {
  host: irc.opera.com
  port: 6667
  in-encoding: jis
  out-encoding: jis
}

woremacx {
  host: irc.woremacx.com
  port: 6667
}

fn {
  host: irc.freenode.net
  port: 6667
}

## 以下、各種モジュールの設定。
## - モジュール名 だと利用しない
## + モジュール名 だと利用する

+ Channel::Join::Connect {
  # サーバーに初めて接続した時、指定したチャンネルに入るモジュール。

  ## ここに書いておいたチャンネルは、
  ## IRC クライアントで Tiarra に接続したときに自動的に Join してくれます。
  channel: #汚れの巣@wide
  channel: #8341@wide
  channel: #順列都市@wide
  channel: #Web業務@wide
  channel: #japanese@opera
  channel: #firefox-ja@mozilla
  channel: #蟹@wide:*.jp
  channel: #某方面周辺@wide:*.jp
  channel: #vagina@woremacx
}

+ Channel::Join::Invite {
  # 招待されたらそのチャンネルに入る。
}

+ Log::Channel {
  # チャンネルやprivのログを取るモジュール。
}

+ Log::Recent {
  # クライアントを接続した時に、保存しておいた最近のメッセージを送る。

  # ログをチャンネル毎に何行まで保存するか。省略されたら10。
  line: 100
}

こんなもんでしょうか。

とりあえず Tiarra を起動してみる。

では、Tiarra を起動してみましょう。

$ perl ./tiarra &

シェルでコマンドの後に「&」をつけると、バックグラウンドで実行してくれます。エラーが出て、終了しなければ無事に起動しています。IRCクライアントで接続してみましょう。
自宅内であれば、IRCサーバーをサーバーマシンのIPアドレスにします。ポートを設定したポート。パスワードを設定している場合はパスワードの入力も忘れずに。
チャンネルにJoinするには、

#チャンネル名@networksで設定したname

と、入力すれば、いちいちサーバー毎に接続しなくても、Tiarra が自動的にサーバーを切り替えてくれます。
例えば、irc.woremacx.com の #vagina というチャンネルに入りたければ、

#vagina@woremacx

これで、#vagina に入れます {|}

続いて mobirc のインストールとセットアップ。

追記。ここの mobirc の導入記事はだいぶ古いので、最新のものについては、mobircの設定。 - deruiの日記を参考にしてみて下さい
さて、Tiarra の導入が済めば、今度は mobirc も頑張ってみましょう。
screen が起動していれば、C-a c*3と入力すると、新しい端末が起動します。ブラウザの新規タブを開くみたいなもんです。

$ cd
$ svn checkout http://svn.coderepos.org/share/lang/perl/mobirc/trunk/ mobirc
$ cd ./mobirc
$ cp ./config.yaml.sample ./config.yaml
$ emacs ./config.yaml

Tiarra の時と同じように、config.yaml をエディタで開いて設定します。Tiarra と同じく主要な設定項目だけ抜きだしてみます。

---
global:
   keywords:
     - tomoya
     - とんちゃん
     - ともや
     - とんさん
   ## キーワードを使うと、IRCで呼ばれた時に、後からでも確認できて、超便利!!

plugin:
  - module: Authorizer::Cookie
    config:

      password: テキトーな数字
  - module: Authorizer::BasicAuth
    config:
      username: tomoya
      password: 数字の方が打ちやすい

  - module: Component::IRCClient
    config:
      server: 127.0.0.1 ## 同じサーバーに Tiarra が動いている場合はこれで
      port: 6667 ## Tiarra のポート
      nick: tomoya
      desc: tomoya
      username: tomoya
      password: *** ## Tiarra のパスワード
      incode: utf-8 ## Tiarra の文字コード

  - module: Component::HTTPD
    config:
      port: 6661 ## ルーターで空けてあるポート番号

httpd:
  lines: 40
  # root: /

これで、設定はオーケーです。mobirc を起動してみましょう。

$ perl ./mobirc &

おそらく、

$ Could not load class (App::Mobirc::Plugin::Component::HTTPD) because : Can't locate Template/Declare.pm in @INC (@INC contains: /Users/tomoya
なんたらかんたら〜
[1]  + exit 255   perl ./mobirc

という感じのエラーを吐いて死になさるはずです。これは、mobirc は多くのCPANモジュールを使用していますので、必要なCPAN モジュールを入れなければ動作しないのです。足りないモジュールは、エラーのCan't locate Template/Declare.pmの部分の「なんたら.pm」というものです。なので、

$ sudo cpan Template::Declare

という感じでインストールしていけばオッケーです。
もっと簡単に必要なCPANモジュールをインストールする方法がやっぱりありました!!

$ sudo -H cpan App::Mobirc

とすると、必要なモジュール全部入れてくれるそうです。詳しくは、コメントを見てください。id:elim++
起動してみて、エラーが出なければ無事に動作していますので、http://サーバーのIP:6661/ みたいなアドレスでブラウザからアクセスしてみましょう。
ちゃんと見る事ができれば、全ての Tiarramobirc の導入は完了です。お疲れ様でした :-)

$ screen -d

というコマンドを入力して、screen をDetachしてから、SSH から exit しましょう。どうでも良い話ですが、僕は mobirc の 0.0.2 を未だに使っていたりします:p)

*1:この場合、Ctr キーを押しながら x をタイプ、そのまま Ctr キーを離さずに、s をタイプという意味です。

*2:M って何ね?って思いますが、Meta キーの事で、通常は Alt キーの事です。

*3:Ctr を押しながら a をタイプして、Ctr を離して c をタイプします。