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

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

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

Rork547ConvexReact Native233バックエンド11リアクティブ

プレミアム記事

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/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-04-04
Rork × Firebase Realtime Database でリアルタイム同期アプリを作る入門ガイド
RorkアプリにFirebase Realtime Databaseを連携し、リアルタイム同期を実現する入門です。プロジェクトのセットアップ、SDKの組み込み、CRUD操作の実装、本番前に必須のセキュリティルール、オフライン対応の設定までを実践コード付きで丁寧に説明します。
開発ツール2026-08-22
一括置換は全ファイル成功しました。壊れたのは、消さなかった行のほうです
生成コードに一括置換をかけると、一致した行ではなく隣の行が壊れます。運用中のプロジェクトで実際に起きた破損と、置換の不変条件を検査する20行のガードスクリプトをまとめました。
開発ツール2026-08-14
Expo SDK 57 に上げる前に、prebuild で消えるネイティブ変更を洗い出す
Expo SDK 57 では expo prebuild が既定で ios と android を消してから再生成します。手編集を上げる前に洗い出す方法、config plugin への移し替え、57.0.9 で解消したメモリ回帰までを実務の順序でまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →