基本方針

print() は禁止Logger(os.log)を使用する(CLAUDE.md準拠)。

共通設定

import OSLog

private static let subsystem = "com.happyboy1002.WorkoutDiary"

カテゴリ一覧

カテゴリ用途使用箇所
Appアプリ起動・初期化WorkoutDiaryApp
MigrationSwiftDataマイグレーションAppDelegate
StoreManagerサブスク課金StoreManager
RewardedAdリワード広告RewardedAdManager
BannerAdバナー広告BannerAdView
UpdateCheckerApp Storeバージョン確認AppUpdateChecker
Notification通知スケジューリングNotificationService
Achievement実績・バッジAchievementService
PR自己ベスト検出PRDetector
Shareシェアカード生成ShareViewModel
OnboardingオンボーディングOnboardingViewModel
WidgetWidget拡張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.02026-05-09初版作成