TERM PRIMER
チャットの仕組み|先に知っておく言葉
送信ボタンを押すだけに見えても、裏側では「誰が」「どの会話へ」「誰に届けるか」を確認し、保存や配信を行っています。
多くのチャットは、サーバーがメッセージを受け取り、会話の参加者へ届ける仕組みです。相手が画面を開いているときの更新、閉じているときの通知、あとから読む履歴には、それぞれを担う処理があります。画面では一続きに見える動きを、役割ごとに分けてみます。
第81話「チャットの仕組みはどこを通る?」では、会話ルームの配送路を進み、メッセージ札がサーバーのカウンターを通る様子を見ます。ここからは、実際にメッセージが届くまでを順に確かめます。
イト
チャットって、ぼくのスマホから相手のスマホへ文字が飛んでるだけじゃないの?
ユイ
仕事のチャットでも、送信中、既読、通知、入力中が別々に動きますよね。順番を説明しようとすると止まります
マコト
まずは本文を届ける流れと、状態をそろえる流れを分けて見よう
ピコ
会話ルームの配達棚をのぞけば、メッセージの通り道が見えてくるよ
会話ルームごとの配達棚
あなたが「了解です」と送ると、その内容はまずアプリやブラウザからサーバーへ送られます。サーバーは、どの会話ルームのメッセージか、誰が送ったのか、誰に届けるべきかを確認し、保存し、相手や参加者の端末へ知らせます。
ラボのたとえでは、会話ルームごとに配達棚があります。一対一の会話なら相手へ、グループなら参加者へ、それぞれ届ける道を選びます。メッセージ札には、本文だけでなく、送信者、時刻、会話ルーム、状態などの情報も関係します。
このたとえを実際の仕組みに戻すと、配達棚は会話ルームやスレッドのデータ、札はメッセージのデータ、配達係はサーバーやアプリの処理です。棚や札そのものがコンピューターの中にあるわけではありませんが、どこに届けるかを間違えないために、会話の場所と参加者を管理していると考えるとわかりやすくなります。

メッセージが届く順番
チャットの送信は、いくつかの段階に分けられます。最初に利用者がメッセージを入力します。送信ボタンを押すと、アプリは本文だけでなく、会話ルームのID、送信者、添付ファイルの有無など、必要な情報をサーバーに送ります。サーバーは、送信者がその会話に参加しているか、送ってよい内容か、どこに保存するかを確認します。
確認できたら、メッセージは保存され、相手や参加者の端末に届ける準備が進みます。相手がチャット画面を開いていれば、新着としてすぐ表示されることがあります。開いていなければ、未読数を増やしたり、通知へつなげたり、次に開いたとき履歴として取得できるようにしたりします。
1つのメッセージでも、送信、保存、配信、表示、通知、既読の更新という複数の処理が関係します。画像やファイルを添付する場合は、本文とは別にアップロード処理が入ることもあります。編集、削除、返信、リアクション、スタンプなどがあるサービスでは、さらに状態の更新が増えます。

サーバーと会話ルームの役割
チャットでサーバーが重要なのは、メッセージの中継だけでなく、会話の整合性を保つためです。誰でもどの会話にも送れると困ります。だからサーバーは、送信者がログインしているか、その会話に参加しているか、ブロックや権限の状態はどうか、保存する場所はどこかを確認します。
会話ルームは、メッセージをまとめる入れ物のようなものです。一対一のチャット、グループチャット、仕事のチャンネル、サポートの問い合わせスレッドなど、サービスによって名前は違っても「どの会話に属するメッセージか」を管理する必要があります。ここが曖昧だと、別の相手に届いたり、参加していない人に見えたりしてしまいます。
メッセージの仕組み で扱うように、本文には送信者、宛先、時刻、添付、状態などの情報が伴います。チャットはこれらを使い、どの会話の参加者に届けるかを確かめ、あとから履歴を読めるようにしています。
リアルタイム更新とWebSocket
チャットでは、新しいメッセージを短い遅れで相手の画面に表示したい場面があります。そのために、WebSocketのようにサーバーとブラウザやアプリの接続を開いたままにして、新着をすばやく届ける方法が使われることがあります。リアルタイム通信と呼ばれる仕組みの一つです。
ただし、チャット全体がWebSocketだけでできているわけではありません。送信はHTTPのAPI、リアルタイム更新はWebSocket、過去の履歴はデータベースから取得、アプリを閉じているときはプッシュ通知、というように複数の仕組みが組み合わさる場合があります。サービスの設計によっては、一定間隔でサーバーへ確認する方法や、別のリアルタイム基盤を使うこともあります。
画面を開いているときの新着表示、閉じているときの通知、あとから履歴を読む動きは、同じ道で届くとは限りません。リアルタイムに見えても、それぞれ役割が違います。詳しくは、WebSocketとは や リアルタイム通信とは で確かめられます。
既読・未読・入力中・通知
チャットでは、本文以外の状態も大切です。既読は、相手がメッセージを見た扱いになったことを示す状態です。未読は、まだ見ていないメッセージがあることを示します。入力中は、相手が文字を入力している状態を短い時間だけ知らせる表示です。通知は、画面を開いていない相手へ新着を知らせる仕組みです。
表示が変わる裏では、端末とサーバーが状態をやり取りしています。「見ました」「入力しています」「未読が増えました」「通知を出します」といった情報が、本文とは別に流れるのです。ただし、既読になるタイミング、入力中を表示する長さ、通知を出す条件はサービスごとに違います。
| 状態 | 何を表すか | 確認したいこと |
|---|---|---|
| 送信中 | サーバーに送っている途中 | 通信が切れていないか |
| 送信済み | サーバーに届いた | 相手が見たとは限らない |
| 既読 | 相手が見た扱いになった | サービスごとの条件 |
| 入力中 | 相手が入力している | 一時的な状態であること |
| 通知 | 新着を端末へ知らせる | 通知設定や端末権限 |
「送れた」「相手の端末へ届いた」「相手が読んだ」は別の段階です。この三つを分けると、チェックマークの意味も落ち着いて読めます。

