Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

Sentry

Sentry

Sentryは、エラーの追跡とパフォーマンスの監視のためのプラットフォームで、アプリの問題解決と継続的な学習に役立ちます。@amazon-devices/sentry__react-nativeライブラリは、VegaプラットフォームにSentry用のReact Native SDKを実装します。

この段階では、Sentry機能の一部はVega用に設定されていません。Vega開発者フォーラムで質問を投稿したり、問題を報告したりできます。

インストール

  1. package.jsonファイルにJavaScriptライブラリの依存関係を追加します。該当するReact Nativeバージョンのタブを選択してください。


    クリップボードにコピーしました。

     dependencies: {
         "@sentry/react-native": "npm:@amazon-devices/sentry__react-native@^1.0.21"
     }
    

    クリップボードにコピーしました。

     dependencies: {
         "@sentry/react-native": "npm:@amazon-devices/sentry__react-native@^2.0.0"
     }
    
  2. npm installコマンドを使用して、依存関係をインストールします。

アプリの最上位でSentryを初期化します。

Sentryを初期化するには、Sentry.init({...})メソッドを使用します。必須のパラメーターはdsnデータソース名の略)のみです。dsnはSentryプロジェクトの設定ページで確認できます。

クリップボードにコピーしました。


import * as Sentry from '@sentry/react-native';
import React from 'react';
import {View, Button, Text} from 'react-native';

// コンポーネントの外側の最上位でSentryを初期化します。
Sentry.init({
  // 環境変数SENTRY_DSNをプロジェクトのdsnとして設定します。
  // または、ここにインラインでDSNを記述します。
  dsn: process.env.SENTRY_DSN,
});

export function App() {
  const captureMessage = () => {
    // メッセージをSentryに直接送信します。
    Sentry.captureMessage('SentryAppDemoメッセージ');
  };

  const captureException = () => {
    // 例外をキャプチャしてSentryに送信します。
    Sentry.captureException(new Error('SentryAppDemoエラー'));
  };

  return (
    <View
      style={{
        backgroundColor: '#181a1b',
        padding: 32,
        flex: 1,
        flexDirection: 'column',
        gap: 16,
      }}>
      <Text style={{fontSize: 32, color: 'white'}}>Sentryの アプリ デモ</Text>
      <View style={{width: '25%'}}>
        <Button onPress={captureMessage} title="メッセージをキャプチャ" />
      </View>
      <View style={{width: '25%'}}>
        <Button onPress={captureException} title="例外をキャプチャ" />
      </View>
    </View>
  );
}

Sentryの初期化後、キャッチされない例外はすべてSentryによって自動的に検出されて報告されます。イベントを手動で送信する必要はありません。

Sentryイベントには、以下に示すように、Sentry.setContext()Sentry.setUser()を使用して情報を追加することもできます。

クリップボードにコピーしました。


import * as Sentry from '@sentry/react-native';
import React from 'react';
import {View, Button, Text} from 'react-native';

// コンポーネントの外側の最上位でSentryを初期化します。
Sentry.init({
  // 環境変数SENTRY_DSNをプロジェクトのdsnとして設定します。
  // または、ここにインラインでDSNを記述します。
  dsn: process.env.SENTRY_DSN,
});

export function App() {
  const setContext = () => {
    // Sentryイベントにカスタムデータを追加します。
    Sentry.setContext('ExampleContext', {
      category: 'ExampleCategory',
      message: 'ExampleMessage',
      level: 'info',
    });
  };

  const throwError = () => {
    // エラーをキャッチせずにスローします。これはSentryによって報告されます。
    throw new Error('SentryAppDemoでキャッチされないエラー');
  };

  return (
    <View
      style={{
        backgroundColor: '#181a1b',
        padding: 32,
        flex: 1,
        flexDirection: 'column',
        gap: 16,
      }}>
      <Text style={{fontSize: 32, color: 'white'}}>Sentryの アプリ デモ</Text>
      <View style={{width: '25%'}}>
        <Button onPress={setContext} title="コンテキストを設定" />
      </View>
      <View style={{width: '25%'}}>
        <Button onPress={throwError} title="エラーをスロー" />
      </View>
    </View>
  );
}

APIリファレンス

  • Sentry.init(options: ReactNativeOptions) - Sentryを初期化します。この呼び出し以降、すべてのエラーがSentryによって報告されます。Sentry.init()を呼び出す前にアプリがクラッシュしたり、キャッチされないエラーをスローしたりしても、それはSentryでキャッチされません。
  • Sentry.nativeCrash() - このメソッドはネイティブクラッシュをトリガーします。Vegaデバイスおよびシミュレーター上で動作することがテストにより確認されています。
  • Sentry.setUser(user: User) - ユーザーデータ(例:usernameemail)を設定します。このデータはSentryイベントに含まれます。
  • Sentry.setContext(contextKey: string, contextData: Object) - 渡されたcontextKeyの下に追加されるカスタムデータを設定します。このデータはSentryイベントに含まれます。
  • Sentry.flush() - すべてのSentryイベントが送信されるまで待機します。
  • Sentry.captureMessage(message: string) - メッセージイベントをキャプチャし、Sentryに送信します。
  • Sentry.captureException(exception: Error) - 例外イベントをキャプチャし、Sentryに送信します。

その他の構成

Sentryエラーに読み取り可能なスタックトレースを追加する

