認証状態(AuthViewModel.authState)によって ContentView の表示先が分岐。 CreateRankingView は自前 NavigationStack を持たず、呼び出し元(MainTabView/MyPageView)が wrap する設計。

起動〜認証フロー

flowchart TD Launch([起動]) --> ContentView{ContentView} ContentView -- loading --> Splash[SplashView] ContentView -- unauthenticated --> Login[LoginView] ContentView -- needsSetup --> Setup[SetupProfileView] ContentView -- authenticated --> Main[MainTabView] Login -- Apple Sign In成功 --> Setup Setup -- 初回設定完了 --> Main

メインタブ構成

flowchart LR Main[MainTabView] --> THome[Tab: home] Main --> TSearch[Tab: search] Main --> TCreate[Tab: create] Main --> TMypage[Tab: mypage] Main --> TSettings[Tab: settings] THome --> Home[HomeView] TSearch --> Search[SearchView] TCreate --> CreateNS[NavigationStack: CreateRanking] TMypage --> MyPage[MyPageView] TSettings --> Settings[SettingsView]

ホーム経路

flowchart TD Home[HomeView
Active/Ended切替] --> Notif[NotificationListView] Home --> Detail[RankingDetailView] Detail -- hasQuiz=true --> Quiz[QuizGateView] Quiz -- 全問正解 --> VoteRoute{投票モード} Detail -- hasQuiz=false --> VoteRoute VoteRoute -- single --> Vote[VoteView] VoteRoute -- threePoint --> ThreeVote[ThreePointVoteView] Vote --> Result[ResultView] ThreeVote --> Result Detail -- 期間終了かつ未投票かつ閲覧不可 --> Locked[ResultLockedView] Detail -- 投票済 or 閲覧権限あり --> Result

ランキング作成フロー

flowchart LR CreateNS[Tab: create] --> CR[CreateRankingView] CR --> S1[Step1: 基本情報] S1 --> S2[Step2: 選択肢] S2 --> SQ{quiz付き?} SQ -- yes --> SQuiz[StepQuiz: クイズ] SQuiz --> S3[Step3: 期間/モード] SQ -- no --> S3 S3 --> S4[Step4: プレビュー] S4 -- 公開 --> Home CR -. toolbar .-> Drafts[DraftListView] Drafts -- 下書き選択 --> CR

マイページ・設定経路

flowchart TD MyPage[MyPageView] --> Profile[ProfileView] MyPage --> ChoiceRequests[ChoiceRequestsListView] MyPage --> CR2[CreateRankingView
下書き編集] Settings[SettingsView] --> Paywall[PaywallView] Settings --> Feedback[FeedbackView] Paywall --> PlanSelect[PaywallPlanSelectionView] PlanSelect --> Purchase[PaywallPurchaseButton] Purchase -- StoreKit成功 --> Settings

主要な遷移トリガー

起点画面操作遷移先
ContentViewauthState 変化Splash/Login/Setup/Main
HomeViewランキングカード タップRankingDetailView
HomeView通知ベルアイコンNotificationListView
RankingDetailView「投票する」(quiz無)VoteView / ThreePointVoteView
RankingDetailView「投票する」(quiz有)QuizGateView
QuizGateView全問正解投票画面
VoteView/ThreePointVoteView投票完了ResultView
SearchView検索結果カードRankingDetailView
MyPageView下書き編集CreateRankingView(編集mode)
SettingsView「Pro版にアップグレード」PaywallView
SettingsView「フィードバック送信」FeedbackView

画面ID対応表

画面ID画面名ファイル
RS-AUTH-01ログインViews/Shared/LoginView.swift
RS-AUTH-02初期プロフィール設定Views/Shared/SetupProfileView.swift
RS-HOME-01ホームViews/Home/HomeView.swift
RS-HOME-02通知一覧Views/Home/NotificationListView.swift
RS-VOTE-01ランキング詳細Views/Vote/RankingDetailView.swift
RS-VOTE-02シングル投票Views/Vote/VoteView.swift
RS-VOTE-03TOP3投票Views/Vote/ThreePointVoteView.swift
RS-VOTE-04結果画面Views/Vote/ResultView.swift
RS-VOTE-05結果ロック画面Views/Vote/ResultLockedView.swift
RS-VOTE-06クイズゲートViews/Vote/QuizGateView.swift
RS-CR-01ランキング作成(統括)Views/Ranking/CreateRankingView.swift
RS-CR-02〜05作成ステップ1〜4Views/Ranking/Step*.swift
RS-CR-06下書き一覧Views/Ranking/DraftListView.swift
RS-SEARCH-01検索Views/Search/SearchView.swift
RS-PROFILE-01ユーザープロフィールViews/Profile/ProfileView.swift
RS-MYPAGE-01マイページViews/MyPage/MyPageView.swift
RS-SET-01設定Views/Settings/SettingsView.swift
RS-PAY-01〜05Paywall関連Views/Settings/Paywall*.swift

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成(ソースコードからリバース)