Internet Relay Chat

Internet Relay Chat（インターネット・リレー・チャット、略称 : IRC）とは、サーバを介してクライアントとクライアントが会話をする枠組みの名称である。インスタントメッセンジャーのプロトコルの一つに分類される。また、これに基づいて実装されるソフトをIRCクライアントと呼び、しばし略してクライアントもIRCと呼ばれる事がある。文章のみをやり取りして会話を行い、DCCなどを利用することでファイル転送も対応する。 TCPを通信用のプロトコルとして主に用いる。TLSで暗号化することもできる。 Internet Relay Chat（以下「IRC」と記述する）は1988年8月にフィンランドの OuluBox というBBSで使われていたMUTと呼ばれるプログラムの代替としてヤルッコ・オイカリネン (Jarkko Oikarinen) によって作られた。BITNETネットワークで運用されていたBitnet Relay Chatに発想を得た。 IRCはその後鉄のカーテンの崩壊に際して東欧の人々が、あるいは湾岸戦争（1991年）の際に現地からIRCで情報発信されたために有名となった。 IRCはデータの通信に関するプロトコルが簡素かつオープンとなっているため、ユーザ・クライアントに用いるソフトウェアの開発が容易であり、また、種類も多い。主なクライアントソフトは以下の通り。 クロスプラットフォーム Irssi LimeChat Pidgin Trillian WeeChat Windows Miranda IM mIRC（英語版） macOS Colloquy（英語版） Linux Empathy Konversation KSirc polari Pidginなどは、複数のプロトコルを扱えるクライアントである。 IRCには主なサーバ・ネットワーク群として、 EFnet（英語版） UnderNet（英語版） DALnet（英語版） QuakeNet（英語版） freenode Libera Chat IRCnet（英語版） (WIDE projectのネットワークが接続されていた） などがあり、日本人向けには SceneCritique ReichaNet irc.cre.jp系 （旧 TRPG.NET系） などがある。 IRCにおけるサーバ群はツリー構造のネットワークを形成している。そしてクライアントはネットワークを構成するサーバのどれかと接続することで、他のサーバと接続しているクライアントとも通信が可能になる。これがインターネット・リレー・チャットと言う由来である。 サーバは接続されたクライアントの情報やクライアントから送信されたデータを共用する必要がある。 クライアントには一般のクライアント（ユーザ・クライアント）と、限られた動作を行うためのクライアント（サービス・クライアント）がある。サーバはクライアントのラベルを設定することでこれを認識する。それとは別にニックネームがあり、これはクライアントが自由に変える事が出来るが、ニックネームはそのネットワークで単一の存在である必要がある。クライアントはネットワークにつき一つの接続のみをすべきである。クライアントはチャンネルと呼ぶ、チャットをするためのグループを構成する。 チャンネルは参加者が居れば一定の命名法のもとで自由に作ってよく、最初にそのチャンネルに参加したクライアントがオペレータとなる。オペレータはチャンネルの所有者とみなされ、そのためそのチャンネルに関して好ましくない行為を行うものをチャンネルから追放したり、トピックを設定することが出来る。その他にもチャンネルに関して様々な設定が可能であり、また、オペレータの権限を他のクライアントに分け与えることも可能である。 チャンネルは一つまたはそれ以上のクライアントで構成する。サーバはクライアントからデータを受け取ると、そのデータが何に向けて発信されたデータか判別し、チャンネルに発信されたデータならばそのチャンネルを構成するクライアントへ送信し、サーバへ送られたデータならば、それを処理する。チャンネルを構成するクライアントがそのサーバ以外にも接続していた場合、サーバは他のサーバに向けてデータを送信する。 クライアントがサーバに送るデータはプリフィクス（送信元を特定する情報）、コマンド、パラメータからなり、コマンドをサーバが解釈し処理することによってネットワークやチャットが成立する。 コマンドとしては以下がある。 NICK ニックネームを設定するコマンド 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"を採用している。ISO-2022-JPでは、一般的に環境依存文字と呼ばれる一部の文字(丸付き数字や絵文字など)や、日本語以外の文字(ハングルなど)が相手のコンピュータで正しく再生されないことがあるが、UTF-8は多くの環境依存文字や多言語にも対応している文字コードである。チャットを楽しんでいる最中に余計な文字化けで水を差されることがまれにあるが、この問題を気にせずに済む。 またクライアントソフトによっては、複数の文字コードを選択できるようになっている。接続先の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