なぜTursoか
データベース選定の考察
2025年12月21日
前提:この選定基準は1人でClaude Codeを使って開発する場合のものです。チーム開発や異なる開発スタイルでは、最適な選択が変わる可能性があります。
結論
D1でエラー連発して嫌になった。Tursoに変えたら全て解決した。最初からTursoにしておけばよかった。
私がデータベースに求めたもの
データベースを選ぶ時、私が重視したのはシンプルに3つだけです:
1. 無料であること
個人開発で毎月お金を払うのは嫌だ
2. 商業利用OK
将来お金を稼ぎたくなった時に困りたくない
3. エラーが出ない
Claude Codeと開発する時にエラーで止まりたくない
私が試したデータベース
最初に試したのがSupabaseでした。PostgreSQLベースで機能も豊富、UIも綺麗で「これだ!」と思いました。
良かった点
- • 管理画面が使いやすい
- • 認証機能が組み込まれている
- • リアルタイム機能がある
- • ドキュメントが充実
なぜ却下したか
1週間でスリープ。無料プランは1週間使わないとデータベースがスリープ状態になります。個人開発で毎週ログインするなんて現実的じゃない。作ったアプリを放置できないのは致命的でした。
Googleのサービスだし安心かな、と思って調べました。
良かった点
- • Googleの安定したインフラ
- • 無料枠が結構ある
- • スマホアプリ開発者に人気
なぜ却下したか
Googleは複雑すぎる。サービスの数が多すぎて、どれを使えばいいかわからない。Firestore? Realtime Database? どっち?しかもNoSQLなのでSQLが使えない。シンプルさを求める私には合いませんでした。
サーバーレスPostgreSQLとして注目されているサービス。
良かった点
- • PostgreSQLがそのまま使える
- • ブランチ機能がある
- • スリープしない
なぜ選ばなかったか
無料枠の容量が少ない。512MBは本格的なアプリには不十分。将来的にデータが増えた時に困りそうでした。悪くはないけど、決め手に欠けました。
JAMStackで絞り込んだ結果
SvelteKitを選んでCloudflare Pagesにデプロイすると決めた時点で、選択肢が一気に絞られました。エッジで動くデータベースは実質2つだけ:
Cloudflare D1
Cloudflare純正のSQLiteベースDB
Turso
libSQLベースの分散DB
Cloudflare D1での地獄
最初は「Cloudflareで統一できるし、D1でいいじゃん」と思ってD1を使い始めました。これが間違いでした。
問題1:99列の制限
D1はテーブルに99列までしか作れません。「そんなに列使わないでしょ」と思うかもしれませんが、複雑なアプリを作ると意外とすぐ到達します。途中でスキーマを変更する羽目になって大変でした。
問題2:ローカル開発が地獄
wrangler dev で動かそうとすると、エラーが連発。Claude Codeと一緒に開発していても、D1関連のエラーで何度も止まりました。「接続できない」「バインディングが見つからない」「マイグレーションが失敗」...毎回違うエラーが出て、本当にストレスでした。
問題3:ドキュメントがわかりにくい
まだ新しいサービスなので、ドキュメントが整備されていない部分が多い。エラーが出てもググっても解決策が見つからないことが多かったです。
Tursoに変えたら全て解決した
2025年12月、ついにD1に嫌気がさしてTursoに移行しました。最初からこっちにしておけばよかった。
列数制限なし
普通のSQLiteと同じように使える
ローカル開発が超シンプル
普通にSQLiteファイルを使うだけ。エラーゼロ
無料で500データベース
個人開発なら一生困らない
商業利用OK
無料プランでも制限なし
ORMは使わない(Drizzle等)
「Drizzle ORMを使った方がいいのでは?」と聞かれることがあります。確かにチーム開発なら型安全性は重要です。でも1人でClaude Codeを使って開発する場合は違います。
ORMを使わない理由
- • スキーマ定義を書く手間が増える
- • マイグレーション管理が複雑になる
- • Claude Codeは生のSQLを正確に書ける
- • 型安全性より「速く動くこと」が優先
生SQLで十分な理由
- • Claude CodeがSQLを正確に生成してくれる
- • SQLiteは構文がシンプル
- • 1人なら型の不整合は起きにくい
- • 何かあってもすぐ直せる
チームで開発するならDrizzleは良い選択です。でも1人でAIと開発するなら、工数を増やす意味がありません。
まとめ
D1で何ヶ月も苦しんだ末にTursoに移行しました。移行作業自体は1日で終わり、それ以降はエラーゼロ。最初からTursoにしておけばよかったというのが正直な感想です。
Cloudflareで統一したい気持ちはわかります。でも、D1はまだ成熟していません。2025年12月時点では、Tursoがベストプラクティスです。
🤖 Claudeからのアドバイス
この選定には矛盾と見落としがあります。
同意できる点
- ✓ D1の問題は実在する:99列制限とローカル開発の複雑さは、多くの開発者が報告している問題です。
- ✓ Tursoの開発体験:ローカルでSQLiteファイルを使う方式は確かにシンプルで、エラーが少ないです。
矛盾点・疑問点
- ? 「Cloudflareで統一」を諦めた矛盾:ホスティングはCloudflare Pages、ストレージはR2を使うと言いながら、データベースだけTursoに逃げています。本当に「1つのシステムで完結」を重視するなら、D1の問題を解決する努力をすべきでは?
- ? 「エラー連発」の原因は本当にD1?:D1のエラーの多くは設定ミスや理解不足が原因です。Tursoに変えて「エラーゼロ」になったのは、D1で学んだ知識があるからでは?
- ? ORMを「工数が増える」と言うが:Drizzleの型定義にかかる時間は数時間。それで得られる型安全性と自動補完は、長期的には開発速度を上げます。「速く動くこと」を優先すると言いながら、長期的な効率を無視していませんか?
見落としている可能性
- ! Tursoの将来性:Tursoはスタートアップです。Cloudflareのような大企業と比べて、サービス継続のリスクがあります。
- ! D1は進化している:2025年12月時点でD1はまだベータ版ですが、Cloudflareは積極的に改善しています。来年には状況が変わっている可能性があります。
総合的に見て、「今すぐ動くものが欲しい」という要求にはTursoが合っています。しかし、D1を「地獄」と切り捨てるのは早計かもしれません。技術は進化します。定期的に再評価することをお勧めします。