基本方針
print() は禁止。Logger(os.log)を使用する(CLAUDE.md準拠)。
共通設定
import OSLog
private static let subsystem = "com.happyboy1002.WorkoutDiary"
カテゴリ一覧
| カテゴリ | 用途 | 使用箇所 |
App | アプリ起動・初期化 | WorkoutDiaryApp |
Migration | SwiftDataマイグレーション | AppDelegate |
StoreManager | サブスク課金 | StoreManager |
RewardedAd | リワード広告 | RewardedAdManager |
BannerAd | バナー広告 | BannerAdView |
UpdateChecker | App Storeバージョン確認 | AppUpdateChecker |
Notification | 通知スケジューリング | NotificationService |
Achievement | 実績・バッジ | AchievementService |
PR | 自己ベスト検出 | PRDetector |
Share | シェアカード生成 | ShareViewModel |
Onboarding | オンボーディング | OnboardingViewModel |
Widget | Widget拡張 | WidgetSharedData |
使用例
private static let logger = Logger(
subsystem: "com.happyboy1002.WorkoutDiary",
category: "StoreManager"
)
logger.info("商品取得完了: \(products.count, privacy: .public)件")
logger.warning("購入処理キャンセル")
logger.error("検証失敗: \(error.localizedDescription)")
ログレベルの使い分け
| レベル | 用途 | 例 |
.debug | 開発時のみ | VM初期化、画面遷移 |
.info | 通常イベント | セット追加、PR検出 |
.notice | 注目すべきイベント | 初回起動、サブスク購入 |
.warning | 異常だが継続可 | 広告ロード失敗、Continuationリセット |
.error | 機能継続不可 | SwiftData保存失敗、StoreKit検証失敗 |
プライバシー対応
StoreKit のトランザクションID、Apple ID、デバイス識別子は ログ出力しない。
識別子(種目ID、セットID)は privacy: .public を明示。
変更履歴
| バージョン | 日付 | 変更内容 |
| 1.0 | 2026-05-09 | 初版作成 |