HomeViewの内側に「今日ページ」と「カレンダーページ」をTabViewで切り替える二層構造。各種ショップ・設定はsheetで起動する。

起動〜メインフロー

flowchart TD Launch([起動]) --> App[DailyTipsApp] App -- ATT要求 --> AppOpen[AppOpenAd ロード] AppOpen --> Home[HomeView
TabView] Home --> Today[今日ページ] Home --> Calendar[カレンダーページ] Home -.-> Review{起動5回目/20回目?} Review -- yes --> RequestReview[in-app review表示]

今日ページ経路

flowchart LR Today[今日ページ] --> TipCard[TipCardView
豆知識カード] TipCard -- ♥ --> Fav[(お気に入り更新)] TipCard -- 共有 --> Share[ShareCardView
SNS共有] TipCard -- クイズ --> Quiz[QuizView] Today -. settings .-> Settings[SettingsView] Today -. テーマ .-> ThemeShop[ThemeShopView] Today -. ジャンル .-> GenreShop[GenreQuizShopView] Today -. プレミアム .-> Premium[PremiumView] Today -. お気に入り .-> Favorites[FavoritesView] Today -. 動画ボーナス .-> RewardAd[Rewarded広告
+3pt]

カレンダーページ経路

flowchart TD Calendar[カレンダーページ] --> Day{日付タップ} Day -- 表示可能 --> ShowTip[TipCardView表示] Day -- ロック --> Alert{広告視聴で解放?} Alert -- yes --> Reward[Rewarded広告] Reward -- 報酬 --> Mark[markAsAdViewed] Mark --> ShowTip Alert -- no --> Cancel[キャンセル] ShowTip -- クイズあり --> QuizSheet[QuizView]

ジャンルクイズフロー

flowchart LR GenreShop[GenreQuizShopView] --> GCard{ジャンルカード} GCard -- 未アンロック --> Buy[購入
100pt消費] GCard -- アンロック済 --> Mode{プレイモード} Buy --> Mode Mode --> Random[ランダム] Mode --> Sequential[順番通り] Mode --> Continued[続きから] Random --> Play[GenreQuizPlayView] Sequential --> Play Continued --> Play Play -- 開始時 --> Interstitial[Interstitial広告] Play -- 履歴 --> History[GenreQuizHistoryView] Play -- 進捗 --> Progress[GenreProgressView]

ショップ・課金経路

flowchart TD ThemeShop[ThemeShopView] --> ThemeCard{テーマ} ThemeCard -- 無料 --> Apply[適用] ThemeCard -- 有料 --> BuyTheme[200pt消費購入] BuyTheme --> Apply Premium[PremiumView] --> Plan{プラン選択} Plan -- 月額 --> SK1[StoreKit購入] Plan -- 年額 --> SK2[StoreKit購入] SK1 -- 成功 --> Refresh[premiumStatus更新] SK2 -- 成功 --> Refresh

主要な遷移トリガー

起点画面操作遷移先
HomeViewTabView スワイプ今日 ⇄ カレンダー
TipCardViewクイズボタンQuizView (.sheet)
HomeView設定ボタンSettingsView (.sheet)
HomeView動画ボーナスボタンRewarded広告 → +3pt
CalendarViewロック日タップ解放アラート → Rewarded広告
GenreQuizShopジャンル購入100pt消費 → アンロック
ThemeShopテーマ購入200pt消費 → 適用
PremiumViewプラン購入StoreKit → サブスク開始
SettingsViewキャッシュクリアUserDefaults初期化
Widget(Small)タップHomeView 起動

画面ID対応表

画面ID画面名ファイル
DT-HOME-01ホーム(TabView)Views/Home/HomeView.swift
DT-HOME-02豆知識カードViews/Home/TipCardView.swift
DT-HOME-03お気に入り一覧Views/Home/FavoritesView.swift
DT-HOME-04共有カードViews/Home/ShareCardView.swift
DT-CAL-01カレンダーViews/Calendar/CalendarView.swift
DT-QUIZ-01豆知識クイズViews/Quiz/QuizView.swift
DT-GQS-01ジャンルクイズショップViews/GenreQuizShop/GenreQuizShopView.swift
DT-GQS-02ジャンルクイズプレイViews/GenreQuizShop/GenreQuizPlayView.swift
DT-GQS-03ジャンルクイズ履歴Views/GenreQuizShop/GenreQuizHistoryView.swift
DT-GQS-04進捗ダッシュボードViews/GenreQuizShop/GenreProgressView.swift
DT-TH-01テーマショップViews/ThemeShop/ThemeShopView.swift
DT-PRM-01Premium購入Views/Premium/PremiumView.swift
DT-SET-01設定Views/Settings/SettingsView.swift
DT-SET-02プライバシーポリシーViews/Settings/PrivacyPolicyView.swift
DT-WID-01SmallTipWidgetDailyTipsWidget/SmallTipWidget.swift
DT-WID-02MediumCalendarWidgetDailyTipsWidget/MediumCalendarWidget.swift

変更履歴

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