概要

SwiftDataの@Modelに新規プロパティを追加した際の互換性維持と、初期データの自動挿入を行う仕組み。 UserDefaults フラグで「一度だけ実行」を保証。

マイグレーション処理

処理UserDefaultsフラグ実行内容
migrateCategoryToRawValue()migratedCategoryローカライズ名 → rawValue 変換
insertDefaultExercises()hasInsertedDefaults初期種目を挿入
insertCardioDefaults()hasInsertedCardioDefaults有酸素デフォルト種目挿入
insertExpandedDefaults()hasInsertedExpandedDefaults拡張デフォルト種目挿入
insertDefaultTemplates()hasInsertedDefaultTemplates初期テンプレート挿入(目標・経験別)

処理フロー

  1. AppDelegate で SwiftData ModelContainer 初期化
  2. 各マイグレーションをチェック → 未実行なら実行
  3. 実行成功で UserDefaults フラグ true
  4. 失敗時は次回起動でリトライ

SwiftData @Model のデフォルト値

すべての @Model クラスのプロパティにデフォルト値必須。新規追加時は必ずデフォルト値を設定する。CLAUDE.md準拠。
@Model final class Exercise {
    var memo: String = ""             // ★デフォルト値
    var useCardioInput: Bool = false  // ★デフォルト値
}

ビジネスルール

変更履歴

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