Convexは『TSコードがバックエンド』という設計思想
Convexは2022年にローンチしたサーバレスバックエンドで、FirebaseやSupabaseと違い、データベーススキーマ・関数・リアルタイム同期・認証・ファイルストレージ・Cronをすべて『TypeScriptコード』で書ける点が最大の特徴です。SQL/NoSQLでスキーマを分けて管理する必要がなく、フロントのコードと同じリポジトリ・同じ言語・同じ型で完結します。AI/SaaSプロトタイピングで急速にシェアを伸ばしています。
Convex採用を検討すべき5つのシグナル
- SupabaseのRow Level Security設計に疲れた
- Firebaseのドキュメント指向設計が型安全と相性が悪い
- リアルタイム同期(チャット・コラボツール)が必須要件
- 0→1のプロトタイピング速度を最大化したい
- バックエンドエンジニアが薄いチームでTS統合で済ませたい
Firebase/Supabase/Convex比較
Firebase: NoSQL(Firestore)・リアルタイム強い・Googleエコシステム。型安全性は弱め。
Supabase: PostgreSQL・SQL慣れた開発者向け・OSS。RLS設計の学習曲線あり。
Convex: TS統合・関数とDBが同一コード・リアルタイム自動・型完全。エコシステムは小さめ。
Convex実装の基本パターン
(1) スキーマ定義: convex/schema.tsにdefineSchema({ users: defineTable({ name: v.string() }) })のように記述
(2) Query/Mutation: query(async (ctx) => await ctx.db.query('users').collect())のように関数として定義
(3) リアルタイム購読: フロントのuseQueryで自動的にライブ更新
(4) Cron/スケジューラ: crons.tsで宣言的に定義
(5) 認証: Clerk/Auth.js等と統合、ctx.auth.getUserIdentity()で取得
料金感(実務目安)
- Free: 月100万ドキュメント書き込み・1GB容量。プロトタイプ十分
- Pro: $25/月で1000万ドキュメント書き込み・10GB
- Team/Enterprise: 大規模利用向け。Stripe/SaaS的な体系
本番採用の判断基準
(1) データ規模: 数百万行を超える大規模データはまだ実績少なめ。
(2) SQL/分析要件: Convexは関数指向で、複雑な集計クエリには不向き。BigQuery等への外出しが必要。
(3) ベンダーロックイン: 完全マネージドゆえに移行コストは高い。
(4) エコシステム: ConvexはまだPostgres周辺ほどの周辺ツール充実度ではない。
(5) 速度メリット: 開発速度は突出して速いが、運用フェーズの判断は別途。
実務で詰まる3つの落とし穴
- 長時間処理: Mutationは10秒超でタイムアウト。重い処理はAction関数に分離
- トランザクション境界: Mutation内は自動でトランザクション化。外部API呼び出しはActionで処理
- インデックス設計:
.index('by_user', ['userId'])を明示しないと大規模クエリが遅延
30日学習プラン
- 1週目:
npm create convexでひな形作成。CRUDアプリを書く - 2週目: スキーマ・インデックス・リレーション設計を試す
- 3週目: Clerk認証統合・ファイルアップロード機能を実装
- 4週目: Cron/外部API連携を実装・本番モニタリングを設定
関連リンク
BaaS選定は BaaS選び方、Firebase実装は Firebase実践、Supabaseとの比較は Supabase深掘り を参照してください。Next.jsと組み合わせる場合は Next.js深掘り もどうぞ。