Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

WebSocket(ウェブソケット)とは | 意味や読み方など丁寧でわかりやすい用語解説

WebSocket(ウェブソケット)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ウェブソケット (ウェブソケット)

英語表記

WebSocket (ウェブソケット)

用語解説

WebSocketは、WebブラウザとWebサーバー間で、一度接続を確立したらその接続を継続的に利用し、双方向にデータをやり取りできる通信プロトコルである。従来のWebアプリケーションで標準的に用いられてきたHTTPプロトコルが、クライアントからの要求(リクエスト)に対してサーバーが応答(レスポンス)を返すという一方向かつ短命な通信モデルであるのに対し、WebSocketは永続的で全二重の通信路を提供する。これにより、サーバーが能動的にクライアントへ情報を送信する「プッシュ型」のリアルタイム通信がWeb上で可能になった。チャットアプリケーションのメッセージ受信、オンラインゲームのリアルタイムな状態更新、株価や為替レートの継続的な更新といった、高い即時性が求められる現代のWebサービスにおいて不可欠な技術である。

より詳細に説明すると、WebSocketの最大の特徴は、HTTPプロトコルをベースとした「ハンドシェイク」と呼ばれる初期のやり取りを通じて接続を確立し、その後はまったく異なるプロトコルに「アップグレード」される点にある。クライアントは通常のHTTPリクエストに「Upgrade: websocket」と「Connection: Upgrade」というヘッダを含めてサーバーに送信する。サーバーがこれを許可すると、HTTPステータスコード101 (Switching Protocols) を返し、以降の通信はWebSocketプロトコルへと切り替わる。このプロセスにより、既存のHTTPインフラストラクチャ(ポート80や443)を利用しながら、より効率的な通信方式へと移行できるのである。

一度WebSocket接続が確立されると、その接続はクライアントまたはサーバーが明示的に終了させるまで維持される。この永続的な接続により、クライアントはサーバーからの新しい情報が来るたびにリクエストを送信し続ける必要がなくなる。従来のHTTPでは、リアルタイム性を実現するために「ポーリング」(一定間隔でサーバーに問い合わせる)や「ロングポーリング」(サーバーからの応答があるまで接続を維持し続けるが、データ送信後は接続が切れる)といった手法が用いられてきたが、これらはサーバーへの頻繁なリクエストによる負荷の増大や、データ受信までの遅延、不要なヘッダ情報の繰り返し送信によるオーバーヘッドといった課題を抱えていた。

WebSocketでは、これらの課題が解消される。接続が確立された後は、HTTPの重いヘッダ情報を毎回送信する必要がなくなり、極めて軽量なデータフレーム(ペイロード)のみがやり取りされるため、通信の効率が大幅に向上する。これにより、ネットワーク帯域の消費を抑えつつ、低遅延でのデータ交換が可能となる。また、クライアントとサーバーのどちらからでも、接続が維持されている限りいつでもデータを送信できる双方向通信(全二重通信)が可能であるため、例えばチャットアプリケーションでは、一方がメッセージを送信すると、もう一方も同時にメッセージを送信できる。サーバーは特定のイベントが発生した際に、その情報が必要なクライアントに対して即座にデータをプッシュすることも可能になる。

WebSocketは、ウェブブラウザに標準で組み込まれているJavaScriptのAPIを通じて簡単に利用できる。これは開発者にとって大きな利点であり、特別なプラグインや技術を導入することなく、Web上でリアルタイムアプリケーションを構築できる。サーバーサイドではNode.js、Java、Python、PHPなど、多くのプログラミング言語でWebSocketをサポートするライブラリやフレームワークが提供されており、柔軟な開発が可能である。

しかし、WebSocketにも考慮すべき点がある。永続的な接続を維持するため、サーバーは多数のクライアント接続を管理するためのリソースを消費する。大規模なリアルタイムアプリケーションでは、サーバー側の設計やスケーラビリティの確保が重要となる。また、一部の古いプロキシサーバーやファイアウォールは、WebSocketのプロトコルアップグレードを適切に処理できない場合があり、通信がブロックされる可能性もゼロではない。それでも、現代のWebアプリケーションにおいて、リアルタイムなユーザー体験を提供するための基盤技術として、WebSocketの重要性は高まる一方である。