Firebaseの代替バックエンド、Supabaseを使ってみよう

今日はSupabaseを紹介します。

「Supabase」は、オープンソースのプラットフォームで、バックエンドサーバー、データベース、認証、リアルタイムデータ、ストレージなどの機能を提供するBaaS(Backend as a Service)プロバイダーです。Supabaseは、アプリケーションの開発者がアプリケーションのバックエンド機能を迅速かつ簡単に構築および管理できるようにするために設計されています。

主な特徴と機能:

  1. リレーショナルデータベース: SupabaseはPostgreSQLデータベースをベースにしており、リレーショナルデータベースをアプリケーションに統合できます。データの保存、クエリ、インデックスなどがサポートされています。
  2. 認証とユーザー管理: ユーザー認証と認可の機能を提供し、ユーザーアカウントの作成、ログイン、アクセス権の管理などを簡単に実装できます。
  3. リアルタイムデータ: Supabaseはリアルタイムデータベースの機能を提供し、リアルタイムでデータの変更を監視および同期できます。これは、チャットアプリや協力アプリケーションなどで役立ちます。
  4. ストレージ: ファイルやメディアを格納および管理するためのクラウドストレージの機能を提供します。
  5. サーバーレス関数: サーバーレスアーキテクチャをサポートし、サーバーレス関数を簡単に作成およびデプロイできます。
  6. APIエンドポイント: カスタムAPIエンドポイントを作成して、アプリケーションとの通信をカスタマイズできます。
  7. オープンソース: Supabaseはオープンソースで提供されており、コミュニティによって開発、サポートされています。これにより、自分のサーバーに展開したり、カスタマイズしたりすることができます。

Supabaseは、モダンなWebおよびモバイルアプリケーションのバックエンドを効率的に構築するための強力なツールとして広く利用されています。アプリケーションのバックエンドを設計、実装、デプロイするプロセスを簡素化し、開発者がフロントエンドに焦点を当てるのに役立ちます。

更にFirebaseではNoSQLしか提供していないのでPostgreSQLを使い方は必然的にこちらになりますね。

Supabaseのプロジェクトを始める

では下記のサインインのページからSupabaseにサインインしましょう。

https://supabase.com/dashboard/sign-in?

メールアドレスでサインアップしてもよいですし、GitGubのアカウントからサインインしてもOKですね。

サインイン後にダッシュボードからNew Projectを選択して新しいプロジェクトを作成しましょう。プロジェクトはOrganization(組織)に紐づくので組織を作成することになります。ここで無料のプランを選んでおきましょうね。

そのままDBのパスワードの設定の画面へ。

セットアップが完了するとダッシュボードのページにもどされ、APIキーやらが表示されます。

もちろん、公開しないこと!

テーブルエディター

左側にあるメニューの上にテーブルエディターがあります。ここでUI上でPostgreSQLデータベースのテーブルを作成してデータを作成することもできますね。

Enable Row Level Security (RLS)とは

Enable Row Level Security (RLS)は、テーブルへのアクセスを制限するためのセキュリティ機能です。RLSは行ベースのセキュリティ制御を提供し、データベース内の各行に対してアクセスポリシーを設定できます。この機能を有効にすることにより、データベースの安全性を向上させ、機密性の高いデータを保護できます。

RLSの利点は以下の通りです:

  1. 行ごとのアクセス制御: RLSは各行に対して異なるアクセス権を設定できるため、異なるユーザーやロールに対して異なるデータの表示および操作を許可できます。これにより、データのセグメンテーションと保護が容易になります。
  2. データのセキュリティ向上: RLSを使用することで、機密性の高いデータを特定のユーザーに制限できます。ユーザーは自分の権限がある行のみを表示および操作できます。
  3. カスタマイズされたアクセス制御: RLSはPostgreSQLのポリシーを使用してカスタマイズできます。ポリシーを設定することで、特定の条件に従って行ごとのアクセスを許可または制限できます。
  4. リーガルコンプライアンス: 特定の法的要件やコンプライアンス基準に対処するために、データのアクセスを制限する必要がある場合、RLSは役立ちます。

RLSを有効にすると、ポリシーを設定してデータベースのセキュリティを強化できます。ポリシーは、特定のユーザーやロールに対するアクセス権を制御し、データのプライバシーとセキュリティを確保します。RLSは特に多くのユーザーやロールが存在し、データへの細かいアクセス制御が必要な場合に有用です。

データの挿入

次にInsertボタンを使って手動でデータを入力してみましょう。わかりやすいので説明不要ですね。

参考API

次に右上の<>APIのボタンをクリックします。

ここで使えるAPIの一覧が例で出てきます。