XAPPSXAPPS
← Blog
·2分で読めます

個人開発のバックエンドに Supabase を選んだ理由

#Supabase#個人開発#Web

個人開発では、バックエンドに Supabase を使うことが多いです。データベース・認証・ストレージなどがまとまって用意されているサービスで、ひとりで作るときに重宝しています。この記事では、実際に使ってみて「ここが効いた」と感じた点を、具体例つきで書いてみます。

「やりたいこと」がだいたい揃っている

個人でWebアプリを作ろうとすると、必要になるものはだいたい決まっています。

  • データを保存する場所(データベース)
  • ログインの仕組み(認証)
  • 画像などの置き場所(ストレージ)

Supabase はこれらがひとまとめになっているので、サービスをあちこち組み合わせる手間が少ないのが助かります。中身は PostgreSQL なので、慣れた SQL でテーブルを作り、データを扱えるのも安心でした。別々のサービスを契約して連携させる、という個人開発で一番だるい部分が省けます。

認証が最初から使えるのが大きい

個人開発で地味に大変なのが、ログイン周りです。Supabase はメール認証や Google ログインが最初から用意されているので、ここを自前で作らずに済みます。クライアントからは、こんな数行でログインが書けます。

const { error } = await supabase.auth.signInWithOAuth({
  provider: 'google',
})

パスワードのハッシュ化やセッション管理といった、間違えると怖い部分を自前で持たなくていいのは、大きな安心材料でした。

RLS で「誰が何を見られるか」を守る

データベースに直接アクセスできる構成なので、行レベルセキュリティ(RLS) は最初に必ず設定します。たとえば「自分の解答履歴は自分しか見られない」を、こう書けます。

alter table answers enable row level security;

create policy "own rows only"
  on answers for select
  using (auth.uid() = user_id);

これをサボると、URLを叩けば他人のデータが見えてしまう、という事故につながります。Supabase を使うなら、RLS だけは最初に押さえておくべきポイントです。

向いている場面・気をつける場面

小〜中規模の個人プロジェクトには、とても相性が良いと感じています。一方で、無料枠には保存容量や同時接続数などの上限があり、しばらくアクセスがないとプロジェクトが一時停止する、といった挙動もあります。趣味のアプリなら問題になりにくいですが、本格運用するなら有料プランや上限の把握は必要です。

「まず動くものを早く作りたい」個人開発において、Supabase は心強い選択肢だと思っています。実際に マナビポータル も、この構成で作っています。