はじめに:ft_irc プロジェクト概要
本プロジェクト ft_irc は、C++98規格に準拠し、I/O多重化を用いたノンブロッキングなIRC(Internet Relay Chat)サーバーをスクラッチで実装するものです。
RFC 1459 プロトコルに基づき、複数のクライアント間でのリアルタイムなメッセージ中継、チャンネル管理、およびユーザー認証機能を提供します。
システムアーキテクチャ
本システムの全体像と、開発対象の範囲(スコープ)を以下のコンテナ図に示します。
アーキテクチャの解説
この図は、システムの構成要素とそれぞれの責務、および通信の流れを表しています。
1. 開発スコープと責務
ft_irc Server (紫色🟣):
本プロジェクトで開発する対象です。
主な責務: クライアントからのTCP接続の管理、受信したIRCコマンドの解析、適切なレスポンスの返却、および他のクライアントへのメッセージ中継(リレー)を行います。
技術制約: C++98、シングルプロセス、ノンブロッキングI/O (
poll()等) を使用します。
IRC Client / Raw Socket Tool (青色🟦):
サーバーを利用するための外部アプリケーションです(開発対象外)。
一般ユーザーは
irssiやLimeChatなどの標準的なIRCクライアントを使用します。開発者やレビュワーは、
netcat(nc) やtelnetを使用して、生のプロトコルメッセージを直接送受信することで動作検証を行います。
2. 通信プロトコル
全ての通信は TCP/IP 上で行われます(デフォルトポート:
6667)。通信内容は、RFC 1459等で定義されたテキストベースのコマンド(例:
NICK,JOIN,PRIVMSG)とその応答コードによって構成されます。サーバーは、異なるクライアントからのリクエストを非同期に処理し、チャットシステムとしての整合性を保ちます。
3. ユーザーと利用シーン
一般ユーザー: GUI/TUIクライアントを通じて、直感的にチャット機能を利用します。
開発者 / レビュワー: プロトコルレベルでの挙動を確認するため、CLIツールを用いてエッジケースやエラーハンドリングのテストを行います。