RORK LABEN
PLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっていますPLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっています
記事一覧/開発ツール
開発ツール/2026-03-25中級

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

RorkとSupabaseを組み合わせ、コードをほとんど書かずに認証とリアルタイムデータ同期を実装する手順です。プロジェクトのセットアップからユーザー登録・ログインの実装、リアルタイムチャットへの応用まで、ステップバイステップで丁寧に解説します。

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

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/月 または ¥2,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を連携し、リアルタイム同期を実現する入門です。プロジェクトのセットアップ、SDKの組み込み、CRUD操作の実装、本番前に必須のセキュリティルール、オフライン対応の設定までを実践コード付きで丁寧に説明します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →