Internet Relay Chat
テンプレート:WikipediaPage テンプレート:Infobox Internet Relay Chat(インターネット・リレー・チャット、略称 : IRC)とは、サーバを介してクライアントとクライアントが会話をする枠組みの名称である。文章のみをやり取りして会話を行い、DCCなどを利用することでファイル転送も対応する。
TCPを通信用のプロトコルとして主に用いる。TLSで暗号化することもできる。
歴史
Internet Relay Chat(以下「IRC」と記述する)は1988年8月にフィンランドの OuluBox というBBSで使われていたMUTと呼ばれるプログラムの代替としてヤルッコ・オイカリネン (Jarkko Oikarinen) によって作られた[1]。BITNETネットワーク[2]で運用されていたBitnet Relay Chatに発想を得た。
IRCはその後鉄のカーテンの崩壊に際して東欧の人々が、あるいは湾岸戦争(1991年)の際に現地からIRCで情報発信されたために有名となった。
クライアント・ソフトウェア
IRCはデータの通信に関するプロトコルが簡素かつオープンとなっているため、ユーザ・クライアントに用いるソフトウェアの開発が容易であり、また、種類も多い。
OperaはWebブラウザ中心のインターネットスイートの機能のひとつとして、IRCクライアントの機能を備える。ChatZillaはWebブラウザ向けアドオンも用意されており、FirefoxなどのMozillaアプリケーションを拡張するかたちで利用することもできる。
Pidgin、Kopeteなどは、複数のプロトコルを扱えるクライアントで、IRCのほかにも Windows Live メッセンジャーや、Yahoo!メッセンジャーなどのプロトコルを利用することができる。
主なネットワーク
IRCには主だったサーバ・ネットワーク群として、
- EFnet
- UnderNet
- DALnet
- QuakeNet
- freenode
- IRCnet (WIDE projectのネットワークが接続されていた)
などがあり、日本人向けにはIRCnetのほか、
- SceneCritique
- ReichaNet
- irc.cre.jp系 (旧 TRPG.NET系)
などがある。
構造
IRCにおけるサーバ群はツリー構造のネットワークを形成している。そしてクライアントはネットワークを構成するサーバのどれかと接続することで、他のサーバと接続しているクライアントとも通信が可能になる。これがインターネット・リレー・チャットと言う由来である。
サーバは接続されたクライアントの情報やクライアントから送信されたデータを共用する必要がある。
クライアントには一般のクライアント(ユーザ・クライアント)と、限られた動作を行うためのクライアント(サービス・クライアント)がある。サーバはクライアントのラベルを設定することでこれを認識する。それとは別にニックネームがあり、これはクライアントが自由に変える事が出来るが、ニックネームはそのネットワークで単一の存在である必要がある。クライアントはネットワークにつき一つの接続のみをすべきである。クライアントはチャンネルと呼ぶ、チャットをするためのグループを構成する。
チャンネルは参加者が居れば一定の命名法のもとで自由に作ってよく、最初にそのチャンネルに参加したクライアントがオペレータとなる。オペレータはチャンネルの所有者とみなされ、そのためそのチャンネルに関して好ましくない行為を行うものをチャンネルから追放したり、トピックを設定することが出来る。その他にもチャンネルに関して様々な設定が可能であり、また、オペレータの権限を他のクライアントに分け与えることも可能である。
チャンネルは一つまたはそれ以上のクライアントで構成する。サーバはクライアントからデータを受け取ると、そのデータが何に向けて発信されたデータか判別し、チャンネルに発信されたデータならばそのチャンネルを構成するクライアントへ送信し、サーバへ送られたデータならば、それを処理する。チャンネルを構成するクライアントがそのサーバ以外にも接続していた場合、サーバは他のサーバに向けてデータを送信する。
クライアントがサーバに送るデータはプリフィクス(送信元を特定する情報)、コマンド、パラメータからなり、コマンドをサーバが解釈し処理することによってネットワークやチャットが成立する。
コマンドとしては以下がある。
- USER
- クライアントを特定するコマンド
- QUIT
- サーバとの接続を終了するコマンド
- JOIN
- チャンネルに参加するコマンド
- PART
- チャンネルから外れるコマンド
- MODE
- チャンネルに関してクライアントの権限やチャンネルの設定をするコマンド
- PRIVMSG
- 特定のクライアントやチャンネルと通信するコマンド
サーバはツリー構造を組んで作られているためサーバ同士の接続がなんらかの原因によって切断されることがある。
文字コード
後述するIRCプロトコルの定義において、サーバー・ネットワーク内で使用する文字コードについては定義されていない。そのため利用者間で違う文字コードを使って接続・利用していると、お互いに文字化けを起こして会話にならなかったり、日本語(を含めたASCII以外の文字コードを使う言語)を含むチャンネルに入ろうとして入れなくなってしまうことがある。
しかしサーバーはデータだけリレーしていくので、たとえ文字コードが違っても何の問題もない。困るのは利用者だけである。
そこで、利用者間で「暗黙の了解」的に使われる文字コードが存在する。ただしあくまで「暗黙の了解」であるため、同じサーバー・ネットワークを利用しているユーザー同士でも、全く関わりのない場合は違う文字コードを使っていることさえある。
2014年8月現在、「IRCnet」や「FriendChat」をはじめとする多くのIRCネットワークでは、暗黙の了解としてよく使われる文字コードは"ISO-2022-JP"である。これは電子メールでよく使われる文字コードで、単に"JISコード"などと呼ばれるものだ。IRCサーバーに接続した際、自動的に送られてくるデータの中に"MOTD"と言う、サーバーのメンテナンスや何かが起こった時の連絡先などが書かれていることの多いデータがあるのだが、それが"ISO-2022-JP"で書かれている(ほかの文字コードで接続すると文字化けする)ことから確かめることができる。
もちろん、他の文字コードを採用したり、「暗黙の了解」ではなく公式として利用する文字コードを指定しているIRCネットワークもある。例えば「irc.cre.jp系IRCサーバ群」では、"UTF-8"を採用している。旧称「TRPG.NET系」という名の通りTRPGのオンラインセッションで使われることが多く、公式のダイス(サイコロ)などの汎用ボットが存在する[3]ネットワークであるが、このボットが出力する文字コードが"UTF-8"なのである。サーバーは文字コードに関係なく動作しても、ボットは文字コードが違うとコマンドをうまく認識できるとは限らないのだろう。
またクライアントソフトによっては、複数の文字コードを選択できるようになっている[4]。接続先のIRCネットワークやチャットする相手が使っている文字コードによって、適宜使い分けることが可能である。
仕様
RFC 1459がIRCに関する最初のRFCでその後2000年にRFC 2810から2813までが出された。現在利用されているIRCのプロトコルはIRC 2が主で、RFC 1459もIRC 2のものである。
- RFC 1459
- RFC 2810
- RFC 2811
- RFC 2812
- RFC 2813