概要
他ユーザーをフォローしてその活動を追跡できる機能。フォローされると通知が飛ぶ。
フォロー関係は follows テーブルで管理(followerId, followedId)。
関連画面
API
| メソッド | 説明 |
follow(targetUserId) | フォロー実行 |
unfollow(targetUserId) | フォロー解除 |
isFollowing(targetUserId) | フォロー中か判定 |
fetchFollowCounts(userId) | フォロー数・フォロワー数を並列取得 |
処理フロー(フォロー)
- ProfileView でフォローボタンタップ
FollowService.follow(targetUserId) 実行
follows テーブルに INSERT(followerId=自分, followedId=対象)
- 対象ユーザーに通知 INSERT(type=follow)
- UI のフォロー状態を更新(楽観UI)
ビジネスルール
- 自分自身をフォロー不可
- 同じ人を二重フォロー不可(Unique制約)
- フォロー数・フォロワー数はクライアント側でキャッシュ、定期的に再取得
- フォロー解除しても通知履歴は残る(自動削除しない)
外部連携
| 連携先 | 用途 |
| Supabase follows表 | フォロー関係保存 |
| NotificationService | フォロー時の通知発火 |
エラー処理
| 発生条件 | 対応 |
| Unique制約違反 | 「すでにフォロー中です」 |
| 通信失敗 | RetryHelper で再試行 |
| セルフフォロー | UI側でブロック(実装上の保険) |
実装メモ
- FollowService.fetchFollowCounts() は async let で並列取得
- Logger.Follow カテゴリ
- フォロー一覧画面(フォロー中・フォロワー)は v1.1検討
- ブロック機能(v1.1検討)
変更履歴
| バージョン | 日付 | 変更内容 |
| 1.0 | 2026-05-09 | 初版作成 |