IRC / リアルタイムに行なわれるチャットシステム

多くのプロジェクトでは、Internet Relay Chat (IRC) を使ったリアルタイムのチャットルームを提供しています。 そこではユーザーと開発者が質問を出し合い、すぐに返事を貰うことができます。 自前のIRCサーバを動かすことも 可能です が、 普通はそこまで頑張る必要はありません。むしろみんながやっていることを真似てみましょう。 つまり、Freenode (http://freenode.net/) で自分のIRCチャンネルを開設するのです。 Freenodeは、IRCサーバを自分で管理する苦労からあなたを解放すると同時に、 [20] プロジェクトのIRCチャンネルを管理するために必要な規制を行っています。

まずやるべきことはチャンネルの名前を決めることです。 もっともわかりやすいのはプロジェクトの名前です。 — Freenode で使える名前なら使ってください。 もし使えないのなら、 プロジェクトの名前に近い名前で、 できるだけ覚えやすい名前を選ぶようにしてみてください。 質問に素早く答えて欲しいユーザーがすぐにわかるように、 プロジェクトのウェブサイトでIRCチャンネルが利用できることを知らせましょう。 たとえばSubversion のホームページでは、 ページ上部の目立つボックス部分に次のような情報を表示しています。

Subversionをお使いなら、メーリングリスト users@subversion.tigris.org を購読し、 Subversionによるバージョン管理FAQ を読むことを勧めます。 IRCの irc.freenode.net 上のチャンネル  #svn  でも質問することができます。

プロジェクトによっては複数のチャンネルを持つものもあり、 ひとつひとつが副次的なトピックを扱っています。 たとえばあるチャンネルはインストール時の問題を扱い、 別のチャンネルでは使い方の問題、開発に関するチャット、等です。 (章 6. コミュニケーション巨大化への対応項 では、チャンネルを複数に分割する方法について議論しています。) プロジェクトが始まって間もないなら、皆が一緒にお喋りできるようにチャンネルの数はひとつにすべきでしょう。 後に開発者ひとりに対するユーザーの数が増えるのに応じて、 チャンネルの分割が必要になるかもしれません。

どのチャンネルで喋ればよいかは言うまでもなく、 利用できる全てのチャンネルを知らせるにはどうしたらよいでしょうか? そしてチャットをするとき、 プロジェクトに特有の決まりごとを知らせるにはどうすればよいでしょうか?

答えは チャンネルトピック [21] を設定して知らせることです。 チャンネルトピックは、初めてチャンネルに入ったときにユーザーが見るメッセージです。 これは新顔のユーザーに簡単な案内をすると同時に、 さらに詳しい情報へのポインタを提供します。 たとえば以下のようなものです。:

あなたは #svn で喋っています。

#svn のトピックは以下の通りです。Subversionユーザーの質問を受け付ける
フォーラムです。http://subversion.tigris.org も参照してください。 || 
開発に関する議論は、#svn-dev で行われています。 || 長い Subversion の
トランザクションを貼り付けないでください。http://pastebin.ca/ のような
貼り付け用のサイトを使ってください。 || ニュース: Subversion 1.1.0 が
リリースされました。詳しくは http://svn110.notlong.com/ を参照してくだ
さい。

これは簡単ですが、新顔のユーザーが知る必要がある情報を伝えています。 チャンネルの目的を正確に伝え、 プロジェクトのホームページを示し(ユーザーによっては、 プロジェクトのウェブサイトを訪れたことがないとチャンネル内で迷子になってしまいます。) 関連するチャンネルに言及し、貼り付けに関する案内もあります。

ボット

多くの技術指向なIRCチャンネルには、 いわゆる ボット と呼ばれる人間でないメンバーがいます。 これは特定のコマンドに反応して情報を保存したり、 表示したりできます。 通常は、ボットはチャンネルにいる他のメンバーと同じように扱います。 つまり、コマンドはボットに "話しかける" ことで伝えます。 たとえば次のようなものです :

<kfogel> ayita: learn diff-cmd = http://subversion.tigris.org/faq.html#diff-cmd
<ayita>  Thanks!

これはボット(ayita としてチャンネルにログインしています)に "diff-cmd" という問い合わせの答えとしてあるURLを覚えておくように伝えています。 では、ayita に話しかけて、他のユーザーに diff-cmd に関する情報を伝えるように頼んでみましょう :

<kfogel> ayita: tell jrandom about diff-cmd
<ayita>  jrandom: http://subversion.tigris.org/faq.html#diff-cmd

便利な短縮コマンドを使っても同じことが実現できます。

<kfogel> !a jrandom diff-cmd
<ayita>  jrandom: http://subversion.tigris.org/faq.html#diff-cmd

正確なコマンドとそれに対する振舞いはボットによって異なります。 上の例は Freenode の #svn で通常動いている ayita(http://hix.nu/svn-public/alexis/trunk/) のものです。 他にも Dancer(http://dancer.sourceforge.net/) や Supybot(http://supybot.com/) といったボットがいます。 ボットを動かすのに特別なIRCサーバ上の権限は必要ないということを覚えておいてください。 ボットはクライアントプログラムなので、誰でもセットアップして特定の IRCサーバ/チャンネル 上で待機させることができます。

あなたのチャンネルで同じ質問が繰り返される傾向があるなら、 ボットをセットアップすることを強くお勧めします。 ボットの操作方法を身に付けるのはほんの一握りのメンバーですが、 ボットが効率的に反応してくれるので、 少ない人数で繰り返される質問に答えられるのです。

IRCの会話を保存する

IRCチャンネルで起こったことは全て保存できますが、 必ずしもそれが期待されているわけではありません。 IRCでの会話は建前上は公なものかもしれませんが、 非公式なもの、もしくは半ばプライベートな会話だと考える人も多くいます。 IRC上ではユーザーは文法に無頓着ですし、 オンライン上で絶対に保存されたくない意見(たとえば、 他のソフトウェアやプログラマーに関するもの)を言ったりするかもしれません。

もちろん、会話のまとめ を保存すべき時もあるでしょう。 その場合はよいのです。 ほとんどのIRCクライアントはユーザーの要求に応じて会話を保存することが出来ますし、 それができなくても会話をフォーラム(ほとんどの場合はバグ追跡システム)に貼り付けるだけならいつでもできます。 しかし、節操なく会話を保存すると不安になるユーザーもいるかもしれません。 全ての会話を保存するのなら、必ずその旨をチャンネルトピックで明示的に宣言し、保存先のURLを示すようにしましょう。



[20] Freenode への寄付を要求されたり、 期待されたりすることはありませんが、 あなた個人やプロジェクトに余裕があるなら寄付することを考えてみてください。 アメリカ国内からだと税金が控除される寄付金として扱われますし、 寄付されたお金を使って価値のあるサービスが提供されるのです。

[21] チャンネルトピックを設定するには /topic コマンドを使います。 IRCコマンドは全て "/" で始まります。 IRCの使い方やチャンネルの管理に慣れていないのであれば、 http://www.irchelp.org/ を参照してください。: 特に http://www.irchelp.org/irchelp/irctutorial.html は優れたチュートリアルです。