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-04-24上級

Rork に Convex を組み合わせて型安全なリアクティブバックエンドを作る

Rork が生成する React Native アプリに Convex を組み込んで、リアクティブ購読・型安全なクエリ・ファイル処理・Cron ジョブまでを一本化する実装ガイド。本番でのハマりどころも網羅しました。

Rork515ConvexReact Native209バックエンド10リアクティブ

プレミアム記事

Rork でアプリの画面まわりはあっという間に組めるのに、バックエンド選定で一晩悩んだ経験はないでしょうか。Firebase と Supabase、どちらも強力ですが、「Rork が生成する TypeScript コードの型安全性」と「リアルタイム性」を両立させようとすると、クライアント側のコードがじわじわと膨らんでいきます。

私自身、壁紙アプリや癒し系アプリを個人で運用していて、ユーザー同士の小さなインタラクション(お気に入り・スタンプ・コメント)を足すたびに、「もうリアルタイム DB にした方が早いのでは」と感じてきました。最近ようやく腑に落ちたのが Convex です。リアクティブな購読・自動生成される型・サーバーレス関数が1つの API にまとまっていて、Rork が吐き出すコードとの相性がとにかく良いんです。

この記事は、Rork 生成アプリに Convex を組み込んで、バックエンドを1段階賢くするまでの実装手順をまとめたものです。初回セットアップから、リアクティブ購読、ファイルアップロード、認証、スケジュール実行、本番で遭遇したハマりどころまで、動くコードで追いかけていきます。

Rork 生成アプリに Convex が刺さる5つの理由

Convex を選ぶ理由は「リアルタイム DB が欲しい」だけではありません。Rork が自動生成する TypeScript コードベースとの統合観点から並べ直すと、以下の5点に集約されます。

第一に、スキーマ → サーバー関数 → クライアント関数の型が全部つながることです。convex/schema.ts を書き換えると、useQuery の戻り値の型まで自動的に更新されます。Rork が tsconfig.json を strict で生成するため、Supabase のような「手動で型ファイルを生成する運用」より相性が良いです。

第二に、リアクティブ購読がデフォルトです。useQuery はそのまま使うだけで自動再購読してくれます。Firebase Firestore や Supabase Realtime だと明示的にチャネルを購読・解除する実装が必要で、画面遷移時のメモリリーク対策が地味に面倒です。

第三に、楽観的更新が1行で書けますuseMutation(api.tasks.toggle).withOptimisticUpdate(...) の形で、UI 即応性と整合性を両立できます。個人開発者には正直ありがたい設計です。

第四に、ファイルストレージと関数が同じプロジェクトに同居します。S3 + Lambda のような別サービス連携を組まずに、ctx.storage.generateUploadUrl() でアップロード URL を発行して返すだけ。これは Rork のプロンプト指示にもそのまま乗せられます。

第五に、Clerk との統合が公式にサポートされていること。Rork + Clerk のソーシャルログイン を使っているなら、Convex はその認証情報をそのまま関数内で ctx.auth.getUserIdentity() として受け取れます。

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

Rork で生成したプロジェクトに Convex を入れる手順は、思っているより簡単です。ターミナルで以下のコマンドを実行します。

# 既存の Rork プロジェクトのルートで実行
npx convex dev
# 初回は Convex アカウントのログイン、プロジェクト作成が走ります
# 完了すると convex/ ディレクトリと .env.local に NEXT_PUBLIC_CONVEX_URL が追記されます
 
npm install convex

次に、React Native アプリ全体を ConvexProvider でラップします。Expo Router を使っている Rork 生成プロジェクトなら、app/_layout.tsx に組み込むのが自然です。

// app/_layout.tsx(抜粋)
import { ConvexProvider, ConvexReactClient } from "convex/react";
import { Stack } from "expo-router";
 
// 環境変数は app.json の extra 経由で読むか、EXPO_PUBLIC_ プレフィックスを使います
const convex = new ConvexReactClient(process.env.EXPO_PUBLIC_CONVEX_URL!, {
  unsavedChangesWarning: false, // React Native では不要なので無効化
});
 
export default function RootLayout() {
  return (
    <ConvexProvider client={convex}>
      <Stack screenOptions={{ headerShown: false }} />
    </ConvexProvider>
  );
}

ここで unsavedChangesWarning: false を入れているのが、地味に重要です。Web の離脱警告を前提にしたデフォルト挙動が React Native 環境で警告を吐くので、最初に止めておきます。

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

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Firebase と Supabase の選定で止まっていた開発者が、Rork で動く型安全なリアクティブバックエンドを今日手に入れられる
スキーマ定義から購読・ファイルアップロード・Cron ジョブまで、コピー&ペーストで使える実装パターンを習得できる
本番で起きがちなレート制限・冪等性・スキーマ変更のハマりどころを事前に回避できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

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

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

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

関連記事

開発ツール2026-04-04
Rork × Firebase Realtime Database でリアルタイム同期アプリを作る入門ガイド
Rork アプリに Firebase Realtime Database を連携する方法をゼロから解説。データのリアルタイム同期・CRUD操作・オフライン対応まで、実践コード付きで丁寧に説明します。
開発ツール2026-07-15
「、」が行頭に落ちた — Rork が組んだ名言カードと日本語の禁則処理
React Native の Text は日本語の行頭禁則を保証しません。実測した違反率、WORD JOINER による事前結合の実装、onTextLayout での自動監査、Rork Max(SwiftUI)との挙動差までまとめました。
開発ツール2026-07-15
Rorkの癒しアプリにスリープタイマーを付けたら、フェードアウトが実際の音とズレた話
Rorkが生成するスリープタイマーは、壁時計のsetIntervalで音量を下げます。数値上は30分でも、実際の音はもっと早く消えたり不自然に途切れたりします。フェードを再生位置で駆動し直す実装と、対数カーブ・停止処理・画面ロック時の限界までを実運用の視点でまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →