Supabaseの細かい情報
Supabase について知っておくと便利そうな細かな情報をまとめてみました。
主に Supabase の中の人 タイラーさん のポストをまとめています。
Supabaseの読み方は?
多くの方が初見では「スパベース」と呼んでいるかと思いますが、日本語においては「スーパベース」がピッタリだと言われています。
ただし、表記上だと「スーパ」ですが口語では「スーパー」で良いかもしれません。
▼ タイラーさんによる「スーパーベース」読みが確認できる。(0:34頃)
ちなみに「Superbase」ではなく「Supabase」となったのはドメインの関係とのこと。(ドメインが取れなかったのか、ドメイン的に短くて良い感じだからなのかは不明。)
料金表の bandwidth はエグレスコストだけがカウントされる
料金ページで bandwidth との表記があります。
疑問に感じるのが「上り方向(ingress)」も対象なのかどうかです。
結論としては「下り方向(egress)」だけがカウント対象となるようです。(Githubのissuesで中の人が言及していた投稿も見た記憶があるのですがページを思い出せず...。)
下記ページからエグレスコストのみが対象ということがお分かり頂けるかと思います。
PrismaなどのORMを使うべきかどうか?
Supabase の使途によって考え方が異なるようです。
- Supabase を単にデータベースとして使おうとしているなら ORM を使ってもいいと思う。(DBを移行しやすい状態にする)
- supabase-js などを使ってSupabaseのシステムに乗っかって開発するなら、Supabase CLI でコマンドを用いて開発を進めた方が楽だろう。( Supabase CLI )
Supabase CLIにはマイグレーション機能があったり、DB情報を読み取ってTypeScript型を生成してくれる便利な機能があったりします。
SupabaseのGUI上でテーブルを作成した場合でも、 supabase db diff
を実行すれば差分でマイグレーションファイルを生成してくれます。生成した型ファイルをインポートして、const supabase = createBrowserClient<Database>()
のように記述しておくだけで適用されます。
さらには、PostgreSQLで作った自作関数の返り値の型データも吐き出してくれます!( .rpc()
で実行する際に便利 )
特に理由が無ければ Supabase CLI を使って、Supabaseのシステムに前乗っかりしちゃう方が楽です。
PlanetScaleにあったブランチ機能も無くはない。
PlanetScaleの無料プランが廃止されて個人開発には高すぎる金額のため、Supabaseに避難して来た方も多いのではないでしょうか。
Supabase にも一応はブランチ機能が備わっています。(2024/04/05現在: パブリックアルファ版。Proプラン以上なので有料機能ですが...。)
個人開発としては無料で始めて、プロダクトが成長してから Pro 版を使えば間に合うことでしょう。将来的に正式版のブランチ機能が使えるかもしれないという期待感を持てるだけでも、かなり嬉しいのではないでしょうか。
Supabaseはオープンソースである
これは既にご存知の方も多いと思います。
Supabaseはオープンソースで開発されています。
考えたくありませんが、万が一 Supabase社 が解散してしまっても、Supabaseがすぐに使えないという自体は避けられます。(2022年8月時点で 8,000万ドル の資金調達を実施しているので、しばらくは問題ないかと思います。)
OSSであるが故、何ならそのままサービスとして提供する会社も存在するんだとか笑
匿名認証も使える!
匿名認証が2024年に追加されました!
戦略に応じた実装の自由度が増してきましたね。
待望の匿名認証が遂にSupabaseに加わります。
2024年4月5日時点では正式版ではないようですが、4月中旬の ローンチウィーク に発表されるのかも...?
Supabaseの管理画面からマークダウンでプレビューできる
下記を見て頂いた方が分かりやすいかと思います。
GUIのCSVインポート機能は極力使わない方がいいかもしれない
Supabaseにはテーブル作成画面にて「Import data via spreadsheet」というCSVファイルをインポートしてテーブルを構築してくれる便利な機能があります。
しかし、この機能は極力使わない方がいいかもしれません。
というのも文字化けが発生する可能性があるためです。
実際に43万行ぐらいの日本語を含むデータをインポートしたところ200件強の文字化けが発生してしまいました。文字コードを揃えていても発生してしまいました。
代わりに DBeaver でインポートを行ったところ文字化けせず済みました。
2024年9月13日追記:SupapabaseのAPIキーの名称が変更になった模様
既存記事を読むときに読み替えが必要な重要な情報になりそうなのでここにメモとして掲載しておきます。
JSONB型のカラムに型制約をつける方法
これはSupabaseだけではなく、PostgreSQLのお話になりますが...。
インデックスが効くJSON型っぽい型としてJSONB型を使うシーンも多いかと思います。しかし、JSONB型は自由度が高くキーも値も自由に入れられてしまいます。そこで、データ形式をCHECK制約として守らせる方法をタイラーさんが動画を出してくれていますのでご紹介します。
さいごに
タイラーさん のアカウントは必ずフォローしておきましょう!
実装中に困ることが出てくると情報が少なくて困ることも多くありますが、それを差し引いても Supabase の魅力は十分にあります。
単にデータベースとして見るだけではなく Supabase の機能をどんどん活用していきましょう。
Discussion