RORK LABEN
TOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しましたTOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しました
記事一覧/開発ツール
開発ツール/2026-03-25中級

Rork × Supabase 認証&リアルタイム機能実装ガイド — ノーコードでバックエンドを構築する方法

RorkとSupabaseを組み合わせて、認証機能とリアルタイムデータ同期を実装する方法を解説。ユーザー登録からリアルタイムチャットまで、実践的なステップバイステップガイドです。

Rork515Supabase33認証14リアルタイム7バックエンド10

Rorkでアプリを開発するとき、バックエンドの構築は大きな課題の一つです。Supabaseを活用すれば、認証・データベース・リアルタイム通信といったバックエンド機能を、コードをほとんど書かずに実装できます。ここではRorkとSupabaseの連携方法を基礎から実践まで丁寧に解説します。

なぜ Rork × Supabase なのか

RorkはAIを活用したアプリ開発プラットフォームで、UIの構築やロジックの生成を素早く行えます。一方、Supabaseは「Firebase の代替」として急成長しているオープンソースのBaaS(Backend as a Service)で、PostgreSQL データベース、認証、リアルタイムサブスクリプション、ストレージを提供します。

この2つを組み合わせることで、フロントエンドはRorkがAIで生成し、バックエンドはSupabaseが担当するという、効率的な開発体制が整います。

Supabase プロジェクトのセットアップ

アカウント作成とプロジェクト初期化

まず、Supabaseの公式サイトでプロジェクトを作成します。

# Supabase CLIを使ったプロジェクト初期化
npx supabase init
 
# ローカル開発環境の起動
npx supabase start
 
# 出力例:
# API URL: http://localhost:54321
# anon key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
# service_role key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

データベーステーブルの作成

ユーザープロフィールとメッセージを管理するテーブルを作成します。

-- ユーザープロフィールテーブル
CREATE TABLE profiles (
  id UUID REFERENCES auth.users(id) PRIMARY KEY,
  username TEXT UNIQUE NOT NULL,
  avatar_url TEXT,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
 
-- メッセージテーブル(リアルタイムチャット用)
CREATE TABLE messages (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  user_id UUID REFERENCES profiles(id) NOT NULL,
  content TEXT NOT NULL,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
 
-- RLS(Row Level Security)の有効化
ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
ALTER TABLE messages ENABLE ROW LEVEL SECURITY;
 
-- ポリシー: 誰でもプロフィールを閲覧可能
CREATE POLICY "Profiles are viewable by everyone"
  ON profiles FOR SELECT USING (true);
 
-- ポリシー: 自分のプロフィールのみ更新可能
CREATE POLICY "Users can update own profile"
  ON profiles FOR UPDATE USING (auth.uid() = id);
 
-- ポリシー: 認証済みユーザーはメッセージを投稿可能
CREATE POLICY "Authenticated users can insert messages"
  ON messages FOR INSERT
  WITH CHECK (auth.uid() = user_id);
 
-- ポリシー: 誰でもメッセージを閲覧可能
CREATE POLICY "Messages are viewable by everyone"
  ON messages FOR SELECT USING (true);

Rork でのSupabase連携実装

Supabase クライアントの初期化

Rorkのプロジェクトに Supabase クライアントを設定します。

// lib/supabase.ts
import { createClient } from '@supabase/supabase-js';
 
const supabaseUrl = 'https://your-project.supabase.co';
const supabaseAnonKey = 'your-anon-key';
 
export const supabase = createClient(supabaseUrl, supabaseAnonKey);

認証機能の実装

メールアドレスとパスワードによるユーザー認証を実装します。

// 新規登録
async function signUp(email: string, password: string, username: string) {
  // 1. Supabase Authでユーザーを作成
  const { data: authData, error: authError } = await supabase.auth.signUp({
    email,
    password,
  });
 
  if (authError) throw authError;
 
  // 2. プロフィールテーブルにレコードを追加
  const { error: profileError } = await supabase
    .from('profiles')
    .insert({
      id: authData.user?.id,
      username,
    });
 
  if (profileError) throw profileError;
 
  return authData;
}
 
// ログイン
async function signIn(email: string, password: string) {
  const { data, error } = await supabase.auth.signInWithPassword({
    email,
    password,
  });
 
  if (error) throw error;
  return data;
}
 
// ログアウト
async function signOut() {
  const { error } = await supabase.auth.signOut();
  if (error) throw error;
}
 
// 使用例:
// await signUp('user@example.com', 'password123', 'testuser');
// → ユーザー作成 + プロフィール作成が完了

リアルタイム機能の実装

Supabaseのリアルタイム機能を使って、メッセージが即座に全ユーザーに反映されるチャット機能を構築します。

// リアルタイムメッセージ購読
function subscribeToMessages(onNewMessage: (message: any) => void) {
  const channel = supabase
    .channel('messages')
    .on(
      'postgres_changes',
      {
        event: 'INSERT',
        schema: 'public',
        table: 'messages',
      },
      (payload) => {
        onNewMessage(payload.new);
      }
    )
    .subscribe();
 
  // クリーンアップ関数を返す
  return () => {
    supabase.removeChannel(channel);
  };
}
 
// メッセージ送信
async function sendMessage(content: string) {
  const user = (await supabase.auth.getUser()).data.user;
  if (!user) throw new Error('Not authenticated');
 
  const { error } = await supabase
    .from('messages')
    .insert({
      user_id: user.id,
      content,
    });
 
  if (error) throw error;
}
 
// 使用例:
// const unsubscribe = subscribeToMessages((msg) => {
//   console.log('New message:', msg.content);
// });
// await sendMessage('Hello from Rork!');
// → 全購読者にリアルタイムで配信される

全体を振り返って

RorkとSupabaseを組み合わせることで、フロントエンドのUI生成からバックエンドの認証・データベース・リアルタイム通信まで、フルスタックなアプリ開発を効率的に行うことができます。特にRLS(Row Level Security)の設定を忘れずに行うことが、安全なアプリ構築の鍵です。

まずはシンプルな認証機能付きのアプリから始めて、リアルタイム機能やEdge Functionsを段階的に追加していくことをお勧めします。

12年の個人開発で見えてきたこと

リリース直後にチェックしているもの

  • クラッシュレポートの上位エラーを24時間ごとに確認しているか
  • AdMob/StoreKit の収益ダッシュボードに異常検知が出ていないか
  • ユーザーレビューに技術的な指摘が含まれていないか
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

開発ツール2026-04-29
Rork × Cloudflare Durable Objects で『リアルタイム協調アプリ』のバックエンドを作る実装ガイド
Rork で作ったアプリに、Cloudflare Durable Objects を使った自前のリアルタイム協調バックエンドを組み込む実装手順を、本番で動くコードと一緒にまとめました。Liveblocks や Yjs ホスティングを使わずに、低コストで多人数同時接続を支える設計を解説します。
開発ツール2026-04-07
Rork Max × Liveblocks / Yjs:リアルタイム協調編集アプリ開発
Rork MaxアプリにLiveblocksとYjsを統合し、複数ユーザーが同時編集できるリアルタイム協調機能を実装する完全ガイド。CRDTの仕組みから本番運用まで解説します。
開発ツール2026-04-04
Rork × Firebase Realtime Database でリアルタイム同期アプリを作る入門ガイド
Rork アプリに Firebase Realtime Database を連携する方法をゼロから解説。データのリアルタイム同期・CRUD操作・オフライン対応まで、実践コード付きで丁寧に説明します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →