Claude Codeで非同期ジョブパターンを設計する:長時間処理の非同期化・ポーリング・Webhook通知
はじめに 「PDF生成処理が30秒かかってタイムアウトする」「レポート生成中にユーザーが待ちきれず何度もボタンを押す」——長時間処理を非同期ジョブとして切り出し、ポーリングまたはWebhookで完了を通知する設計をClaude Codeに生成させる。 CLAUDE.mdに非同期ジョブパターン設計ルールを書く ## 非同期ジョブパターン設計ルール ### ジョブ登録 - 長時間処理(>2...

Source: DEV Community
はじめに 「PDF生成処理が30秒かかってタイムアウトする」「レポート生成中にユーザーが待ちきれず何度もボタンを押す」——長時間処理を非同期ジョブとして切り出し、ポーリングまたはWebhookで完了を通知する設計をClaude Codeに生成させる。 CLAUDE.mdに非同期ジョブパターン設計ルールを書く ## 非同期ジョブパターン設計ルール ### ジョブ登録 - 長時間処理(>2秒)は非同期ジョブに変換 - 即座にジョブIDを返す(202 Accepted) - ジョブIDでステータスをポーリング可能 ### ステータス管理 - PENDING → RUNNING → COMPLETED / FAILED - 実行中は進捗率(0-100%)も提供 - 失敗時はエラー詳細を記録 ### 通知 - ポーリング: GET /jobs/{id} でステータス確認 - Webhook: 完了時にクライアントのURLにPOST - SSE: クライアントが接続中はリアルタイムでプッシュ 非同期ジョブ実装の生成 非同期ジョブシステムを設計してください。 要件: - ジョブキューとワーカー - ステータスポーリングAPI - Webhook通知 - 進捗追跡 生成ファイル: src/jobs/ 生成される非同期ジョブ実装 // src/jobs/jobManager.ts — ジョブ管理 export type JobStatus = 'pending' | 'running' | 'completed' | 'failed'; export interface Job<TInput = unknown, TOutput = unknown> { id: string; type: string; status: JobStatus; input: TInput; output?: TOutput; progress: number; // 0-100 errorMessage?: string; createdAt: Date; startedAt?: Date; completedAt?: Date; webhookUrl?: string; // 完了時の通知先 } export class JobManager { // ジョブを登録(即座にIDを返