Skip to content

WebSocketのリアルタイム機能をClaudeと実装する

Claude CodeでWebSocketの雛形を一気に生成する

Section titled “Claude CodeでWebSocketの雛形を一気に生成する”

リアルタイム機能の実装は、接続管理・イベント設計・エラーハンドリングと考慮点が多く、ゼロから書き始めると時間がかかります。Claude Codeを使えば、こうしたボイラープレートをプロンプト一発で生成できます。

たとえばターミナルで以下のように入力してみましょう。

claude "Node.js + Socket.ioでチャットサーバーを作って。
接続・切断・メッセージ受信のイベントを実装し、
接続中ユーザー数をブロードキャストする機能も含めて"

するとClaude Codeはserver.jsの全体像を提示してくれます。生成されたコードの一例はこんな感じです。

server.js
const io = require("socket.io")(3000, { cors: { origin: "*" } });
const users = new Set();
io.on("connection", (socket) => {
users.add(socket.id);
io.emit("userCount", users.size);
socket.on("message", (msg) => {
io.emit("message", { id: socket.id, text: msg });
});
socket.on("disconnect", () => {
users.delete(socket.id);
io.emit("userCount", users.size);
});
});

接続管理のロジックまで含めて出力されるので、「動く状態」からスタートできるのが大きなメリットです。

WebSocket: サーバーとブラウザが常時接続を維持し、双方向にリアルタイムでデータを送受信できる通信方式。ボイラープレート: プロジェクトを始めるたびに毎回書く定型的なコードのこと。プロンプト: AIへの指示文。Claude Codeへの指示の質がそのまま出力の質に影響する。

リアルタイムダッシュボードはServer-Sent Eventsで試す

Section titled “リアルタイムダッシュボードはServer-Sent Eventsで試す”

双方向通信が不要な通知やダッシュボードには、WebSocketよりもシンプルなServer-Sent Events(SSE)が向いています。Claudeにその旨を伝えるだけで切り替えてくれます。

claude "株価のモック数値を1秒ごとにサーバーから送信する
SSEエンドポイントをExpressで作って。
クライアント側のEventSourceのコードも一緒に出して"

このように「技術選定の理由ごと」プロンプトに含めると、Claudeが実装だけでなく「なぜSSEを使うのか」もコメントで補足してくれます。後からコードを読み返したときに意図が残るのでチームにも優しい使い方です。

エンドポイント: APIにアクセスするためのURL。例: `/api/users` や `/api/posts/123` など。モック: テスト時に本物の代わりに使う偽のオブジェクトや関数。外部APIや DBへの実際の通信を避けるために使う。

既存コードのデバッグと拡張もClaudeに任せる

Section titled “既存コードのデバッグと拡張もClaudeに任せる”

すでに動いているWebSocketのコードに機能追加したいときも、Claude Codeは役立ちます。既存ファイルをコンテキストに含めながら指示を出せます。

claude --file server.js "このコードに特定のルームへの
参加・退出機能を追加して。socket.joinを使ったルーム管理を実装したい"

「どこを変えたか」の差分を示しながら出力してくれるので、レビューも楽になります。WebSocketのバグ調査でも「接続が切れる再現条件を教えて、コードを見て原因を推測して」と聞けば、競合状態やpingタイムアウトの設定漏れといった典型的な原因を指摘してくれます。

リアルタイム機能は実装の難易度が高いぶん、Claudeとのペアプログラミングで得られる恩恵も大きい領域です。ぜひ積極的に活用してみてください。

コンテキスト: Claudeが一度に記憶・参照できる会話・コードの範囲。上限を超えると古い情報が失われる。