Skip to content

はじめに: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 (青色🟦):

  • サーバーを利用するための外部アプリケーションです(開発対象外)。

  • 一般ユーザーは irssiLimeChat などの標準的なIRCクライアントを使用します。

  • 開発者やレビュワーは、netcat (nc) や telnet を使用して、生のプロトコルメッセージを直接送受信することで動作検証を行います。

2. 通信プロトコル

  • 全ての通信は TCP/IP 上で行われます(デフォルトポート: 6667)。

  • 通信内容は、RFC 1459等で定義されたテキストベースのコマンド(例: NICK, JOIN, PRIVMSG)とその応答コードによって構成されます。

  • サーバーは、異なるクライアントからのリクエストを非同期に処理し、チャットシステムとしての整合性を保ちます。

3. ユーザーと利用シーン

  • 一般ユーザー: GUI/TUIクライアントを通じて、直感的にチャット機能を利用します。

  • 開発者 / レビュワー: プロトコルレベルでの挙動を確認するため、CLIツールを用いてエッジケースやエラーハンドリングのテストを行います。