Supabase Realtime Broadcast(スーパーベースリアルタイムブロードキャスト)
2024年Supabase Realtime機能拡充。Postgres Changes+Broadcast+Presence+Database Functions Trigger+Row Level Security統合+Edge Functions連携搭載。
概要
Supabase Realtime Broadcastは2024年Supabaseが大幅機能拡張したRealtime Broadcast仕様で、WebSocket経由のサーバーレスPub/Sub+ Database Changes Streaming+ Presence(在席状況)+ Edge Functions連携の4機能セットでRealtimeアプリ構築の標準解として位置づけ。Supabase(PostgreSQL+Auth+Storage+Edge Functions+Realtimeを一体化したBaaS Platform)の中核機能で、Firebase Firestore Realtime Listener・Pusher Channels・Ably Realtime等の競合に対する差別化要素。2024年9月の機能強化では、Broadcast Throughput 10倍向上+Presence Tracking 効率化+Database Function Trigger 統合+Authorization 細粒度制御等の改善。リアルタイムCollaboration App(Figma/Notion/Linear等)・Live Chat・Multiplayer Game・IoT Dashboard・Live Sports Score等の用途で、Supabase 単独で完結するBackendスタックを構築可能。jisaku.com APIは Hono on Bun + PostgreSQL直接接続採用で Supabase 不採用だが、Realtime機能必要な記事ベース読者向けの重要技術。
主な特徴・仕組み
- Postgres Changes: PostgreSQL CDC(Change Data Capture)経由のRow-level変更通知
- Broadcast Channel: WebSocket Pub/Sub、任意のJSON Payload送受信
- Presence Tracking: 同一Channelに参加するUser一覧+在席状態自動同期
- Row Level Security統合: Supabase Auth+RLS Policy で細粒度Access Control
- Database Function Trigger: PostgreSQL Function から Broadcast送信可能
- Edge Functions連携: Edge Function内から Realtime Channel送信
- WebSocket Multiplex: 単一接続で複数Channel購読、Resource効率
- Throughput 100K+ msgs/sec: Production対応、Scale-out自動
- Replay対応: 一定時間内の過去Message取得、接続切れ復帰時に役立つ
- Multi-region: グローバル分散、低レイテンシ実現
- JavaScript/Dart/Swift Client SDK: 主要プラットフォーム公式SDK提供
スペック比較表
| 項目 | Supabase Realtime | Firebase Firestore Realtime | Pusher Channels | Ably Realtime |
|---|---|---|---|---|
| 実装 | PostgreSQL+WebSocket | Firestore SDK | WebSocket | WebSocket |
| DB CDC | ○ Postgres Changes | × (Firestore直接) | × | × |
| Presence | ○ Native | × (Firebase Presence別) | ○ | ○ |
| Broadcast | ○ JSON Payload | △ Document経由 | ○ Native | ○ Native |
| Edge Function統合 | ○ | ○ Cloud Functions | △ Webhook | △ Webhook |
| Pricing | $0-25/month +Throughput | Pay-per-read/write | $7-99/month | $29-99/month |
| Throughput | 100K+ msgs/sec | High | Medium | High |
| OSS Self-host | ○ Supabase OSS | × Firebase | × | × |
具体例・対応製品
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(URL, ANON_KEY);
// 1. Broadcast Channel
const channel = supabase.channel('chat-room-1');
channel
.on('broadcast', { event: 'message' }, (payload) => {
console.log('New message:', payload);
})
.subscribe();
// Send broadcast
channel.send({
type: 'broadcast',
event: 'message',
payload: { user: 'Alice', text: 'Hello!' }
});
// 2. Postgres Changes
supabase
.channel('table-changes')
.on('postgres_changes',
{ event: 'INSERT', schema: 'public', table: 'messages' },
(payload) => console.log('New row:', payload.new)
)
.subscribe();
// 3. Presence
const presenceChannel = supabase.channel('online-users');
presenceChannel
.on('presence', { event: 'sync' }, () => {
const state = presenceChannel.presenceState();
console.log('Online users:', state);
})
.subscribe(async (status) => {
if (status === 'SUBSCRIBED') {
await presenceChannel.track({ user_id: '123', online_at: new Date() });
}
});
- Supabase Cloud: Pricing $0-25/month、Throughput依存
- Supabase OSS Self-host: Docker compose構成、データ保有完全制御
- Supabase Auth + Realtime: RLS Policy で細粒度Access Control
- Edge Functions + Realtime: Edge内から Broadcast送信、Game Backend等
- 競合機種: Firebase Firestore Realtime、Pusher Channels、Ably Realtime、AWS AppSync、Liveblocks
自作PCでの選び方・注意点
Supabase Realtime BroadcastはWeb/モバイル開発者向けのリアルタイム機能で、jisaku.com の Backend(Hono on Bun + PostgreSQL直接) では採用していないが、リアルタイム機能必要なWebアプリ開発時の選択肢として重要。Supabase Realtime 採用判断基準は、1)PostgreSQL CDCで Database変更通知必要、2)Multi-tenant Realtime+RLS Auth統合、3)Supabase Stack(Auth+DB+Storage+Edge Functions+Realtime)一体化メリット重視、4)OSS Self-host可能性確保。Firebase Firestore Realtime に対する Supabase の優位は、PostgreSQL Native+OSS Self-host可能+Multi-region柔軟+Vendor Lock-in 軽減。Pusher/Ably に対する優位は、PostgreSQL CDC統合+Auth/Storage/Edge Functions統合の Full Backend Solution。一方、Supabase 不採用の判断基準は、1)Supabase Stack 全体のVendor Lock-in 懸念、2)Multi-region で Pricing 不経済、3)Self-host Supabase の運用負荷大。jisaku.com は Hono on Bun + Direct PostgreSQL の独自構成で、Realtime 機能必要な領域は Hono WebSocket(Bun WebSocket Native API) で自前実装可能、Supabase Realtime は不採用。一方、新規プロジェクトや小規模Webアプリは Supabase Stack 採用で開発速度+運用負荷低減のメリット大きい。
関連用語との違い
Firebase Firestore Realtimeとの違い: Firestore は NoSQL Document DB ベース、Supabase Realtime は PostgreSQL Native+CDC。Firestore は Vendor Lock-in 強+Pay-per-read/write、Supabase は OSS Self-host可能+Subscription Pricing。jisaku.com 等のSQL重視プロジェクトには Supabase 適合。 Pusher Channels/Ably Realtimeとの違い: Pusher/Ably は WebSocket Pub/Sub 専用 SaaS、Supabase Realtime は PostgreSQL CDC+Pub/Sub+Presence の3機能セット。Pure Pub/Sub なら Pusher/Ably の方がシンプル+専門特化、Database統合 Realtime なら Supabase。
よくある質問(FAQ)
Q1: Hono on Bun + Direct PostgreSQL から Supabase に移行すべき? A: 通常は推奨しない。jisaku.com の独自構成は Hono Latency最適化+Bun Native性能+Vendor Lock-in 回避でメリット大。Supabase 移行で開発速度向上はあるが、Vendor Lock-in+Pricing+Self-host 運用考慮で総合判断。新規プロジェクトは Supabase 検討価値あり。
Q2: Postgres ChangesとBroadcastどちらを使う? A: DB変更を Trigger に Realtime通知 → Postgres Changes(CDC経由)、任意のメッセージ Pub/Sub → Broadcast。両者組合せ可能、Game LobbyのChat → Broadcast、ScoreboardのDB更新 → Postgres Changesが典型例。
Q3: Throughput Limits は? A: Supabase Cloud Default 100 messages/sec/Channel、最大 100K+ messages/sec/Project(Pricing次第)。Production規模なら適切なPricing Tier選択+Channel Sharding(Channel単位で負荷分散)推奨。
まとめ
- Supabase Realtime Broadcast = 2024年機能強化リアルタイムスタック
- Postgres Changes(CDC)+Broadcast+Presence+Edge Functions連携
- Row Level Security統合+Multi-region+OSS Self-host可能
- Firebase Firestore Realtime/Pusher/Ably代替候補
- jisaku.com 不採用、新規Realtime Webアプリの主力選択肢