Services (マイクロサービス)
services/ ディレクトリには、ビジネスロジックを実装するバックエンドマイクロサービスが含まれます。全サービスは Hono フレームワーク上に構築され、WorkerEntrypoint を継承して Native RPC メソッドを公開します。
| カテゴリ | 技術 | バージョン |
|---|---|---|
| フレームワーク | Hono | 4.11.7 |
| バリデーション | Zod + @hono/zod-validator | 4.3.6 / 0.7.6 |
| ORM | Drizzle ORM v1.0 beta | 1.0.0-beta.12 |
| ランタイム | Cloudflare Workers | compatibility_date: 2025-11-25 |
| ビルド | Vite | 6.4.1 |
| テスト | Vitest | 4.0.17 |
| CLI | Wrangler | 4.60.0 |
- workers_dev:
false(全サービス)— カスタムドメインを持たず、Service Binding 経由でのみアクセス - Observability: ログ・トレース 100% サンプリング
- リージョン:
aws:ap-northeast-1(東京) - Node.js 互換:
nodejs_compatフラグ有効
Fizz(チャット・配信エンジン)
Section titled “Fizz(チャット・配信エンジン)”リアルタイムチャットと一括配信を担当する中核サービスです。
| 項目 | 内容 |
|---|---|
| パス | services/fizz |
| カスタムドメイン | fizz.plfumg.com |
| Cron トリガー | 0 * * * *(毎時) |
バインディング
Section titled “バインディング”| 種別 | バインディング名 | 接続先 | 用途 |
|---|---|---|---|
| Service | VINTAGE | Vintage | グループ情報取得 |
| Hyperdrive | CELLAR_HYPERDRIVE | 業務 DB | チャット・配信データ |
| Hyperdrive | PROOF_HYPERDRIVE | 認証 DB | ユーザー情報参照 |
| Durable Object | USER_INBOX | UserInbox | ユーザー WebSocket 管理 |
| Durable Object | STORE_ONLINE_USERS | StoreOnlineUsers | オンラインユーザー管理 |
| Queue (Producer) | BROADCAST_QUEUE | broadcast-queue | 一括配信メッセージ |
| Queue (Producer) | NOTIFICATION_QUEUE | notification-queue | 通知リクエスト |
| Queue (Consumer) | broadcast-queue | — | batch: 100, timeout: 30s, DLQ: broadcast-dlq |
| R2 | CHAT_FILES | speakeasy-chat-files | 添付ファイル保存 |
Durable Objects
Section titled “Durable Objects”| クラス | 役割 | 詳細 |
|---|---|---|
UserInbox | WebSocket 接続管理 | ユーザーごとの接続を管理し、メッセージ・通知をリアルタイム配信 |
StoreOnlineUsers | オンライン状態管理 | 店舗ごとのオンラインユーザーを追跡、在席状態をブロードキャスト |
主な RPC メソッド
Section titled “主な RPC メソッド”- チャットルーム管理(一覧・作成・状態管理)
- メッセージ送受信・検索
- 既読管理
- 添付ファイルアップロード
- 一括配信(作成・実行・キャンセル)
- WebSocket 接続・通知
- オンライン状態管理
Cron 処理
Section titled “Cron 処理”毎時実行で、SCHEDULED 状態の一括配信を QUEUED に移行します(配信時刻の8時間前から)。
詳細は Fizz RPC メソッド を参照してください。
Vintage(連絡先管理)
Section titled “Vintage(連絡先管理)”顧客の連絡先データとグループ・ラベルを管理するサービスです。
| 項目 | 内容 |
|---|---|
| パス | services/vintage |
| カスタムドメイン | なし(Service Binding のみ) |
バインディング
Section titled “バインディング”| 種別 | バインディング名 | 接続先 | 用途 |
|---|---|---|---|
| Service | FIZZ | Fizz | WebSocket 通知(連絡先変更の通知) |
| Hyperdrive | CELLAR_HYPERDRIVE | 業務 DB | 連絡先・グループデータ |
| Hyperdrive | PROOF_HYPERDRIVE | 認証 DB | ユーザー情報参照 |
| KV | CONTACT_GROUPS | — | グループ定義のキャッシュ |
| Analytics Engine | ANALYTICS | speakeasy_db_operations | DB オペレーション追跡 |
追加依存関係
Section titled “追加依存関係”- capnweb (0.4.0) — Vintage 固有のユーティリティ
主な RPC メソッド
Section titled “主な RPC メソッド”- 連絡先 CRUD(作成・取得・更新・削除)
- 連絡先検索・フィルタリング(ページネーション対応)
- グループ管理(作成・更新・メンバー管理)
- ラベル管理(作成・削除・一括付与)
- チャットNG 管理(ブラックリスト)
- ドメインブラックリスト管理
- purelovers 連携データ同期
詳細は Vintage RPC メソッド を参照してください。
Proof(認証サービス)
Section titled “Proof(認証サービス)”better-auth ベースの認証・セッション管理サービスです。
| 項目 | 内容 |
|---|---|
| パス | services/proof |
| カスタムドメイン | なし(Service Binding のみ) |
| compatibility_date | 2025-01-06 |
バインディング
Section titled “バインディング”| 種別 | バインディング名 | 接続先 | 用途 |
|---|---|---|---|
| Hyperdrive | VAULT_HYPERDRIVE | 認証 DB | ユーザー・セッション・組織 |
| KV | SESSION_STORAGE | — | セッションの KV 二次キャッシュ |
認証プラグイン
Section titled “認証プラグイン”plugins: [ admin(), // 管理者機能 organization({ ac, roles: { owner, admin, member, staff } }), // 組織管理 passkey({ rpID: rootDomain }), // WebAuthn パスキー bearer(), // Bearer トークン認証 anonymous() // 匿名認証];主な RPC メソッド
Section titled “主な RPC メソッド”- セッション管理(取得・検証・無効化)
- ユーザー管理(一覧・作成・更新・削除)
- 組織管理(作成・メンバー管理・ロール管理)
- API キー・パスキー管理
- 代理認証(impersonation)
- OAuth アプリケーション管理
詳細は Proof RPC メソッド を参照してください。
Bell(通知配信サービス)
Section titled “Bell(通知配信サービス)”マルチチャネル通知(Web Push・LINE・メール)の配信を担当するサービスです。
| 項目 | 内容 |
|---|---|
| パス | services/bell |
| カスタムドメイン | なし(Service Binding のみ) |
| Cron トリガー | 0 * * * *(毎時) |
バインディング
Section titled “バインディング”| 種別 | バインディング名 | 接続先 | 用途 |
|---|---|---|---|
| Hyperdrive | CELLAR_HYPERDRIVE | 業務 DB | 通知設定・PUSH サブスクリプション |
| Hyperdrive | VAULT_HYPERDRIVE | 認証 DB | ユーザー情報参照 |
| Queue (Producer) | PUSH_QUEUE | push-notifications | PUSH 通知送信 |
| Queue (Producer) | NOTIFICATION_QUEUE | notification-queue | マルチチャネル通知 |
| Queue (Consumer) | push-notifications | — | batch: 10, timeout: 1s, retries: 3, DLQ: push-notifications-dlq |
| Queue (Consumer) | notification-queue | — | batch: 10, timeout: 1s, retries: 3 |
通知チャネル
Section titled “通知チャネル”| チャネル | 技術 | 用途 |
|---|---|---|
| Web Push | VAPID (web-push 3.6.7) | ブラウザプッシュ通知 |
| LINE | LINE Bot SDK (@line/bot-sdk 10.6.0) | LINE メッセージ送信 |
| Resend | メール通知 | |
| BOX | アプリ内通知 | UserInbox 経由の通知 |
主な RPC メソッド
Section titled “主な RPC メソッド”- 通知設定管理(店舗・顧客)
- PUSH サブスクリプション管理
- 通知送信(マルチチャネル)
- メール送信
- スケジュール通知処理
Cron 処理
Section titled “Cron 処理”毎時実行で、スケジュール済みプッシュ通知を処理します。
詳細は Bell RPC メソッド を参照してください。
Base(組織・アカウント基盤)
Section titled “Base(組織・アカウント基盤)”組織・店舗・アカウントの管理を担当する基盤サービスです。
| 項目 | 内容 |
|---|---|
| パス | services/base |
| カスタムドメイン | なし(Service Binding のみ) |
バインディング
Section titled “バインディング”| 種別 | バインディング名 | 接続先 | 用途 |
|---|---|---|---|
| Service | PROOF | Proof | ユーザー・セッション管理 |
| Service | BELL | Bell | 通知送信 |
| Hyperdrive | CELLAR_HYPERDRIVE | 業務 DB | 店舗・組織データ |
| Hyperdrive | PROOF_HYPERDRIVE | 認証 DB | ユーザー情報参照 |
追加依存関係
Section titled “追加依存関係”- @line/bot-sdk (10.6.0) — LINE Bot 管理
- @speakeasy/purelovers-client — purelovers 外部連携
主な RPC メソッド
Section titled “主な RPC メソッド”- 組織管理(一覧・作成・更新)
- 店舗管理(一覧・作成・設定変更)
- アカウント管理(一覧・招待・ロール変更)
- LINE 公式アカウント連携
- purelovers 連携設定
- 店舗移管
詳細は Base RPC メソッド を参照してください。
サービス間の依存関係
Section titled “サービス間の依存関係”依存関係の説明
Section titled “依存関係の説明”| 呼び出し元 | 呼び出し先 | 主な用途 |
|---|---|---|
| Fizz | Vintage | グループメンバーの取得(配信ターゲット算出) |
| Vintage | Fizz | WebSocket 経由のリアルタイム通知(連絡先変更通知) |
| Base | Proof | ユーザー・セッション管理の委譲 |
| Base | Bell | 管理操作に伴う通知送信 |
Queue アーキテクチャ
Section titled “Queue アーキテクチャ”詳細はインフラストラクチャを参照してください。