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-19上級

RorkアプリにオフラインファーストアーキテクチャをSupabase同期で実装する

WatermelonDB + Supabase Realtimeを使ってRorkアプリにオフラインファーストを実装する方法を解説します。ローカルキャッシュ・楽観的更新・コンフリクト解決まで本番設計を徹底的に解説します。

Rork548オフライン3WatermelonDBSupabase33同期3アーキテクチャ21React Native234

プレミアム記事

アプリが「オフラインで使えない」ことが理由でレビューに低評価が入るのは、開発者にとってもっとも避けたいシナリオの一つです。モバイルアプリを使う環境は、地下鉄・山間部・通信が不安定なカフェなど、常にオンラインとは限りません。「ネット接続が切れたらアプリが止まる」という設計は、ユーザー体験を著しく損ないます。

ここで扱うのはRorkアプリにオフラインファーストアーキテクチャをWatermelonDB + Supabase Realtimeの組み合わせで実装する方法を、設計の考え方からコードの実装まで解説します。楽観的更新・コンフリクト解決・デバイス間同期という、オフラインファースト実装の三大難所についても、実践的なパターンを示します。

なぜWatermelonDBなのか

React Nativeのオフラインストレージには複数の選択肢があります。AsyncStorage・MMKV・SQLite・WatermelonDBがよく名前の挙がる候補ですが、本格的なデータ同期が必要なアプリにはWatermelonDBが最適解と考えています。

理由は設計思想にあります。WatermelonDBは「観察可能なデータベース」として作られています。テーブルのレコードが変化すると、そのレコードを参照しているReactコンポーネントが自動的に再レンダリングされます。SQLiteのような直接クエリを書くスタイルとは異なり、データの変化がUIに自動伝播する仕組みが組み込まれています。

また、WatermelonDBはLazy Loadingで設計されており、大量のレコードがあっても画面に必要な分だけ読み込みます。数万件のタスクを持つプロジェクト管理アプリでも、UIのスクロールがスムーズに保たれます。

Supabaseとの親和性も高く、後述するSync Protocolを使うと双方向同期の実装コストが大幅に下がります。

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

Rorkで新規プロジェクトを作成したら、まずWatermelonDBとSupabaseクライアントを導入します。

npx expo install @nozbe/watermelondb @supabase/supabase-js
npx expo install @nozbe/watermelondb/native

WatermelonDBはネイティブモジュールを使用するため、Expoのdev buildが必要です。Rork ProまたはMaxであれば、EAS Buildでdev buildを作成できます。

eas build --profile development --platform ios

次に、babel.config.js にWatermelonDBのBabelプラグインを追加します:

// babel.config.js
module.exports = function (api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
    plugins: [
      ['@babel/plugin-proposal-decorators', { legacy: true }],
      ['@babel/plugin-proposal-class-properties', { loose: true }],
    ],
  };
};

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

この記事の続きを読む

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

この記事で得られること
オフライン時も操作が止まらないアプリを作りたいが、どこから手をつけていいか分からなかった人が、WatermelonDB + Supabase Realtimeの構成を今日から動かせるようになる
楽観的更新とコンフリクト解決の設計パターンを理解し、複数デバイス間でデータが壊れないアプリを実装できるようになる
Rorkのプロンプトでオフラインファースト設計のボイラープレートを生成する実践的なプロンプトパターンを習得できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-08-01
実験の割り当てが同じ端末に偏る — 100万件のIDで確かめたハッシュ選定と salt の位置
端末側で実験の変種を決める割り当てが、実験を2本並べた途端に同じ端末へ集中しました。100万件のIDで4つのハッシュを測り、原因がハッシュの一様性ではなく salt の連結位置にあったこと、そして採用した実装までを実測値とともに残します。
開発ツール2026-07-24
同じ通信が同時に何本も飛ぶのを1本に束ねる — 参照カウント付きシングルフライト層の設計
起動直後に同じ API へ何本ものリクエストが同時に飛ぶ多重フェッチを、進行中の Promise を共有して1本に束ねる設計です。束ねる範囲を決めるキーの組み立て方、失敗した Promise を配り続けてしまう罠、呼び出し側の中断が全体を巻き込む罠、そして束ね率を数えて回帰を止めるテストまで、参照カウント付きシングルフライト層の実装を実測の通信ログとともに残します。
開発ツール2026-07-24
アプリの設定値を三層で解決する — 既定・ユーザー・リモートを境界付きにマージするレイヤー設計
既定値・ユーザー設定・リモート設定をひとつの型安全なレイヤーでマージする設計です。壊れたリモート値でもアプリが崩れないよう、キーごとに上書きの強さを変え、境界クランプと検証を通す実装を、実際の事故から起こしたコードで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →