sentry-ios-swift-setup について
Swift または SwiftUI の iOS プロジェクトに Sentry を導入するためのセットアップスキルです。監視設定、セッションリプレイ、トラブルシューティングを開発者向けに案内します。
主な機能
- 01Swift Package Manager と CocoaPods による導入
- 02SwiftUI と UIKit の初期化設定
- 03エラー、トレース、ログの設定
- 04セッションリプレイとコンテンツのマスキング
- 05パフォーマンスとネットワークの自動取得
- 06Fastlane によるビルドサイズ分析
活用シーン
- 01SwiftUI または UIKit アプリへの Sentry 導入
- 02iOS のエラーとパフォーマンス監視の設定
- 03セッションリプレイと機密コンテンツのマスキング
- 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(推奨)
- File > Add Package Dependencies
- 次を入力します:
https://github.com/getsentry/sentry-cocoa.git - バージョンルールとして、
9.5.0からの「Up to Next Major」を選択します
SPM プロダクト: ニーズに応じて選択してください。
| プロダクト | 用途 |
|---|---|
Sentry | デフォルト(静的リンク) |
Sentry-Dynamic | 動的フレームワーク |
SentrySwiftUI | SwiftUI ビューのパフォーマンス追跡 |
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
}
}
設定オプション
| オプション | 説明 | デフォルト |
|---|---|---|
dsn | Sentry DSN | 必須 |
tracesSampleRate | トレースするトランザクションの割合 | 0 |
sessionReplay.sessionSampleRate | リプレイするセッションの割合 | 0 |
sessionReplay.onErrorSampleRate | リプレイするエラー発生セッションの割合 | 0 |
enableLogs | ログを Sentry に送信 | false |
attachScreenshot | エラー発生時にスクリーンショットを添付 | false |
attachViewHierarchy | エラー発生時にビュー階層を添付 | false |
自動計測される機能
| 機能 | 取得されるデータ |
|---|---|
| アプリの起動 | コールド/ウォームスタートの所要時間 |
| ネットワーク | URLSession のリクエスト |
| UI | UIViewController の読み込み、ユーザー操作 |
| ファイル 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 を確認し、組織/プロジェクトのスラッグを確認します |