
こんな人に向けた記事です
- 個人開発でアプリを作っていて、バックエンド構成に迷っている
- 「Turso のような DB」と「Convex」、何が違うのか具体的に知りたい
筆者はどちらの構成でもいくつかアプリを作ってきました。その経験から、両者を素直に比較してみます。
結論を先に
- とにかく安く抑えたい → Turso
- 多少お金をかけても、開発をラクにしたい → Convex
どちらも無料枠は個人開発の多くをカバーするので、小規模なうちはどちらも実質タダで動かせます。差が出るのは無料枠を超えてから:
- Turso … 安い固定プラン(Developer 月$5前後)があり、料金が読みやすい。純粋に DB だけなので予測しやすい一方、サーバー関数や API は自分で用意・ホストする前提(その分の費用・手間は別)。
- Convex … 無料を超えても $0 ベースの従量課金(使った分だけ)で始められます。チームや本格運用向けの Professional は月$25(開発者1人あたり) で、ここは人数ぶん積み上がる点に注意。DB・関数・リアルタイムをまるごと込みなのが特徴で、料金は「自作を減らせる時間」を買うイメージ。
要するに、料金の安さ・読みやすさ(特にチーム人数が増えたとき)なら Turso、多少払っても開発スピードと一体感を取るなら Convex、という選び方になります。
まず、何を比べているのか
両者は役割の範囲が違います。
| 部品 | 役割 |
|---|---|
| Turso | データの置き場所(SQLite/libSQL)。DB そのもの |
| Convex | DB + サーバー関数 + リアルタイム同期(バックエンド一式) |
Turso = DB(関数・クエリ層・リアルタイムは自作) Convex = DB + 関数 + リアルタイム(標準装備)
Turso にはサーバー関数がないので、API やクエリ層は自分で用意します。これは難しくありませんが、その自作する部分が Convex では最初から用意されている、というのが両者の主な違いです。
比較表
| 観点 | Turso | Convex |
|---|---|---|
| データの置き場所 | Turso(SQLite/libSQL) | Convex |
| サーバー関数 | 自作(Route Handlers / Server Actions) | 標準装備(TS関数を書くだけ) |
| クエリ層 | 自前で用意(Drizzle / 生SQL) | 組み込み |
| リアルタイム同期 | 自前実装が必要 | 標準・自動 |
| 型安全(DB→フロント) | 設定すれば可 | 自動で貫通 |
| SQL の知識 | 必要 | 不要 |
| 無料枠 | 読取5億行・書込1000万行・5GB | 関数100万回・0.5GB |
| 料金の出発点 | 無料 → 月$5前後の固定プラン | 無料 → $0 ベースの従量課金 |
| 上位プラン | Scaler 月$25前後 ほか | Professional 月$25/開発者 |
| 日本リージョン | あり(東京 / AWS ap-northeast-1) | なし(US East・EU West) |
※課金単位が違うため、無料枠の数字は単純比較できません。Turso は DB 使用量、Convex はバックエンド全体の利用量を見るイメージです。
コードで見る違い
データを一覧表示するまで
Turso(DB + 自作の API + フロントの取得)
// 1) スキーマ(Drizzle)
export const items = sqliteTable("items", {
id: integer("id").primaryKey(),
name: text("name"),
});
// 2) API を用意する(app/api/items/route.ts)
export async function GET() {
const rows = await db.select().from(items);
return Response.json(rows);
}
// 3) フロントで取得(更新は再フェッチ or SWR を自分で) const res = await fetch("/api/items"); const list = await res.json();
Convex(スキーマ → 関数 → フロント)
// 1) スキーマ(convex/schema.ts)
export default defineSchema({
items: defineTable({ name: v.string() }),
});
// 2) クエリ関数(convex/items.ts)— これがそのまま API になる
export const list = query({
handler: (ctx) => ctx.db.query("items").collect(),
});
// 3) フロント — useQuery するだけで自動リアルタイム購読 const list = useQuery(api.items.list);
違いが出るのは 3) のフロント。Turso 構成では「更新があったら再取得」を自分で書きますが、Convex は useQuery するだけでデータが変わると画面が自動で更新されます。
認証はどうする?
ここは Turso と Convex で事情が違います。
- Turso は認証機能を持たないので、Clerk などの外部サービスなど、別途用意する必要があります。
- Convex は2通り。公式の Convex Auth で Convex 内に認証を内包する手もあれば、Clerk などの外部サービスを使う手もあります。
「全部 Convex で完結させたい」なら Convex Auth は魅力的な選択肢です。ただし現状は beta で、筆者が試した範囲ではうまく動かないケースもありました。なので安定を優先するなら今は Clerk が無難。Convex Auth がうまく動く構成なら、そちらで完結させて全く問題ないと思います。
なお Clerk は 50,000 MAU まで無料なので、個人開発の規模ならまず費用はかかりません。
リージョン・体感速度の話
地理的な近さ(リージョン)も気になるポイントです。
- Turso … 東京リージョン(AWS ap-northeast-1)に対応。日本向けサービスでは、DB を物理的に近い場所に置けるのが強みです。一方で、旧来の Data Edge / Edge Replicas や Embedded Replicas には deprecated / legacy 扱いのものもあるため、新規構成では Turso Sync など最新の推奨構成を公式ドキュメントで確認した方がよいです。
- Convex … 現時点のリージョンは US East(バージニア)と EU West(アイルランド)のみで、日本リージョンはありません。
地図の上では「日本リージョンのある Turso が有利」に見えます。実際、日本ユーザー向けに DB との距離を近づけたい場合、Turso には東京リージョンを選べる明確な利点があります。
ただ、筆者の体感ではむしろ Convex の方が速く感じました。日本リージョンが無いのに、です。理由はいくつか考えられます。
- Convex はクエリをサーバー側でまとめて実行し、結果だけを返します。複数レコードを触る処理でも往復は基本1回。一方、自前の API + Turso だと、ハンドラ内で何度も DB に問い合わせる設計(往復の積み重ね)になりがちで、そこで遅くなることがあります。
- Convex は常時接続(WebSocket)+サーバー側のクエリ結果キャッシュで、2回目以降の読み取りや更新の反映が速い。毎回ハンドシェイクから始まる REST 的な呼び出しとは体感が変わります。
- 逆に Turso の速さは「どこに DB を置き、どこでアプリを動かすか」に左右されます。DB を東京に置いても、アプリのサーバー関数が US で動いていれば往復が増えます。DB のリージョン、アプリの実行環境、API 設計を近づけて初めて地の利が出ます。 つまり「日本リージョンがある=速い」は構成次第。物理的にデータを日本へ置きたいなら Turso に明確な手段がありますが、アプリ全体の体感速度はリージョンだけで決まらず、設計やアーキテクチャの影響が大きい、というのが正直なところです。
(このあたりは筆者の体感ベースなので、本気で詰めるなら自分のユースケースで計測するのが確実です。)
向き・不向き
Turso が向く人
- SQL を書きたい/活かしたい
- 構成を自分でコントロールしたい
- 東京リージョンやローカル同期など、配置・同期構成を自分で考えたい
Convex が向く人
- API・クエリ層・リアルタイムの自作を減らしたい
- リアルタイム更新が欲しい
- 速く形にしたい
まとめ
Turso は、DB の手軽さと SQL の自由度が魅力で、構成を自分で握りたい人に向きます。Convex は、関数・クエリ層・リアルタイムが最初から揃っているぶん、書く量が減って開発が速くなります。認証まで含めて1つで完結できる可能性があるのも Convex の利点です(現状 Convex Auth は beta なので、安定を取るなら Clerk との組み合わせが無難)。
コスト面では、Turso が月$5前後の安い固定プランを持つのに対し、Convex は $0 から使った分だけの従量課金で始められます(チーム向けの Professional は開発者1人あたり月$25)。人数が増えると Convex は積み上がりやすいので、料金の安さ・読みやすさでは Turso に分があります。
どちらも個人開発で十分使える構成です。「自分で組みたいか/任せたいか」「コストをどこまで抑えたいか」で選ぶのがシンプルだと思います。
まずは触ってみるなら:
Convex から触るなら: npm create convex@latest Turso から触るなら: Turso CLI + @libsql/client / Drizzle
※ 料金・無料枠は2026年6月時点の情報です。最新の値は各サービスの公式ページで確認してください。 Convex: https://www.convex.dev/pricing / Turso: https://turso.tech/pricing / Clerk: https://clerk.com/pricing