Phase 1: 基礎理解
WebSocketの概念、ネットワーク技術、API基本構造を理解する基礎フェーズ
推奨学習時間
18.5-21.5時間
🎯 学習目標
- ✓ ブラウザ標準WebSocket APIの基本概念と適用場面を理解する
- ✓ WebSocketの11の主要カテゴリーの用途を理解し適用判断ができる
- ✓ HTTP/1.1、HTTP/2、HTTP/3でのWebSocket対応の違いを理解する
- ✓ End to End通信とHop by Hop通信の違いを理解する
- ✓ WebSocketハンドシェイクのプロセスを詳細に説明できる
📋 前提知識
- • TypeScript/JavaScript の中級レベルの知識
- • HTTP プロトコルの基本理解
- • ネットワーク通信の基礎知識
- • 非同期処理(Promise/async-await)の理解
学習セクション
4つのセクションで段階的にWebSocketの基礎を理解します
1
WebSocket 入門
5-7時間
WebSocketの基本概念と適用場面を理解し、他技術との違いを学習
WebSocketとは何か
1時間WebSocketの定義、基本概念、ブラウザ標準WebSocket APIの重要性
📚 学習内容
- • WebSocketの定義と基本概念
- • ブラウザ標準WebSocket APIの重要性
- • リアルタイム通信の必要性
- • WebSocketの歴史と標準化(RFC 6455)
💻 演習
- ▸ ブラウザ開発者ツールでWebSocket通信を観察
- ▸ 簡単なWebSocketテストサイトでの動作確認
HTTPの限界とWebSocketの優位性
1時間HTTP通信の制限を理解し、WebSocketによる双方向通信の利点を学習
📚 学習内容
- • HTTPリクエスト/レスポンス型の制限
- • ポーリング手法の問題点
- • WebSocket APIによる双方向通信の実現
- • 2016年以降のブラウザ対応状況
💻 演習
- ▸ ポーリングとWebSocketのパフォーマンス比較
- ▸ ネットワークトラフィックの測定と分析
WebSocketの利用例と適用場面
2-3時間WebSocketの11の主要カテゴリーと実際の適用事例を詳しく学習
📚 学習内容
- • リアルタイム通信(チャット、Discord、サポートチャット)
- • 共同編集(Google Docs風、コード共同編集)
- • 通知・アラート(在庫更新、リアルタイムアラート)
- • データ配信(株価、為替、スポーツスコア)
- • IoT連携(スマートホーム、センサー通知)
- • PWA統合(オフライン対応、Service Worker連携)
- • Webベースシミュレーション
- • バックエンド連携(GraphQL Subscriptions)
- • セキュリティ・監査
- • 金融・医療アプリケーション
- • VR/メタバース連携
💻 演習
- ▸ 11カテゴリーからの適用場面選択演習
- ▸ アーキテクチャ構成図の作成
- ▸ 既存WebSocketアプリの分類・分析
- ▸ 自分のプロジェクトでの適用可能性検討
WebSocket vs 他技術の比較理解
1時間他の通信技術との違いを理解し、適切な技術選択ができるようになる
📚 学習内容
- • WebSocket vs WebTransport
- • WebSocket vs Server-Sent Events (SSE)
- • WebSocket vs Socket.IO(概要)
- • 使い分けの判断基準
💻 演習
- ▸ 具体的な用途での技術選択演習
- ▸ 現在のブラウザ対応状況調査
2
ネットワーク技術
6.5-7.5時間
WebSocketを支えるネットワーク技術の基盤を理解
WebSocketを理解するためのHTTP基礎
45分HTTP/1.0とHTTP/1.1の違いとWebSocketとの関係
📚 学習内容
- • HTTP/1.0 vs HTTP/1.1の接続管理の違い
- • 持続的接続(Keep-Alive)による効率化
- • WebSocketがHTTP/1.1の持続的接続を前提とする理由
💻 演習
- ▸ HTTP/1.0とHTTP/1.1の接続パターン比較
- ▸ cURLコマンドでの接続ヘッダー確認
OSI参照モデルとWebSocketの位置
1時間ネットワーク層とWebSocketの位置づけを理解
📚 学習内容
- • OSI 7層モデルの復習
- • WebSocket(セッション層)とSocket(トランスポート層)の違い
- • HTTPからWebSocketへのプロトコル昇格
💻 演習
- ▸ Wiresharkを使ったパケット解析
- ▸ WebSocketハンドシェイクの詳細観察
HTTP/1.1からHTTP/3までのWebSocket対応
2時間各HTTPバージョンでのWebSocket動作の違いを学習
📚 学習内容
- • HTTP/1.1でのWebSocketハンドシェイクの基礎
- • HTTP/2環境でのWebSocket動作
- • HTTP/3 (QUIC)でのWebSocketの位置づけ
- • WebTransport APIとの比較・将来性
💻 演習
- ▸ 各HTTPバージョンでのWebSocket接続テスト
- ▸ パフォーマンス比較測定
- ▸ HTTP/3対応サービスでの動作確認
WebSocket接続確立プロセス
1.5-2.5時間WebSocket接続確立の詳細なプロセスを理解
📚 学習内容
- • End to End vs Hop by Hop通信の基礎
- • HTTP/1.1 Upgradeハンドシェイクの詳細
- • WebSocketキーの生成と検証
- • プロトコルネゴシエーション
- • プロキシ・ファイアウォール環境での動作
💻 演習
- ▸ curlコマンドでWebSocketハンドシェイクを手動実行
- ▸ ハンドシェイクヘッダーの検証実装
- ▸ プロキシ環境でのWebSocket接続テスト
セキュリティとポート管理
1時間WebSocketのセキュリティ要件とポート管理
📚 学習内容
- • ws(ポート80)とwss(ポート443)の違い
- • Originチェックとセキュリティ
- • ファイアウォール・プロキシとの関係
- • CORSとの違い
💻 演習
- ▸ wss接続の設定と証明書管理
- ▸ Originチェックの実装
3
WebSocket API の基本構造
5-6時間
WebSocket APIの基本的な構造と動作メカニズムを理解
WebSocket状態とライフサイクル
30分WebSocketの4つの状態と状態遷移を実際の接続で学習
📚 学習内容
- • ReadyStateの4つの状態(CONNECTING, OPEN, CLOSING, CLOSED)
- • 状態遷移のタイミングとイベントハンドラ
- • 正常なクローズハンドシェイクと異常切断
- • Close Codeによる切断理由の識別
💻 演習
- ▸ リアルタイム状態可視化での接続観察
- ▸ 異なる公開サービスでの状態比較
WebSocket接続ライフサイクル詳細
1.5時間WebSocket接続の開始から終了までの詳細なライフサイクル
📚 学習内容
- • 接続確立(ハンドシェイク)の詳細プロセス
- • データ通信フェーズでの双方向通信
- • 接続終了(クローズハンドシェイク)
- • 異常切断の検出と処理
💻 演習
- ▸ TypeScriptでWebSocket接続状態の管理実装
- ▸ 接続品質の監視システム作成
イベントベース通信モデル
2時間WebSocketのイベントドリブンな通信モデルを理解
📚 学習内容
- • onopen, onmessage, onclose, onerrorイベント
- • RxJS経験者向け: ObservableパターンでのWebSocket管理
- • Svelteへの移行: Svelteストアでの WebSocket管理
- • Promise/async-awaitでのラッピング
💻 演習
- ▸ イベントハンドラーの実装
- ▸ SvelteストアでのWebSocket状態管理
クライアント・サーバー役割分担
1-2時間WebSocketにおけるクライアントとサーバーの責務
📚 学習内容
- • クライアント側の責務
- • サーバー側の責務
- • 状態管理とセッション管理
💻 演習
- ▸ Node.js + TypeScript + 標準wsライブラリでWebSocketサーバー実装
- ▸ 複数クライアント接続管理
4
WebSocket API の基本操作
4-5時間
ブラウザ標準WebSocket APIの基本的な操作方法を習得
WebSocket URL と接続確立
1時間WebSocket URLの形式と接続の確立方法
📚 学習内容
- • WebSocket URL形式(ws://, wss://)
- • サブプロトコルの指定
- • 接続オプションとヘッダー
💻 演習
- ▸ 環境別(開発・本番)の接続設定
- ▸ 接続パラメータの動的生成
ブラウザ標準WebSocket API実装
2-3時間ブラウザ標準APIを使った実装方法の習得
📚 学習内容
- • ブラウザ標準WebSocket APIの基本使用法
- • SvelteKitでのクライアント側WebSocket処理
- • Svelteコンポーネントでのリアルタイムデータ表示
- • TypeScriptでの型定義とSvelteでの利用
💻 演習
- ▸ 基本的なWebSocket接続の実装
- ▸ Svelteストア形式のWebSocketクライアント作成
接続失敗と再接続処理
1-2時間堅牢な接続管理と再接続メカニズムの実装
📚 学習内容
- • 接続失敗の種類と原因
- • 指数バックオフによる再接続
- • 接続品質の監視
💻 演習
- ▸ 堅牢な再接続ロジックの実装
- ▸ 接続状態インジケーターの作成