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
主要な遷移トリガー
| 起点画面 | 操作 | 遷移先 |
| HomeView | TabView スワイプ | 今日 ⇄ カレンダー |
| 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-01 | Premium購入 | Views/Premium/PremiumView.swift |
| DT-SET-01 | 設定 | Views/Settings/SettingsView.swift |
| DT-SET-02 | プライバシーポリシー | Views/Settings/PrivacyPolicyView.swift |
| DT-WID-01 | SmallTipWidget | DailyTipsWidget/SmallTipWidget.swift |
| DT-WID-02 | MediumCalendarWidget | DailyTipsWidget/MediumCalendarWidget.swift |
変更履歴
| バージョン | 日付 | 変更内容 |
| 1.0 | 2026-05-09 | 初版作成(ソースコードからリバース) |