TENJIN — エッジ対応クラウドPOS
TENJIN — Edge-first Cloud POS
店舗側タブレットをローカルCRDTストアとして動作させ、クラウドとはイベント同期する「エッジファースト」POS。ネットワーク断絶時でも注文受付・会計を継続でき、復帰時に自動でマージする。
ライブデモ
実際のアプリケーション画面のプレビュー
テーブル 5 - 注文
4名様枝豆
@¥380
唐揚げ
@¥580
刺身盛り合わせ
@¥1,280
生ビール (中)
@¥520
焼き鳥盛り (5本)
@¥780
キッチンディスプレイ
唐揚げ x2
枝豆 x1
刺身盛り x1
サーモン南蛮 x1
焼き鳥盛り x2
厚焼き玉子 x1
冷奴 x2
唐揚げ x1
課題
クラウド依存のPOSは店舗Wi-Fiが不安定な時間帯に業務停止を引き起こす。一方でローカル専用POSは複数店舗の売上集計や在庫連携に弱く、スケールできない。両者を両立するにはデータモデルと同期戦略を根本から設計し直す必要があった。
ソリューション
注文と会計を Yjs ベースのCRDTドキュメントとして表現し、端末ローカルのIndexedDBに永続化。バックグラウンドで Cloudflare Durable Objects に差分をプッシュし、クラウド側でイベントをマテリアライズしてレポートDBに反映する。決済はオフライン時のみローカル保留キューに積み、オンライン復帰時にStripe Terminalへ再送。
成果
- ネットワーク断絶テスト (最大90分) でも注文受付を継続
- クラウド同期ラグ中央値 280ms
- 端末間マージコンフリクトをCRDTで自動解決、手動介入 0件
- 月次売上レポートを従来の手動集計から自動生成へ移行
Measured Impact
同期ラグ中央値
280ms
オフライン稼働時間
90分+
手動マージ
0件
P95応答時間
65ms
What it does
オフライン体験
完全オフライン注文
ネットワーク断絶時も全機能が動作し、復帰時にCRDTで自動マージ。
決済キューイング
オフライン時の決済を暗号化ローカルキューに積み、オンライン復帰で自動再送。
運用
キッチンディスプレイ連携
注文がキッチンディスプレイにリアルタイム同期し、ステータスも双方向更新。
シフト別売上
ランチ/ディナーなどシフト単位で自動集計。
マルチ店舗
横断ダッシュボード
店舗横断の売上・客単価・商品別分析をリアルタイム表示。
メニュー中央管理
メニュー変更を本部から全店舗へ配信し、オフライン端末にも後追い反映。
System Layers
Layered architecture showing components, responsibilities, and data flow.
Layer
端末
タブレットでオフライン完結する注文・会計UI。Service Workerで完全オフライン起動可能。
Layer
エッジ同期
店舗ごとにDurable Objectインスタンスを生成し、CRDT差分をリアルタイム配信。
Layer
永続化
マテリアライズドビューはD1、レシート画像やレポートはR2に保管。
Layer
決済
オンライン時は即時処理、オフライン時は暗号化キューに保留し再送。
Layer
分析
店舗横断の売上・客単価・商品別人気をClickHouseで集計。
How we built it
Discovery
飲食店の典型的なピークタイム業務をタイムラインで観察し、UIの制約を抽出。
Deliverables
- ユーザージャーニー
- UI制約ドキュメント
CRDTモデリング
注文の順序付け・会計分割・返金を表現するYjsドキュメント構造を設計。
Deliverables
- CRDTスキーマ
- マージテストケース
同期アーキテクチャ
Durable Objects vs 自前サーバ vs Liveblocksの比較検証を実施。
Deliverables
- ADR (同期)
- レイテンシ計測結果
Implementation
PWAシェル、CRDTストア、エッジ同期層を並行実装。
Deliverables
- PWA
- Workerサービス
- 管理画面
Offline QA
Playwright + ネットワーク制約シミュレーションで90分オフラインシナリオを検証。
Deliverables
- 自動テストスイート
パイロット準備
実機タブレット上での熱負荷テストと電源遮断テストを実施。
Deliverables
- 耐久テストレポート
Iteration
ベータ店舗からのUX改善点を週次で反映。
Deliverables
- UX改善ログ
Delivery Timeline
- P0Done2026-03-06
CRDTデータモデル
注文・商品・会計のYjsスキーマと競合ポリシを設計。
- P1Done2026-03-22
端末アプリ
PWA + IndexedDBによる完全オフライン動作する注文UIを実装。
- P2In Progress2026-04-18
Cloudflare同期層
Durable ObjectsベースのテナントごとのCRDTルームを実装中。
- P3Planned2026-05
決済とKDS統合
Stripe Terminalとキッチンディスプレイシステムの連携を予定。
- P4Planned2026-06
限定店舗でのベータ
協力店舗1店でのクローズドベータ運用を予定。
Who built it
Roles
- フルスタック/PWA
- エッジ/バックエンド
Tools & Platforms
Frontend
Infrastructure
Other