Hatena::ブログ(Diary)

日々、とんは語る。

この日記のはてなブックマーク数 はてなスターカウンター Peace この日記をあなたのはてなアンテナに追加する。 rss
お問い合わせ先 mailto

2008-08-28 曇り時々雨の日。

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

14:59 |

IRC を便利に楽しく利用するようになって早1年が経ちましたが、これからも色々な人がどんどん IRC を利用してくれるように Tiarramobirc の導入をまとめた記事を書いておこうと思います。

TiarraIRC Proxy ソフトで、IRCチャンネルに入りっぱなしにしておいて、ログをとっておいたり、Tiarra接続するだけで、登録してあるチャンネル自動的にJoinしてくれるようにする便利なソフトです。

mobirc携帯IRCを使うためのソフトで、Tiarra組合せると、Tiarra でJoinしているチャンネルを見たり、書き込んだりできます。

他にも TwitterWassrはてなハイクなどの各種IRCゲートウェイ組合せる事で、IRC一本で色々楽しめるという優れものです。

導入については、ターミナルを使って SSHサーバー接続して操作するので、ちょっぴり敷居が高いかもしれませんが、CLI勉強にもなって良いと思います。

サーバーを用意しよう。

常時稼動しているサーバーマシンが望ましいです。ですが、常時稼動しているサーバーがなくても、とりあえず Tiarra だけ導入しておけば、それはそれで便利かもしれません。

サーバーを用意する場合は、レンタルサーバーだとプロセスを切られたり、いろいろな設定が面倒だったりするので、自宅で自分サーバーを用意した方が楽ちんです。IRC Proxy だけのサーバーだと勿体ないので、ファイルサーバーにしてみたり、Subversionリポジトリにしてみたり何なりして楽しみましょう。

自宅のサーバーへ外部からアクセスするにはドメインを取得してDDNSの設定と、ルーターを用意して、ポートの公開設定をする必要がありますが、これについては今回割愛します。

OSPerlSubversionSSH が使えるものであれば何でも良いです。僕は 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 の場合は、

さえ覚えておけば、無問題なはずです。

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 をタイプします。

elimelim 2008/08/28 22:13 ・.screenrc ではコントロールコードじゃなくとも(ただの文字列でも)設定が通ります。なのでそのままコピーペーストしても動くと思います。

・sudo -H cpan にすれば ~root/.cpan を使ってくれるので ~/.cpan 内の権限を root にされなくて良いかもしれません :)

・sudo -H cpan App::Mobirc すれば mobirc の依存するモジュールも導入してくれる筈ですので、まずそれをしてから、必要に応じて svn 版を使うと良いかも。

・こういう「大量のモジュールにいちいち[yes]とかしてられない」場合は 環境変数 PERL_MM_USE_DEFAULT=1 も有効かも。CPAN の選択肢は default のが選ばれたことになってざくざく進みます。なにが起きても責任持てませんが :)

たとえばこんな……
$ sudo -H sh -c ”eval PERL_MM_USE_DEFAULT=1 cpan -H App::Mobirc”

tomoyatomoya 2008/08/29 17:33 えりむんありがとー!

.screenrc は制御文字じゃなくてもオッケーだったんですね。しらなかったー。

そして、mobirc は CPAN に上っていたんですね。これも知らなかったです><
こういうつっこみを切望していました!!

<< 2008/08 >>
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31