アプリをビルドしたら、アプリのリリース名、バージョン、およびdist番号をSentryに通知し、JavaScriptバンドルとデバッグファイルのソースマップを送信する必要があります。これにより、Sentryがイベントを検出し、情報を読み取り可能なスタックトレースに正しくマッピングできます。

アプリをビルドすると、フォルダ構造は以下のようになります。

├── sentrydemoapp
│   ├── build
│   │   ├── lib
│   │   │   ├── rn-bundles
│   │   │   │   ├── Debug # デバックビルドのパスを使用
│   │   │   │   ├── Release # リリースビルドのパスを使用
│   │   ├── x86_64-release
│   │   │   ├── debug # x86マシンのシミュレーターアプリのパスを使用
│   │   ├── armv7-release
│   │   │   ├── debug # Fire TV Stick向けのアプリのパスを使用
│   │   ├── aarch64-release
│   │   │   ├── debug # Mシリーズマシンのシミュレーターアプリのパスを使用
  1. Sentryの初期化時にリリースバージョンとdistバージョンを作成します。$SENTRY_RELEASE_VERSION(例:my-vega-project@2.3.12)と$SENTRY_DIST_NUMBER(例:52)を定義する必要があります。詳細については、Sentryの公式ドキュメント(英語のみ)を参照してください。
     Sentry.init({
       release: process.env.SENTRY_RELEASE_VERSION,
       dist: process.env.SENTRY_DIST_NUMBER,
     });
    
  2. Sentry Metro Serializerをmetro.config.jsに追加して、アプリを再ビルドします。

     ...
     const {createSentryMetroSerializer} = require('@sentry/react-native/dist/js/tools/sentryMetroSerializer');
     ...
    
     const sentryMetroSerializer = createSentryMetroSerializer()
    
     const config = {
       serializer: {
         customSerializer(entryPoint, preModules, graph, options) {
           return sentryMetroSerializer(entryPoint, preModules, graph, options)
         },
       },
     };
    
     module.exports = mergeConfig(getDefaultConfig(__dirname), config);
    
  3. sentry-cliをインストールします。詳細については、Sentryの公式ドキュメント(英語のみ)を参照してください。
     curl -sL https://sentry.io/get-cli/ | sh
    
  4. 新しいSentryリリースを作成します。以前に定義した$SENTRY_RELEASE_VERSIONを渡す必要があります。詳細については、Sentryの公式ドキュメント(英語のみ)を参照してください。
     sentry-cli releases new $SENTRY_RELEASE_VERSION
    
  5. JavaScriptシンボリケーションのソースマップをアップロードします。sentry-wizardがまだサポートされていないことに注意してください。詳細については、Sentryの公式ドキュメント(英語のみ)を参照してください。
    # Vegaアプリディレクトリ内
     # BUILD_TYPEはDebugまたはReleaseのいずれかです
     # デバッグIDを使用する場合、--releaseフラグと--distフラグはオプションです
     sentry-cli sourcemaps upload "build/lib/rn-bundles/$BUILD_TYPE" --release "$SENTRY_RELEASE_VERSION" --dist "$SENTRY_DIST_NUMBER"
    

Sentryに情報を送信すると、アプリでエラーが発生した場所に関する正確な情報を受け取ることができます。

実装の詳細

  • 現在、sentry-wizardSentry React Native Metro Pluginはサポートされていないことに注意してください。
  • @sentry /wizard - Vegaプロジェクトでは動作しません。
  • withSentryConfig metro tool - Vegaプロジェクトでは動作しません。
  • Tracingは実装されていません。
  • Profilingは実装されていません。

既知の問題

  • Vegaではランタイムエラーのキャプチャが機能しません。

既知の制限事項

API 現在の動作
Sentry.addBreadcrumb() 何も実行されません。
Sentry.init(options: ReactNativeOptions) 特定のオプションはサポートされていません。下のReactNativeOptionsの表を参照してください。
scope.setAttribute() 何も実行されません。
scope.setAttributes() 何も実行されません。

Sentry.init()でサポートされないオプション

Sentry.initオプション 現在の動作
options.enableNativeCrashHandling 現時点では無効化できません。
options.sessionTrackingIntervalMillis サポートされません。
options.enableNdk NDKはAndroidでのみ動作します。
options.enableNdkScopeSync NDKはAndroidでのみ動作します。
options.attachThreads Android専用のオプションです。
options.sendDefaultPii Android専用のオプションです。
options.enableAutoPerformanceTracing サポートされません。
options.enableAppStartTracking サポートされません。
options.enableNativeFramesTracking サポートされません。
options.profilesSampleRate サポートされません。
options.replaysSessionSampleRate サポートされません。
options.replaysOnErrorSampleRate サポートされません。
options.enableTombstone サポートされません。
options.enableWatchdogTerminationTracking iOS専用のオプションです。
options.enableAppHangTracking iOS専用のオプションです。
options.appHangTimeoutInterval iOS専用のオプションです。
options.attachScreenshot サポートされません。
options.attachViewHierarchy サポートされません。

サポートされているバージョン

NPMパッケージのバージョン Vega SDKバージョン Vega OSバージョン React Nativeバージョン
1.0.21 0.23以前 1.1以前 0.72
2.0.0 0.24 1.1.x 0.83

関連リソース

その他のライブラリについては、サポート対象のサードパーティのライブラリとサービスを参照してください。


Last updated: 2026年7月10日