ノーコード ラボ

NoCode 関連のツールの紹介、使い方などをやさしく説明しています。

Turso と Convex を比べてみる — 個人開発で選ぶならどっち?

こんな人に向けた記事です

  • 個人開発でアプリを作っていて、バックエンド構成に迷っている
  • 「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