offline-sync について
オフライン優先の同期システムを設計・実装する専門スキルで、Androidの位置情報を一時保存しSupabaseへ同期する方法を扱います。ローカル保存、バックグラウンド送信、競合処理、データ整合性を網羅します。
主な機能
- 01RoomとSQLiteによるローカル保存
- 02WorkManagerによるバックグラウンド同期
- 03タイムスタンプによる競合解決
- 04Supabaseへの一括アップロード
- 05接続監視とフェイルオーバー
- 06重複排除とキュー管理
活用シーン
- 01オフライン時の位置情報の保存
- 02ネットワーク復旧後のキュー送信
- 03一括リクエストによる電池消費の抑制
- 04重複送信とキュー肥大化の防止
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ abelv22/ project-foundation --skill offline-syncインストール後、Claude Code で/offline-syncを入力して読み込まれたか確認します。
詳細
オフライン優先&データ同期スペシャリストスキル
このスキルを使うと、「オフラインキューがない」という問題(P0)を解決する、堅牢な同期システムをアシスタントが設計・実装できます。
対応する知識領域
1. ローカルストレージ(ネイティブ)
- Room Database: Android 側で位置情報の更新をバッファリングする、ローカル SQLite ストレージを実装します。
- データエンティティ: Supabase の
registros_reten構造に一致するOfflineLocationのスキーマを定義します。
2. 同期戦略
- バックグラウンド同期: 接続が回復した際にデータを確実にアップロードするため、
WorkManagerを使用します。 - 競合解決: 位置情報データには、シンプルなタイムスタンプベースの解決方法を使用します。
- バッチアップロード: バッテリーを節約するため、複数のレコードをまとめて 1 回の HTTP リクエストで Supabase に送信する方法を検討します。
3. 接続の監視
- ネットワーク状態: Web(React)とネイティブ(Java)の両側で、接続状況の変化に対応します。
- フェイルオーバーロジック: Supabase への直接接続モードとローカル優先モードを、シームレスに切り替えます。
4. データの整合性
- 重複排除: 同じ位置情報のポイントが二重に送信されないようにします。
- キュー管理: デバイスが長期間オフラインの場合、ストレージの肥大化を防ぐために古いログを削除します。
回答のガイドライン
- バッテリー効率を最大限に高めるため、バッチリクエストを優先します。
- 同期ロジックには、ネットワーク障害に対するエラー処理を必ず含めます。
- Web レイヤーで複雑なローカルストレージが必要な場合は、Capacitor SQLiteを推奨します。
- 同期済みレコードを削除するなど、データ保持ポリシーを遵守します。
コメント
Markdown 対応