新しいプロジェクトを始めようとするたびに、気づいたらCloudflareを選んでいます。
「あ、またか」と思いながらも、別に困ってはいない。困ってはいないんですが、「あれ、これって結局ロックインされてるんじゃないか?」という感覚があって、それがちょっとおもしろいなと思っています。
そもそもCloudflareを選んだ理由
元々Cloudflareを使い始めた理由のひとつが、ベンダーロックインを避けたかったからです。
Vercelとかを使うとNext.jsとの相性が良すぎて、そこから離れるコストが上がっていく感じがあって。Cloudflareは逆に、Web標準で書けるしV8 Isolate環境で動くし、HonoみたいなフレームワークもWebフレームワークとして使えるし、特定のプラットフォームに最適化されたものじゃなくて普通のコードを書けばいい。コードとしてのロックインはほぼないはずでした。
実際、Cloudflareで動かしているコードが他のNode.js環境で動かなくなるとかはない。むしろCloudflareがV8 Isolate環境なのでNode.js環境より制約がある側なので、「Cloudflareで動くならたいてい他でも動く」みたいな感じでもあります。
ただ、サービスが便利すぎる
問題はコードじゃなくてサービスの方でした。
D1(分散SQLiteのDB)、R2(オブジェクトストレージ)、Durable Objects、Workers AI——これが揃っていて、しかも安い。D1みたいな感じの分散SQLiteのDBって、AWSには多分現状ないんですよ。似たようなものを使おうと思ったらTursoとか別のものを組み合わせる必要があって、その時点でめんどくさくなる。
代替手段はあります。AWSでもSupabaseでもFirebaseでも、何かしら乗り換えられはします。でも「今の感覚でそのまま動かせるか」というとそうじゃない。乗り換え自体よりも、「今まで何も考えずにできていたことを考えるようになる」部分がしんどい。
「考えなくていい」がいちばん大きい
個人開発でいちばんありがたいのが、収益分岐点をあまり気にしなくていいことです。
AWSで何かを始めようとすると、「何人集まるまでは赤字で、このくらいのスケールになったら月いくらで」という計算をしないといけない。Cloudflareは無料枠が広くて、スケールしてきたら料金を払えばいいというモデルなので、最初からそこを細かく計算しなくていい。「とりあえず作ってみよう」ができる。
この「雑に始められる」感覚が、個人開発のモチベーションにかなり直結していて。事前に細かい計算をしないといけない状態になったら、多分始める前にもう嫌になっている。
コードはロックインされていないけど、精神がロックインされている
というわけで今の状態を正直に言うと、コード的には別にどこでも動かせる状態なんですが、「Cloudflare以外を選ぼう」という気持ちが全然起きない状態になっています。
ベンダーロックインを避けるためにCloudflareを選んだのに、Cloudflareに精神的にベンダーロックインされた感じです。
まあCloudflareが明日なくなるとかはないと思っているので別に実害はないんですが、AWSとかGCPもちゃんと触っておいた方がいいんだろうなという気持ちはあります。個人開発でCloudflareが足りているうちはCloudflareを選び続けると思いますが。
Cloudflareなくならないでください。
