mcpField
S
sentry-ios-swift-setup

sentry-ios-swift-setup

github.com/getsentry開発2597 回インストール35 週間前に更新
リポジトリ

sentry-ios-swift-setup について

Swift または SwiftUI の iOS プロジェクトに Sentry を導入するためのセットアップスキルです。監視設定、セッションリプレイ、トラブルシューティングを開発者向けに案内します。

主な機能

  1. 01Swift Package Manager と CocoaPods による導入
  2. 02SwiftUI と UIKit の初期化設定
  3. 03エラー、トレース、ログの設定
  4. 04セッションリプレイとコンテンツのマスキング
  5. 05パフォーマンスとネットワークの自動取得
  6. 06Fastlane によるビルドサイズ分析

活用シーン

  1. 01SwiftUI または UIKit アプリへの Sentry 導入
  2. 02iOS のエラーとパフォーマンス監視の設定
  3. 03セッションリプレイと機密コンテンツのマスキング
  4. 04Fastlane によるビルドサイズデータのアップロード

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/getsentry/sentry-agent-skills --skill sentry-ios-swift-setup

インストール後、Claude Code で/sentry-ios-swift-setupを入力して読み込まれたか確認します。

詳細

Sentry iOS Swift のセットアップ

Swift と SwiftUI を使用する iOS プロジェクトに Sentry をインストールして設定します。

このスキルを使用する場面

  • ユーザーが Swift アプリへの「Sentry の追加」や「Sentry のインストール」を依頼した場合
  • ユーザーが iOS でのエラーモニタリング、トレーシング、セッションリプレイを希望する場合
  • ユーザーが「sentry-cocoa」や iOS のクラッシュレポートに言及した場合

重要: 以下の設定オプションとコードサンプルは例です。API やデフォルト設定は変更されている可能性があるため、実装前に必ず docs.sentry.io で確認してください。

要件

  • iOS 15.0+、macOS 12.0+、tvOS 15.0+、watchOS 8.0+

インストール

Swift Package Manager(推奨)
  1. File > Add Package Dependencies
  2. 次を入力します:https://github.com/getsentry/sentry-cocoa.git
  3. バージョンルールとして、9.5.0 からの「Up to Next Major」を選択します

SPM プロダクト: ニーズに応じて選択してください。

プロダクト用途
Sentryデフォルト(静的リンク)
Sentry-Dynamic動的フレームワーク
SentrySwiftUISwiftUI ビューのパフォーマンス追跡
Sentry-WithoutUIKitOrAppKitアプリ拡張機能または CLI ツール
CocoaPods
# Podfile
pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '9.5.0'

次に pod install を実行します。

設定

SwiftUI アプリ
import SwiftUI
import Sentry

@main
struct YourApp: App {
    init() {
        SentrySDK.start { options in
            options.dsn = "YOUR_SENTRY_DSN"
            options.debug = true
            
            // Tracing
            options.tracesSampleRate = 1.0
            
            // Profiling
            options.configureProfiling = {
                $0.sessionSampleRate = 1.0
                $0.lifecycle = .trace
            }
            
            // Session Replay
            options.sessionReplay.sessionSampleRate = 1.0
            options.sessionReplay.onErrorSampleRate = 1.0
            
            // Logs (SDK 9.0.0+; for 8.55.0-8.x use options.experimental.enableLogs)
            options.enableLogs = true
            
            // Error context
            options.attachScreenshot = true
            options.attachViewHierarchy = true
        }
    }
    
    var body: some Scene {
        WindowGroup { ContentView() }
    }
}
UIKit アプリ
import UIKit
import Sentry

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        SentrySDK.start { options in
            options.dsn = "YOUR_SENTRY_DSN"
            options.debug = true
            options.tracesSampleRate = 1.0
            options.enableLogs = true
        }
        return true
    }
}

設定オプション

