目的・役割
未認証ユーザーがアプリ機能を利用するためのサインイン画面。Apple Sign In のみを認証手段として提供。
UI 構成
| 要素 | 種類 | 説明 |
| アプリロゴ | Image | 中央上部に配置 |
| キャッチコピー | Text | 「みんなの推しを、ランキングに」等 |
| Apple Sign Inボタン | SignInWithAppleButton | 標準スタイル、画面下部 |
| 利用規約・プライバシーリンク | Link | フッタにリンク表示 |
状態
| 状態 | 表示内容 |
| 初期表示 | サインインボタン表示 |
| サインイン中 | ボタン無効化 + ProgressView |
| 失敗 | エラーメッセージ表示、ボタン再有効化 |
遷移
| 操作 | 遷移先 |
| Apple Sign In成功(新規ユーザー) | SetupProfileView |
| Apple Sign In成功(既存ユーザー) | MainTabView |
| Apple Sign Inキャンセル | 同画面(無操作) |
使用するデータモデル
// ASAuthorizationAppleIDCredential
// → AppleSignInService → Supabase auth.signInWithIdToken()
// → AuthViewModel.fetchOrCreateUser()
実装メモ
- SecRandomCopyBytes で nonce 生成、SHA256 ハッシュ化
- CheckedContinuation で非同期結果を await キャッチ
- Supabase セッション復元(キーチェーン経由)
- Apple Sign In キャンセルはサイレント扱い
関連
変更履歴
| バージョン | 日付 | 変更内容 |
| 1.0 | 2026-05-09 | 初版作成(ソースコードからリバース) |