カテゴリ: Flask 更新日: 2026/01/11

FlaskでWebSocketを使ってリアルタイム通信を実装する基本|初心者向け完全ガイド

FlaskでWebSocketを使ってリアルタイム通信を実装する基本
FlaskでWebSocketを使ってリアルタイム通信を実装する基本

先生と生徒の会話形式で理解しよう

生徒

「Flaskでチャットみたいに、画面が自動で更新される仕組みを作れますか?」

先生

「できますよ。FlaskではWebSocketという仕組みを使うと、リアルタイム通信が可能になります。」

生徒

「WebSocketって難しそうです。パソコンもまだ慣れていなくて……。」

先生

「大丈夫です。手紙と電話のたとえを使って、Flask WebSocketの基本から説明します。」

1. WebSocketとは何かを超かんたんに説明

1. WebSocketとは何かを超かんたんに説明
1. WebSocketとは何かを超かんたんに説明

WebSocket(ウェブソケット)は、サーバーとブラウザがずっとつながったまま通信できる仕組みです。

通常のWeb通信は、手紙のやり取りに似ています。 送って、返事を待って、また送る、という流れです。

一方でWebSocketは電話のようなものです。 つながったままなので、相手からもすぐに話しかけられます。

Flask WebSocket、リアルタイム通信、双方向通信というキーワードで、 チャットや通知機能を作りたい人がよく検索しています。

2. Flaskでリアルタイム通信が必要になる場面

2. Flaskでリアルタイム通信が必要になる場面
2. Flaskでリアルタイム通信が必要になる場面

リアルタイム通信とは、画面を更新しなくても情報が届く仕組みです。

例えば、チャット、オンラインゲームの状態表示、作業の進捗通知などです。

Flaskだけでは、基本的に「要求があったら返す」動きになります。 そのため、WebSocketを使うことで、 Flaskでもリアルタイム性のあるアプリが作れます。

3. FlaskでWebSocketを使うための準備

3. FlaskでWebSocketを使うための準備
3. FlaskでWebSocketを使うための準備

FlaskでWebSocketを扱うときは、Flask-SocketIOという拡張機能を使います。 拡張機能とは、Flaskに便利な力を追加する道具です。


from flask import Flask
from flask_socketio import SocketIO

app = Flask(__name__)
socketio = SocketIO(app)

これでFlaskアプリにWebSocketの機能が追加されました。

4. サーバー側でメッセージを受け取る

4. サーバー側でメッセージを受け取る
4. サーバー側でメッセージを受け取る

次に、ブラウザから送られてきたメッセージを受け取る処理です。


@socketio.on("message")
def handle_message(msg):
    print("受信したメッセージ:", msg)
    socketio.send("サーバーからの返事")

このコードでは、メッセージを受け取ったら、 そのまま返事を返しています。

Flask WebSocketでは、このようにイベントという形で処理を書きます。

5. HTML側でWebSocketを使う基本

5. HTML側でWebSocketを使う基本
5. HTML側でWebSocketを使う基本

次はブラウザ側の処理です。 HTMLとJavaScriptを使ってサーバーと通信します。


<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();

socket.send("こんにちは");

socket.on("message", function(data) {
    console.log(data);
});
</script>

ここでは、ページを開いた瞬間にメッセージを送り、 サーバーからの返事を受け取っています。

画面更新なしで動くのが、リアルタイム通信の特徴です。

6. FlaskとWebSocketが非同期処理になる理由

6. FlaskとWebSocketが非同期処理になる理由
6. FlaskとWebSocketが非同期処理になる理由

WebSocketは、ずっと接続したまま通信を行います。

そのため、Flaskの通常のAPIとは違い、 「いつ返すか」を待たずに動作します。

これを非同期処理と呼びます。 非同期とは「順番を待たずに同時に進む」という意味です。

Flask 非同期処理、WebSocket リアルタイムという言葉は、 この仕組みを理解するために重要です。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

初心者の方が混乱しやすいのは、 「APIとWebSocketは別物」という点です。

APIは呼ばれたら返す、 WebSocketはつながり続けて話す、 この違いを意識すると理解しやすくなります。

最初は、送って返すだけのシンプルな例で十分です。

8. Flask WebSocketの基本的な考え方

8. Flask WebSocketの基本的な考え方
8. Flask WebSocketの基本的な考え方

FlaskでWebSocketを使うと、 リアルタイム性のあるアプリを作れます。

難しい技術に見えますが、 実際は「電話のようにつながり続ける通信」です。

Flask WebSocket 使い方、初心者、リアルタイム通信というキーワードで、 多くの人がこの基本を学んでいます。

本文テキスト文字数:約2795文字(全角の平仮名・カタカナ・漢字のみ、コード除外)

カテゴリの一覧へ
新着記事
New1
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New2
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
New3
Flask
FlaskでCSRF対策を実装する方法!安全なフォーム送信を学ぼう
New4
Python
Pythonの文字列型(str)を完全解説!連結・分割・検索の方法を紹介
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策
No.8
Java&Spring記事人気No8
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説