オプション説明デフォルト
dsnSentry DSN必須
tracesSampleRateトレースするトランザクションの割合0
sessionReplay.sessionSampleRateリプレイするセッションの割合0
sessionReplay.onErrorSampleRateリプレイするエラー発生セッションの割合0
enableLogsログを Sentry に送信false
attachScreenshotエラー発生時にスクリーンショットを添付false
attachViewHierarchyエラー発生時にビュー階層を添付false

自動計測される機能

機能取得されるデータ
アプリの起動コールド/ウォームスタートの所要時間
ネットワークURLSession のリクエスト
UIUIViewController の読み込み、ユーザー操作
ファイル I/O読み取り/書き込み操作
Core Dataフェッチ/保存操作
フレーム低速およびフリーズしたフレームの検出

ロギング

let logger = SentrySDK.logger

logger.info("User action", attributes: [
    "userId": "123",
    "action": "checkout"
])

// Log levels: trace, debug, info, warn, error, fatal

セッションリプレイ

iOS 26+/Xcode 26+ に関する注意事項: Apple の Liquid Glass レンダリングによりマスキングの信頼性が損なわれるため、Xcode 26.0+ でビルドした場合、SDK 8.57.0+ は iOS 26.0+ でセッションリプレイを自動的に無効にします。iOS < 26 または Xcode < 26 では引き続きリプレイが機能します。強制的に有効にする場合(注意して使用してください):options.experimental.enableSessionReplayInUnreliableEnvironment = true。

マスキング
// SwiftUI modifiers
Text("Safe content").sentryReplayUnmask()
Text(user.email).sentryReplayMask()

ユーザーコンテキスト

let user = User()
user.userId = "user_123"
user.email = "[email protected]"
SentrySDK.setUser(user)

// Clear on logout
SentrySDK.setUser(nil)

検証

// Test error capture
SentrySDK.capture(message: "Test from iOS")

// Or trigger a test error
do {
    try someFailingFunction()
} catch {
    SentrySDK.capture(error: error)
}

本番環境の設定

SentrySDK.start { options in
    options.dsn = "YOUR_SENTRY_DSN"
    options.debug = false
    options.tracesSampleRate = 0.2  // 20%
    options.sessionReplay.sessionSampleRate = 0.1  // 10%
    options.sessionReplay.onErrorSampleRate = 1.0  // 100% on error
    options.enableLogs = true
}

サイズ分析(Fastlane)

Fastlane プラグインを使用して、Sentry でアプリバンドルのサイズを追跡します。

プラグインのインストール
bundle exec fastlane add_plugin fastlane-plugin-sentry
認証の設定
# Environment variable (recommended for CI)
export SENTRY_AUTH_TOKEN=your_token_here

または .sentryclirc を作成します(.gitignore に追加してください)。

[auth]
token=YOUR_SENTRY_AUTH_TOKEN
Fastfile のレーン
lane :sentry_size do
  build_app(
    scheme: "YourApp",
    configuration: "Release",
    export_method: "app-store"
  )

  sentry_upload_build(
    org_slug: "your-org",
    project_slug: "your-project",
    build_configuration: "Release"
  )
end
サイズ分析の実行
bundle exec fastlane sentry_size

アップロードが完了したら、Sentry UI で結果を確認できます。

トラブルシューティング

問題解決策
イベントが表示されないDSN を確認し、debug = true を有効にします
トレースがないtracesSampleRate を 0 より大きく設定します
リプレイがないsessionSampleRate を 0 より大きく設定し、SDK 8.31.1+ を確認します。iOS 26+/Xcode 26+ では、上記の Liquid Glass に関する注意事項を参照してください
ログがないenableLogs = true(SDK 9.0.0+)または experimental.enableLogs = true(SDK 8.55.0-8.x)を設定します
CocoaPods が失敗するpod repo update を実行し、iOS 15+ のターゲットを確認します
サイズのアップロードに失敗するSENTRY_AUTH_TOKEN を確認し、組織/プロジェクトのスラッグを確認します

コメント