Tiarra + mobirc を導入してIRCを楽しもう。
IRC を便利に楽しく利用するようになって早1年が経ちましたが、これからも色々な人がどんどん IRC を利用してくれるように Tiarra と mobirc の導入をまとめた記事を書いておこうと思います。
Tiarra はIRC Proxy ソフトで、IRC のチャンネルに入りっぱなしにしておいて、ログをとっておいたり、Tiarra に接続するだけで、登録してあるチャンネルに自動的にJoinしてくれるようにする便利なソフトです。
mobirc は携帯でIRCを使うためのソフトで、Tiarra と組合せると、Tiarra でJoinしているチャンネルを見たり、書き込んだりできます。
他にも Twitter や Wassr やはてなハイクなどの各種IRCゲートウェイを組合せる事で、IRC一本で色々楽しめるという優れものです。
導入については、ターミナルを使って SSH でサーバーに接続して操作するので、ちょっぴり敷居が高いかもしれませんが、CLIの勉強にもなって良いと思います。
サーバーを用意しよう。
常時稼動しているサーバーマシンが望ましいです。ですが、常時稼動しているサーバーがなくても、とりあえず Tiarra だけ導入しておけば、それはそれで便利かもしれません。
サーバーを用意する場合は、レンタルサーバーだとプロセスを切られたり、いろいろな設定が面倒だったりするので、自宅で自分のサーバーを用意した方が楽ちんです。IRC Proxy だけのサーバーだと勿体ないので、ファイルサーバーにしてみたり、Subversion のリポジトリにしてみたり何なりして楽しみましょう。
自宅のサーバーへ外部からアクセスするにはドメインを取得してDDNSの設定と、ルーターを用意して、ポートの公開設定をする必要がありますが、これについては今回割愛します。
OS は Perl と Subversion と SSH が使えるものであれば何でも良いです。僕は Mac OS X 10.3 を使っていますが、環境が古くて色々と面倒なので、最新のLinuxディストリあたりがオススメです。
非力なマシンであれば、Cent OS Server などのXが立ち上がらないものが良いでしょうし、5年以内のパソコンであれば、設定が楽な Ubuntu などが宜しいんじゃないでしょうか。
あと、Subversion は標準では入っていない事が多いので、インストールしておきましょう。
SSH を使ってサーバーに接続。
サーバーマシンのセットアップが完了したら、お手持ちのマシンでターミナルからSSHからログインしましょう。もちろん、SSHでログインせずに、サーバーマシンを直接操作してもオッケーです。その場合は、ターミナルクライアントを起動しましょう。
ただし、今回はSSHでログインしているものとして説明していきます。
screen のインストール。
GNU Screenというのは仮想端末ソフトで、デスクトップ画面を幾つも使える仮想デスクトップのターミナル版です。Tiarra と mobirc を別の画面で起動しておいて、ログを見るとかもできるので便利なのですが、ここで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/ みたいなアドレスでブラウザからアクセスしてみましょう。
ちゃんと見る事ができれば、全ての Tiarra と mobirc の導入は完了です。お疲れ様でした :-)
$ screen -d
というコマンドを入力して、screen をDetachしてから、SSH から exit しましょう。どうでも良い話ですが、僕は mobirc の 0.0.2 を未だに使っていたりします:p)