届かない・遅れるときの確認とつまずきの見分け方
チャットが遅れる、届かない、通知だけ来ない、既読だけ変わらない。こうしたときは、どこで止まっているかを分けて考えると確認しやすくなります。自分の端末からサーバーへ送れていないのか、サーバーには届いたが相手に通知できていないのか、相手の端末がオフラインなのか、既読の状態だけが更新されていないのかで、見る場所が変わります。
| 画面で起きること | 近い確認場所 |
|---|---|
| 送信中のまま止まる | 自分の通信、アプリ、サーバーへの送信 |
| 送信失敗になる | 回線、ログイン状態、添付ファイルの大きさ |
| 相手には届いたが通知が来ない | 通知設定、端末の権限、プッシュ通知 |
| 既読だけ変わらない | 相手の画面状態、既読の送信、サービスの仕様 |
| 画像だけ送れない | ファイルサイズ、アップロード、対応形式 |
| グループの一部だけ届かない | 参加者の権限、ブロック、同期状態 |
実務では、この切り分けが説明に役立ちます。「チャットが壊れた」ではなく、「本文は送信済みだが通知が来ない」「画像だけアップロードで失敗する」「自分だけ送信中のまま止まる」と言えると、サポートや開発者に伝わりやすくなります。家庭でも、Wi-Fi、アプリの更新、通知設定、相手の端末状態を順番に確認できます。
よくある誤解は、チャットは端末同士が直接文字を渡しているだけという考え方です。実際には、多くのサービスでサーバーが保存や配信、権限確認、履歴の取得、通知の連携を担います。もうひとつの誤解は、WebSocketがあればチャット全体が完成するというものです。WebSocketはリアルタイム更新の助けになりますが、送信、保存、履歴、通知、既読などは別の仕組みと一緒に動きます。
図で見るチャットの流れ
チャットの流れは、本文の配達と状態の更新を一緒に見るとわかりやすくなります。送信ボタンを押した瞬間だけでなく、その後に相手の画面や通知や既読がどう変わるかまでがチャットの体験です。
- メッセージを入力する
- 送信ボタンを押す
- アプリが本文と会話ルーム情報をサーバーに送る
- サーバーが送信者・宛先・権限・保存先を確認する
- メッセージを保存する
- 相手や参加者の画面へ新着を届ける
- 必要に応じて通知・未読・既読・入力中を更新する
- あとから履歴として読み直せるようにする
この流れを見ると、チャットは「文字を送る機能」だけではないことがわかります。会話の場所を管理し、参加者を確認し、状態をそろえ、画面を開いていない人にも知らせる。ピコルートの会話ルームで札が行き交うたとえは、その複数の役割を見える形にしたものです。
チャットの仕組みを説明する練習
二人の会話ルームを紙に描き、「誰が」「どの部屋へ」「何を届けるか」を矢印にしてから、三行を完成させてください。
チャットとは、入力したメッセージを____________に送り、____________の参加者に届ける仕組みです。
既読や入力中は、本文とは別に____________をそろえる表示です。
WebSocketは、チャットの中でも主に____________に関係します。
答えの例:
- チャットとは、入力したメッセージをサーバーに送り、会話ルームの参加者に届ける仕組みです。
- 既読や入力中は、本文とは別に会話の状態をそろえる表示です。
- WebSocketは、チャットの中でも主にリアルタイムに近い更新に関係します。
よくある誤解を確かめる
Q1. 多くのチャットで、送信したメッセージはどこを通って相手に届きますか?
- いつも端末同士だけで直接届く
- サーバーを通って保存や配信が行われる
- 画面の明るさで届く
- 通知設定だけで届く
答え: 2. サーバーを通って保存や配信が行われる
解説: サービスによって細部は違いますが、多くの場合、サーバーが宛先や保存先を確認して配信します。
Q2. 送信済みと既読は同じ意味ですか?
答え: 同じではありません。
解説: 送信済みはサーバーなどに届いた状態、既読は相手が見た扱いになった状態です。サービスによって表示条件は違います。
Q3. WebSocketだけでチャット全体が動くと考えてよいですか?
答え: それだけでは足りません。
解説: WebSocketはリアルタイム更新に使われることがありますが、送信、保存、履歴取得、通知、権限確認などには別の仕組みも関係します。
LAB WHITEBOARD
チャットの仕組みを一文で説明してみよう
「チャットがメッセージをサーバーに送り、会話ルームの参加者に配信し、既読や通知などの状態を更新する仕組みだと説明できるようになる。」を、いまの自分の言葉で一文にしてみてください。途中の説明でも大丈夫です。




