Skip to content

T-05: タスクのサーバー同期

項目内容
ステータス✅ Done
優先度P1
依存A-03(認証フロー完成)

ユーザーストーリー

ユーザーとして、タスクデータをサーバーに同期して、端末を変えてもタスクを引き継ぎたい。

受け入れ条件

  • [x] タスクのCRUDがサーバーに反映される
  • [x] 起動時にサーバーからタスクを取得してローカルとマージ
  • [ ] ふりかえりデータもサーバーに同期される
  • [ ] オフライン時はローカルに書き込み、オンライン復帰後に同期

実装内容

iOS側(TaskViewModel.swift

サーバー同期メソッド:

  • fetchServerTasks() — 起動時にサーバーからタスク一覧を取得、serverId でマージ
  • syncCreateTask() — タスク追加時にサーバーへ作成、返却された taskIdserverId に保存
  • syncUpdateTask() — タイトル・説明・ステータス変更時にサーバーへ反映
  • syncDeleteTask() — 削除時にサーバーからも削除

同期タイミング:

  • TaskListView.task modifier で画面表示時にサーバー取得
  • 各CRUD操作のローカル永続化後に非同期でサーバー同期

データモデル変更:

  • TaskItemserverId: String? を追加(サーバー側IDとの紐付け)

Backend側(既存)

  • GET /tasks — 一覧取得(status フィルタ、ページネーション対応)
  • POST /tasks — 作成
  • PUT /tasks/{task_id} — 更新
  • DELETE /tasks/{task_id} — 削除

残タスク

  • ふりかえり(reflection)のサーバー同期
  • オフラインキュー(ネットワーク不通時のリトライ)
  • コンフリクト解決(同一タスクの競合更新)
  • アーカイブデータの同期