Chat Requirements
Overview
チャットシステムにおける要件定義。
要件定義
チャットの種類を明確にする
- グループチャット
- Facebook Messengerみたいな1対1のチャット
対象サービスの確認
- Webアプリ
- モバイルアプリ
- どちらも対象
DAU確認
- デイリーアクティブユーザーの想定
MAU確認
- マンスリーアクティブユーザーの想定
グループチャット
- グループチャットの参加人数の上限
メッセージのサイズ制限
- サイズ制限はする
メッセージの中身
- テキストメッセージのみなのか
- 添付ファイル(画像)などは付与できるのか
チャットの履歴
- どのくらい保持するのか
- またユーザーが退会した時のデータはどうするのか
マルチデバイス対応
- 同一アカウントで複数アカウントの同時ログインが可能なのか
設計規模の同意
- どのくらいのDAUやMAUを想定しているのか合意を得ておく
エンドツーエンドの暗号化(End-to-End)
- 暗号化は必要か
エンドツーエンドの暗号化(End-to-End)とは
エンドツーエンドの暗号化(End-to-End Encryption、E2EE)は、通信の両端(送信者と受信者)だけがメッセージ内容を復号できるようにする暗号化方式。
この仕組みをチャットシステムに組み込むことで、通信経路にあるサーバーやネットワーク運営者がメッセージの内容を確認できないように保護される。
具体的には以下のような特徴。
- メッセージの暗号化
送信者がメッセージを作成すると、その内容は自動的に暗号化される。
この暗号化は、受信者だけが持つ秘密鍵によって復号できるよう設定されている。 - メッセージの送信
暗号化されたメッセージがサーバーを経由して受信者に届く。
この段階でメッセージは暗号化されたまま。
サーバー側には、復号するための鍵情報がないため、内容を読むことができない。 - メッセージの復号 受信者のデバイスで、受信者が持っている秘密鍵を使ってメッセージを復号し、内容を表示する。
エンドツーエンド暗号化のメリット。
- プライバシーの保護: サーバー管理者や第三者がメッセージの内容を確認できないため、プライバシーが確保される
- データのセキュリティ向上: 万一メッセージが途中で盗聴された場合でも、暗号化されているため内容が保護される。