目的・役割

選択した日付のトレーニングセッションを表示・編集する画面。種目ごとにセットを追加し、PR検出・テンプレート適用・インターバルタイマー・シェアを操作できる。アプリの主機能画面。

UI 構成

要素種類説明
日付セレクタDatePicker編集対象の日付選択
セッションリストListその日の WorkoutSet(種目ごとグループ)
セット追加ボタンButtonAddWorkoutView を sheet 表示
テンプレート適用ボタンButtonTemplateListView を sheet 表示
インターバルタイマーButtonIntervalTimerView を sheet 表示
PR祝賀OverlayPR検出時に演出
シェアボタンToolbarWorkoutShareSheet 起動

状態

状態表示内容
記録なし「セットを追加して記録を始めましょう」
記録あり種目別グループのリスト
PR検出PR祝賀演出 + Paywall(POST-PR、v1.0.5)

遷移

操作遷移先
セット追加AddWorkoutView (sheet)
セルタップEditWorkoutSetView (sheet)
テンプレート適用TemplateListView (sheet)
テンプレ保存SaveTemplateView (sheet)
インターバルタイマーIntervalTimerView (sheet)
シェアWorkoutShareSheet (sheet)
PR検出 → PaywallPaywallView

使用するデータモデル

@Model final class WorkoutSession {
    var id: UUID
    var date: Date
    var note: String?
    @Relationship(deleteRule: .cascade, inverse: \WorkoutSet.session)
    var sets: [WorkoutSet] = []
}

@Model final class WorkoutSet {
    var id: UUID
    var exercise: Exercise?
    var weight: Double
    var reps: Int
    var order: Int
    var session: WorkoutSession?
    var duration: Double  // 有酸素分
    var distance: Double  // 有酸素km
}

実装メモ

関連

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成