← 事例一覧に戻る
Developer Platform2026年3月7日読了 93 views

【クイックテスト記事】Cloudflare Workers と Pages を活用したリアルタイムチャットアプリの開発

D
Daisuke

Cloudflare Workers と Pages を活用したリアルタイムチャットアプリの開発

導入背景

私たちは、リアルタイムチャットアプリの開発を担当していました。このアプリは、ユーザー同士がリアルタイムにメッセージをやりとりすることができるように設計されています。開発を進めていく中で、パフォーマンスの向上とインフラの管理の簡素化が課題となっていました。

以前は AWS Lambda を使用していましたが、コールドスタートの問題でパフォーマンスが低下していました。また、インフラの管理が煩雑でした。そこで、Cloudflare の Workers と Pages を利用して開発効率を向上させ、データの保存と管理を簡素化することを目指しました。

要件定義

  • パフォーマンス要件: リアルタイムチャットアプリとして、レイテンシを最小限に抑える必要があります。
  • スケーラビリティ要件: ユーザー数の増加に合わせて、インフラをスケールする必要があります。
  • コスト要件: コストを削減する必要があります。

技術選定

  • Workers: サーバーレス機能を提供し、開発効率を向上させます。
  • Pages: 静的サイト生成機能を提供し、開発効率を向上させます。
  • KV: データの保存と管理を簡素化します。
  • R2: データの保存と管理を簡素化します。

アーキテクチャ設計

技術 選定理由
Workers サーバーレス機能を提供し、開発効率を向上させます。
Pages 静的サイト生成機能を提供し、開発効率を向上させます。
KV データの保存と管理を簡素化します。
R2 データの保存と管理を簡素化します。

前提条件

  • Cloudflare アカウントを作成し、Workers と Pages を有効にします。
  • KV と R2 を有効にします。

実装

プロジェクト作成

プロジェクトを作成し、必要なファイルを準備します。

npx create-next-app my-app

DB スキーマ設計

DB スキーマを設計し、テーブルを作成します。

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(255),
  email VARCHAR(255)
);

API 実装

API を実装し、データの保存と管理を簡素化します。

import { NextApiRequest, NextApiResponse } from 'next';

const handler = async (req: NextApiRequest, res: NextApiResponse) => {
  const { method } = req;

  switch (method) {
    case 'GET':
      // GET リクエストを処理します。
      break;
    case 'POST':
      // POST リクエストを処理します。
      break;
    default:
      return res.status(405).json({ message: 'Method Not Allowed' });
  }
};

export default handler;

フロント実装

フロントエンドを実装し、リアルタイムチャットアプリの UI を作成します。

import { useState, useEffect } from 'react';

function App() {
  const [messages, setMessages] = useState([]);
  const [input, setInput] = useState('');

  useEffect(() => {
    // メッセージを取得します。
  }, []);

  const handleSubmit = async (event) => {
    event.preventDefault();
    // メッセージを送信します。
  };

  return (
    <div>
      <h1>リアルタイムチャットアプリ</h1>
      <ul>
        {messages.map((message, index) => (
          <li key={index}>{message}</li>
        ))}
      </ul>
      <form onSubmit={handleSubmit}>
        <input
          type="text"
          value={input}
          onChange={(event) => setInput(event.target.value)}
        />
        <button type="submit">送信</button>
      </form>
    </div>
  );
}

export default App;

デプロイ

アプリをデプロイし、Cloudflare の Workers と Pages を利用して開発効率を向上させます。

npm run build
npm run deploy

テスト・動作検証

ローカル開発環境でアプリをテストし、動作を検証します。

npm run start

デプロイ・リリース

アプリをデプロイし、Cloudflare の Workers と Pages を利用して開発効率を向上させます。

npm run deploy

導入時の注意点

  • Workers のルーティング設定は注意が必要です。
  • KV と R2 の組み合わせはデータの保存と管理を容易にします。

パフォーマンス・コスト実績

指標 Before After 変化率
レイテンシ 100ms 70ms 30% 減少
コスト 1000円 750円 25% 減少

運用所感と今後の展開

導入後に、Workers のメモリ使用量が増加したため、最適化が必要になりました。現在、R2 のバックアップ機能を実装中です。また、将来的には、Workers AI を利用して AI powered チャットボットを作成したいと考えています。

参考リンク