今さら聞けない「IRCv3」とは?次世代のリアルタイム・チャットプロトコルを徹底解説
IRCv3
IRCv3
IRCv3は、かつてのIRCプロトコルを現代向けにアップデートした規格です。単なるチャット機能にとどまらず、認証機能、TLS暗号化、キャパビリティ・ネゴシエーション(機能の拡張交渉)など、現代のアプリケーション開発に不可欠なセキュリティと柔軟性を備えています。古いIRCの遺産を継承しつつ、拡張性の高いモダンなチャット環境を構築したいエンジニアにとって、今改めて注目すべき規格と言えるでしょう。
DiscordからIRCに戻すのが面白い動きになるんじゃないかと考えさせられる。ただ、モバイルでのアクセスや、複数のデバイスでアカウントを同期するといった恩恵が受けられなくなるのが痛いかな?どう思う?
「古き良き」インターネットを振り返ってみると、fidonet、telnet、bitnet、ftp、fsp、wais、netnews、whois++、gopher、relaynetなどがあるけど、IRCはその中で今でも使われている数少ないものの一つだね。しかも35年前とほぼ同じ形で残っているっていうのは、かなり印象的だよ。
IRCはよく悪く言われるけれど、実際にはみんなまだ使っているんだ。
IRCv3を前に進めるためには、新しいリーダーシップが必要なのかな?Parley/Ahoy (https://git.mills.io/prologic/parley / https://git.mills.io/fastidious/ahoy) では、DiscordやSlackのような使い心地でありながら、IRCやIRCv3の精神に忠実な(Ahoyはフル機能のIRCv3クライアント)分散型のIRCチャット体験を作り上げることに成功したよ。
IRCv3の最大の問題点は、膨大な数のオプション拡張があることだと思う(主要クライアントの機能サポートマトリクスは https://ircv3.net/software/clients を見てみて)。
これが特に混乱を招くのは、使っているクライアントによって同じ会話の見え方がバラバラになる時だね。例えば、絵文字のリアクションが見える人もいれば見えない人もいるし、返信機能が見える人もいれば見えない人もいるといった具合に。
叩かれる覚悟で言うけど、最近のチャットアプリを見るたびに90年代のICQが恋しくなる。
当時のUIは、それ以降のどんなツールよりも優れていたと思う。コンパクトで主張しすぎず、情報密度が高くて速かった。チャット履歴を丸ごと別のマシンに持ち運べるし、検索も確実だった(スクロールが消えたり、遅延読み込みでイライラしたりすることもない)。それに、相手やグループごとにステータスを切り替えられるのも便利だったな。
今ちょうどIRCv3で遊んでいるんだけど、特にバウンサーなしでの永続的なチャンネル履歴に注目している。
実験用にergoサーバーを立ててみた。チャンネル履歴は現在ドラフト段階で、今後もずっとそうかもしれないけれど。
興味があって試してみたい人は、#hn on exp3.irc.basilikum.monster:6697 までどうぞ。
IRCv3対応クライアントのリスト(履歴サポートにはdraft/chathistoryが必要)はこちら: https://ircv3.net/software/clients
先週、何十年も前に買ったmIRCのライセンスを引っ張り出して、古いサーバーやチャンネルを覗いてみた。多くは休眠状態だったけど、まだまだ活発なところも多いね。おそらくまたmIRCの開発者に寄付して、IRCコミュニティにも時間を費やすことになりそう。Discordよりもこっちの体験の方が自分には合っている気がする。
インターネットのこの領域を探検してみたい人は、ここから始めてみて:https://netsplit.de/
ナイスタイミング!ちょうど今週末、余っていたVPSに友達専用のサーバーを立てたところなんだ。Ergoを使ってTLSと認証を強制し、友達のために手動でアカウントを作成して仮パスワードを渡している。クライアントはMac用にHalloy、iOS用にGogumaを使ってる。もっと見た目が綺麗なクライアントもあるけど、ErgoとこれらのクライアントはどれもIRCv3をしっかりサポートしているからね。例えば、どれもクライアント側に履歴機能が備わっていて、接続するたびにオフライン中に逃したメッセージを(30日間保持して)サーバーが再生してくれるから、バウンサーも不要。
正直、なんでみんなで苦労してここから離れたのか不思議なくらい。90年代はネットにどっぷり浸かっていたけど、何年もIRCに触れていなかった身からすると、これは……実際かなり快適だよ。
日々IRCを利用し、何年もIRCボットやクライアントを自作してきた人間として言うと:
IRCの不便な点のほとんどはクライアント側に起因するものだから、クライアント側で修正できる。IRCv3のプロトコル変更は良いものだけど、良い体験を得るために必須というわけではないよ。
ボットがあればチャンネルはもっと面白くなる。YouTubeやRedditのURLを貼った時にタイトルを表示させるだけでも、リッチなクライアントを使っていない人にとって、リンクを開かずに内容がわかるようになるから「Discord/Slackっぽい」体験に近づくよ。
IRCボットやクライアントは、どんな言語の学習においても最初のプロジェクトとして最高に楽しくて簡単だね。マルチサーバーへの常時接続、非同期処理、テキスト処理の基本がしっかり学べる。
自分は長い間IRCCloudを使っていたけど、昨年末にAIモデルが劇的に進化して、Claude Proのサブスク1回分くらいのコストがあれば自分で好きなようにIRCCloudを自作できることに気づいたんだ。
それで実際に作ってみた。空き時間を使って1週間でMVPが動いたし、夏にはIRCCloudを解約して完全に自作システムに移行したよ。
今はTUI、Web UI、Swift製のネイティブクライアント(iOS用だけどまだテスト中)、Linux用のTauriクライアントを揃えていて、全部VPS上で24時間動かしている共通のバックエンドを共有している。
今日まさにIRCサーバーを3つ立てたところだよ。仲の良い友達を説得して、連絡手段をそこに移行しようと思ってる。プロトコルが進化しているのを見るのは嬉しいね。