【開発ナレッジ】LINEの既読になるまでのフロー技術 - j-komatsu/myCheatSheet GitHub Wiki

LINEの既読になるまでのフロー技術

概要

LINEのメッセージが「既読」になる仕組みを、専門的な技術要素と小学生にもわかる例題を交えながら解説します。


1. メッセージ送信のフロー

専門的な技術要素

  1. 送信者がメッセージを入力
    • ユーザーがメッセージを入力し「送信」ボタンを押します。
  2. メッセージの送信リクエスト
    • LINEアプリからLINEサーバーにHTTPS通信を使って送信リクエストが送られます。
  3. メッセージの保存
    • LINEサーバーは送信リクエストを受け取り、メッセージをデータベースに保存します。
  4. 受信者に通知
    • LINEサーバーは受信者に新しいメッセージがあることをプッシュ通知(Push Notification)で知らせます。

小学生にもわかる例

  1. 手紙を書く
    • 太郎くんが「おはよう!」と書いた手紙を作ります。
  2. 郵便ポストに入れる
    • 太郎くんは手紙を郵便ポストに入れます。
  3. 郵便局が手紙を管理
    • 郵便局が手紙を保管して、花子さんの家に届ける準備をします。
  4. 花子さんにお知らせ
    • 郵便局の人が花子さんの家のドアをノックして「手紙が届いていますよ」と知らせます。

2. 既読になる仕組み

専門的な技術要素

  1. 受信者がメッセージを開く
    • 受信者がLINEアプリを開き、該当のチャット画面を表示します。
  2. 既読リクエストの送信
    • LINEアプリは、LINEサーバーに「このメッセージを読んだ」という既読リクエストを送ります。
  3. 既読状態の更新
    • LINEサーバーはデータベース上の該当メッセージの状態を「既読」に更新します。
  4. 送信者への通知
    • サーバーから送信者に「既読」の状態を通知し、送信者の画面に既読マークを表示します。

小学生にもわかる例

  1. 花子さんが手紙を読む
    • 花子さんがポストから手紙を取り出し、内容を読みます。
  2. 読んだことを郵便局に伝える
    • 花子さんは郵便局に「手紙を読みました!」と電話します。
  3. 郵便局が情報を記録
    • 郵便局は太郎くんから届いた手紙が読まれたことを記録します。
  4. 太郎くんにお知らせ
    • 郵便局は太郎くんに「花子さんが手紙を読みました」と伝えます。

3. 補足:技術的なポイント

1. サーバーとクライアント間の通信

  • 通信プロトコル: LINEはHTTPS通信を使って、メッセージや既読情報を安全にやりとりします。
  • WebSocket: プッシュ通知やリアルタイム更新にはWebSocketが使われる場合があります。

2. データベースの役割

  • サーバーは受信したメッセージや既読状態をデータベースに保存します。
  • メッセージは「未読」や「既読」などの状態を持つ属性で管理されます。

3. プッシュ通知の仕組み

  • プッシュ通知は、Apple Push Notification Service(APNs)やFirebase Cloud Messaging(FCM)を活用して実現されます。

4. 図解で理解するフロー

送信者                      サーバー                    受信者
  |                            |                         |
  |----メッセージ送信--------->|                         |
  |                            |                         |
  |                            |----通知を送る--------->|
  |                            |                         |
  |<---既読通知が更新される---|                         |

5. チートシートまとめ

フロー 小学生例 技術要素
メッセージ送信 手紙を郵便ポストに入れる HTTPS通信
メッセージ受信 郵便局が手紙を届ける プッシュ通知
メッセージを開く 手紙を読む LINEアプリが動作
既読状態を更新 「読みました」と郵便局に伝える データベースの更新
既読通知を送信 太郎くんに「読んだよ」と伝える サーバーからの通知

⚠️ **GitHub.com Fallback** ⚠️