SQL 必須と言い出すエンジニアの 8 割は、ただ設計が下手なだけだ
── Firestore を使えないのは、Firestoreのせいではない。思考が複雑すぎるだけだ。
現場でよくある光景がある。
「Firestoreでは無理です」
「SQLじゃないと要件を満たせません」
「NoSQLは限界があります」
こういうセリフが出た瞬間、私はほぼ確信する。
あ、この人たぶん“課題をシンプルに考える力”がないだけだな。
Firestore や DynamoDB に問題があるのではなく、
あなたの設計が破綻しているだけなのに、それを技術のせいにしている。
■ 古い DynamoDB ですら普通のサービスを作れた。それでも文句言うの?
今よりずっと制約だらけの DynamoDB を使っていた時代ですら、
普通に Web サービスは成立していた。
初期のDynamoDBは
- インデックス追加不可
- インデックス数に超厳しい制限
- クエリ機能はほぼ原始的
- JOIN?そんなもの最初から無い
と、今よりも厳しい制約。それでもWebサービスは作れた。
なぜか?
頭を使って設計するから。
Firestore を「使えない」というエンジニアは、
単に RDB の思考から抜け出せないだけだ。
それは “技術的問題” ではなく “思考の問題” である。
■ Firestore が無理なんじゃない。「考え方を変えるのが無理」なだけ
Firestore に向いていないのは、
Firestore ではなくて あなたのモデリング力 の方だ。
典型的なパターン:
- なんでも正規化しようとする
- JOIN 前提で設計する
- 画面の仕様をそのまま DB の形にしようとする
- 「後から柔軟に変えたい」と言いながら、柔軟性を失う設計をする
- 書き込みコストを気にしすぎて逆に破綻する
結局のところ、
「SQL が欲しい」ではなく、「SQL 以外で考える力がない」だけ
だ。
■ 制約下で設計できない人は、結局どのDBを使っても破綻する
制約を嫌うエンジニアは、一見“知識が豊富”に見える。
だが実態は逆だ。
- シンプルに割り切れない
- 余計なレイヤーや抽象化を加えたがる
- 技術の選択がプロダクト初期に対して重すぎる
- 「複雑な設計ができる=優秀」と勘違いしている
それ、全部 オーバーエンジニアリングの典型 である。
経験上、こういう人に SQL を渡しても、
- 無駄な JOIN
- 過剰なトランザクション
- 意味不明な正規化
- 処理が遅いビュー
- 抽象化しすぎて誰も理解できないスキーマ
を作って破綻する。
問題は技術ではなく習慣なのだ。
■ スタートアップの初期で SQL 必須と言ってる時点で終わってる
スタートアップの0→1フェーズで
「SQLサーバが必須です」と言い出した時点で、
プロダクトはほぼ間違っている。
なぜなら、SQL が必須なほど複雑なものを初手から作るべきではないからだ。
初期プロダクトで SQL が必要って、もうそれだけで以下が透けて見える:
- 初期から複雑すぎる
- MVP の概念を理解していない
- プロダクトの “核” を絞れていない
- 技術ドリブンで思考している
- 要件が肥大化している
- そもそも PM もエンジニアもシンプルにまとめる気がない
言い方を変えると、
SQL が必須なのではなく、やろうとしていることがアホみたいに複雑すぎる。
スタートアップはそんなもの作るフェーズじゃない。
■ Firestore でできない? いや、大体のサービスは Firestore の方が向いてる
ほとんどの Web サービスは、以下で十分だ。
- Create
- Update
- Get
- Query(想定されたアクセスパターン)
- List with filters
- Aggregate 少し
これ、Firestore で全部できる。
一方で、SQL が輝く本当に“必要な”ケースは少ない。
- 高度な集計
- 巨大な OLAP
- 超複雑 JOIN
- 銀行級トランザクション
普通のスタートアップの MVP でこれを必要とすることは、ほぼ無い。
もし必要だと思っているなら、
あなたはプロダクトを理解していない
→ 要件を整理できていない
→ ユーザーの問題を見誤っている
可能性が高い。
■ 結論:SQL は悪くない。だが「SQL必須」と言う人はだいたい悪い。
SQL という技術自体は素晴らしい。
私も好きだし、必要な場面では使う。
問題なのは、
SQL を“使いこなす力”ではなく、
SQL しか“考えられない力のなさ”。
Firestore が弱いんじゃない。
あなたの思考が弱いのだ。
プロダクト初期は、
- シンプルに考える力
- 制約を味方につける力
- MVP 構築のスピード
- 最小構成で出す勇気
ここが勝敗を決める。
そして、最後にひとつだけ。
「SQLが必要」と言い始めたら、プロジェクトが迷走しているサインだ。
真っ先に疑うべきは、技術ではなくメンバーの思考回路である。
人工知能を活用したアプリケーションやサービスを活用し、内発的動機付けで行動するエンジニア、起業家、社会起業家をサポートするコミュニティーです。 singularitysociety.org Supported by 週刊 Life is beautiful
Discussion