
皆さんは、日々のお仕事の中で様々なバッチ処理やデプロイツールまたはCIツールを動かすと思います。
一般的なネット系のエンジニアは仕事のコミュニケーション手段として IRC を用いているというのが有名ですが、これらバッチ処理の処理状況等を普段の生活環境である IRC に流せたら便利です。
実際に前の会社では、 deploy tool, ci tool, etc batch script の処理結果を社内 IRC channel に通知するような物を hirose31 さんが作ってくれて、とても便利でございました。
とはいえ、各種スクリプトが独自に IRC server に繋ぎに行く事は大げさですし、バッチが走る都度 join/part されたらうざいです。
そこで前の会社では、 IRC server につながりっぱなしなサーバを立てて置いて、 iDC などのインフラからいつでも何処でも IKC を使ってメッセージを送ると指定したチャンネルにメッセージを投げてくれると言う便利な物がありました。
実際自分が担当していないプロジェクトでも、今現在他のサービスでどんな作業が行われてるかをリアルタイムで把握出来るのは、その会社で働いている上でとても役に立つ事が多いです。
狙いとしては、こうした簡単に通知を行うインフラが整う事で、気軽に各種処理状況が共有出来るようになる事により、今まで何かの処理スクリプトを叩いて IRC とかで手作業で結果報告していたような類いの要件も、全自動化される事により飯が捗るといった事を期待しています。
実際 deploy tool とかに仕込んどくだけでもだいぶ便利ですけどね。
と言うような事をもんもんと思っていたのでさっき作りました。
https://github.com/yappo/p5-App-Ikachan
依存モジュールも、 AnyEvent, Plack, Twigyy, AnySan 程度で且つ、実際は1つの小さいスクリプトファイルなので扱いやすいとは思います。
(とはいえ AnySan が github にしかなくて install 面倒いので、そろそろ CPAN にうpりますが。。。)
使い方もとても簡単で
$ ikachan -S irc_server_address -N nickname[ -K irc_server_password][ -P irc_server_port]という形でサーバを立ち上げるだけです。
$ ikachan -h http_host -p http_portといったオプションも利用可能です。
チャンネルに入るには
$ curl -F channel=\#catalyst-ja http://localhost:4979/joinが使えます。
チャンネルを抜けるには
$ curl -F channel=\#catalyst-ja http://localhost:4979/leaveが使えます。
チャンネルにポストするには
$ curl -F channel=\#catalyst-ja -F message=こんにちわこんにちわ! http://localhost:4979/noticeが使えます。
ikachan はどのチャンネルに join したか等の情報をストレージに保存しないので、一度プロセスを殺したら、まえ入っていたチャンネルが解らなくなります。( http://localhost:4979/channel_list の内容をバックアップしとけばいいけど )
なので、 notice コマンドを送る時には join コマンドを一緒に送る事をお勧めします。
$ curl -F channel=\#catalyst-ja http://localhost:4979/join $ curl -F channel=\#catalyst-ja -F message=こんにちわこんにちわ! http://localhost:4979/notice
ikachan を操作するプロトコルは HTTP なので、様々な言語や環境で扱いやすいんじゃないかなと思います。ので、これを機に是非お試し下さい。
作って早々、 kazeburo さんに社内サーバに設置してもらって、作り途中の開発支援ツールに導入して便利になった予定です!
作った後に、まったく同じ事をする kan さんが作った App::donburi の存在に気づいたのですが、ちょっとおおがかりだし founder が irc 使わない会社に転職したりで、やっぱり知ってても使わなかったと思った。
Posted by Yappo at 2011年08月16日 22:13 | TrackBack | Perl