Day2 LINEの「既読」ってどう動いてる?

luagate/5day-challenge/day2-line-readDay2 - LINEの既読17体験・イベント

上から下へ、全 17 枚そのまま並べています。

発表モードで開く

Day2 LINEの「既読」ってどう動いてる?

5日チャレンジ - 発見

1
1

目次

Day2 の流れ

今日の内容

1 既読がつく瞬間に何が起きるか

2 サーバーとリアルタイム通信

3 プッシュ通知の仕組み

4 体験コードとクイズ

2
2

Day2 - LINEの既読

1

既読がつく瞬間

3
3
Day2 - LINEの既読

メッセージを開いた瞬間

既読がつくまでに何が起きているのでしょうか。

  • あなたがメッセージを開く
  • アプリが「読んだ」とサーバーに送信
  • サーバーが送信者に「読まれた」と通知
  • 送信者の画面に「既読」が表示される
4
4
Day2 - LINEの既読

既読の4ステップ

メッセージを開いてから既読が相手に届くまでの流れです。

メッセージを開く
サーバーに通知
相手へプッシュ
既読を表示
5
5

Day2 - 通信の仕組み

2

リアルタイム通信

6
6
Day2 - 通信の仕組み

WebSocketとは

双方向で常時接続できる通信方式です。

WebSocket

クライアントとサーバーがリアルタイムに双方向でデータを送受信できる通信プロトコル

チャット・既読・通知に必須

HTTP と違い接続が維持される

サーバーから即座にプッシュできる

7
7
Day2 - 通信の仕組み

HTTP と WebSocket

用途によって使い分けられる2つの通信方式です。

HTTP (従来)

  • 依頼 → 返答 で終了
  • 都度接続しなおす
  • Webページ閲覧向き

WebSocket

  • 接続を維持し続ける
  • サーバーから即プッシュ
  • チャット・既読向き
8
8
Day2 - 通信の仕組み

既読の通信フロー

あなたと相手、サーバーの間で情報がやり取りされます。

開封通知
既読プッシュ
あなた のLINE
LINE サーバー
相手 のLINE
9
9
Day2 - 通信の仕組み

既読処理をイメージで書く

Pythonの辞書でメッセージの状態を管理してみましょう。

python
messages = [
    {"id": 1, "text": "おはよう", "read": False},
    {"id": 2, "text": "元気?", "read": False},
]

def mark_as_read(msg_id):
    for m in messages:
        if m["id"] == msg_id:
            m["read"] = True
            print(f"既読にしました: {m['text']}")

mark_as_read(1)
for m in messages:
    status = "既読" if m["read"] else "未読"
    print(f"[{status}] {m['text']}")
10
10

Day2 - 通知

3

プッシュ通知

11
11
Day2 - 通知

プッシュ通知の仕組み

アプリを開いていなくてもメッセージが届く理由です。

アプリ起動時
  • 端末固有トークンを取得
  • サーバーに登録
メッセージ発生
  • 相手がメッセージ送信
  • サーバーに到着
プッシュ配信
  • Apple/Google経由で配信
  • 端末に通知が届く
12
12
Day2 - 通知

LINEの1日のメッセージ送信数

日本中で膨大なメッセージが飛び交っています。

75 億件/日604530150
17億件/日
35億件/日
52億件/日
68億件/日
75億件/日
2015年
2018年
2020年
2022年
2024年

出典: LINE公表データ(推定)

13
13

Day2 - まとめ

4

体験コードとクイズ

14
14
Day2 - まとめ
クイズ

クイズタイム

今日の内容を確認しましょう。

チャットの既読など、サーバーから即座に情報を届けるのに使う通信方式は?

A
HTTP
B
FTP
C
WebSocket
D
SMTP
15
15
Day2 - まとめ
答え

クイズの答え

チャットの既読など、サーバーから即座に情報を届けるのに使う通信方式は?

A
HTTP
B
FTP
C
WebSocket
D
SMTP

正解は3番目の「WebSocket」です。

16
16
"

既読の裏側には、WebSocketによるリアルタイム通信とプッシュ通知の仕組みがある。

5日チャレンジ Day2

17
17