プライバシーポリシー
Tracebell(以下「本アプリ」「当方」)は、個人開発者が開発するSentry用の非公式iPhoneクライアントです。本ポリシーは、本アプリがあなたのデータをどう扱うかを正確に説明します。要点は次のとおりです。
- Sentryの認証トークンは端末の外に出ません。 トークンは端末のiOSキーチェーンにのみ保存され、iCloudに同期されず、当方のサーバーにも送信されません。
- アプリはSentryと直接通信します。 Issue・スタックトレース・プロジェクトのデータは、あなたの端末とSentry APIの間をHTTPSで直接やり取りされ、当方のサーバーを経由しません。
- 広告・トラッキング・アクセス解析はありません。 本アプリに広告、解析SDK、広告識別子、第三者トラッカーは含まれていません。
- サーバーは1つだけ、1つの機能のために。 プッシュ通知にのみ当方運営の中継サーバーを使います。保存するのは配信に必要な最小限の情報(§3)で、Sentryのトークンやイベント本文は保存しません。
- 購入はAppleとRevenueCatが処理します。 当方があなたの決済情報を見ることはありません。
- データを販売・貸与・交換することはありません。
1. 端末に保存される情報
本アプリが扱う情報のほとんどは、あなたのiPhoneの中にだけあります。
- Sentryの認証トークン(Sentryで作成しアプリに貼り付けたUser Auth Token)。iOSキーチェーンに「この端末のみ」の保護属性で保存され、iCloudキーチェーンには同期されません。アプリ本体・ウィジェット・通知拡張は、共有キーチェーンアクセスグループを通じてこのトークンを読み、それぞれが端末からSentry APIを直接呼び出します。
- 接続情報: サーバーのアドレス(sentry.ioまたはセルフホストのURL)と選択した組織。
- Sentryデータのキャッシュ(Issue一覧やプロジェクトの要約)。アプリとウィジェットを速く開くためにローカルに保持します。
- アプリの設定(表示設定や通知の絞り込みなど)。
- デモデータ: デモモードはアプリに同梱した架空のサンプルデータで、ネットワーク通信も実在のアカウントも使いません。
サインアウトすると、トークンとキャッシュ(ウィジェットや拡張が使う分も含む)が削除されます。
2. アプリはSentryと直接通信する
Issueの閲覧、スタックトレースの表示、Issueの解決などの操作では、アプリはあなたのトークンを使って端末からSentry
API(sentry.io・各リージョンのドメイン・セルフホストのサーバー)へHTTPSで直接アクセスします。この経路に当方のプロキシは存在しないため、あなたのIssue・イベント・スタックトレース・ソースコードの内容を当方が見ることはありません。Sentry自体の利用には、Sentryの利用規約とプライバシーポリシーが適用されます。
3. プッシュ中継サーバー(通知)
プッシュ通知だけは端末内で完結できません。SentryのWebhookには常時到達可能な宛先が必要で、iPhoneへの通知配信はAppleにしかできないためです。この1つの機能のために、小さな中継サーバー(Cloudflare Worker)を運用しています。通知をオンにしない限り、アプリが中継に登録することはありません。無料プランでも新規Issueの開始お知らせと週間サマリーが届き、Tracebell Advancedでは全イベントの即時配信とイベント種別の選択が加わります。中継が保存するデータはどちらのプランでも同じです。
3.1 中継が保存するもの
- 端末のAPNsデバイストークン。Appleが正しい端末に通知を届けるために必要です。
- Sentryの組織slug。通知にラベルを付け、アプリ内の正しいアカウントに振り分けるために使います。
- イベント種別の設定 — どの種類のイベント(新規Issue・再発・アラートなど)と、どのプロジェクト・レベルで通知するかの設定。
- Webhook用シークレット — あなた専用のWebhook URLに含まれるランダムなシークレット(ハッシュ化して保存)と、任意で登録した場合はインテグレーションの署名用シークレット。Webhookが本当にあなたのSentry組織から来たことの確認に使います。
- RevenueCatの匿名ユーザーID。Tracebell Advancedが有効かどうかの確認にだけ使うランダムな識別子です。有効かどうかで通知のプラン(無料: 開始お知らせと週間サマリー / Advanced: 全イベントの即時配信)が決まります。氏名やメールアドレスではありません。
3.2 中継が保存しないもの
- Sentryの認証トークン。 中継はトークンの写しを一切持たないため、あなたのSentryデータを閲覧することはそもそもできません。
- Webhookの本文。 SentryからWebhookが届くと、中継は通知の組み立てに必要な最小限(Issue ID・短縮ID・プロジェクト・レベル・イベント種別と、許可した場合のみ短縮したタイトル)だけを取り出し、本文は破棄します。本文をデータベースにもログにも書き込みません。
- プライベートモードでは通知の内容も。 「タイトルを中継に通さない」設定を選ぶと、プッシュにはIssueへの参照だけが含まれ、端末上の通知拡張がローカルのトークンでSentry APIからタイトルと詳細を取得してから表示します。
通知をオフにするかサインアウトすると、中継上の登録は削除されます。Advancedの購入が失効した場合は、無料の通知プランに戻ります。
4. 購入(RevenueCatとApple)
Tracebell Advancedと任意の投げ銭(チップ)はAppleのアプリ内課金で販売されます。購入状態の管理にはRevenueCatを使用します。RevenueCatが受け取るのは、アプリが生成した匿名ユーザーID、購入・サブスクリプションの状態、Appleからの標準的なレシート情報のみです。氏名・メールアドレス・決済情報はAppleの側にとどまり、当方にもRevenueCatにも渡りません。詳細はRevenueCatのプライバシーポリシーをご覧ください。
5. 第三者サービスの一覧(これで全部です)
| サービス | 目的 | 受け取るもの |
|---|---|---|
| Sentry(あなた自身のアカウント) | 本アプリが接続するサービスそのもの | あなたのトークンで端末から直接行われるAPIリクエスト |
| Apple(APNs・App Store) | プッシュ配信と購入処理 | プッシュトークンと通知ペイロード、購入の処理 |
| RevenueCat | サブスクリプション管理 | 匿名ユーザーIDと購入状態 |
| Cloudflare | プッシュ中継と本サイトのホスティング | §3.1の中継データ。本サイトについては標準的なWebサーバーのログ |
以上がすべてです。アクセス解析、クラッシュレポートの外部送信、広告ネットワーク、データブローカーはありません。
6. App Storeのプライバシー表示でいうと
Appleのプライバシー「栄養成分表示」でいえば、収集するデータは 識別子(APNsプッシュトークンとRevenueCatの匿名ユーザーID)と 購入(サブスクリプションの状態)、および§3.1に記載した組織slugと通知設定で、いずれもアプリの機能のためだけに使います。Appleの定義する「トラッキング」には一切使用せず、当方が実世界の身元と結び付けることもなく、データブローカーへの共有もありません。
7. セキュリティ
- トークンはiOSキーチェーンに「この端末のみ」の属性で保存されます(iCloud同期なし)。
- 通信はすべてHTTPSです。
- 中継へのWebhook配信は利用者ごとのシークレットURLで認証し、任意でインテグレーションの署名シークレットによる検証も行います。
- Sentryのパスワードを尋ねることはなく、当方がアクセスすることもできません。
8. データの保持期間
- 端末上のデータは、サインアウトまたはアプリの削除まで保持されます。
- 中継上の登録は、通知をオフにするかサインアウトした時点で削除されます。
- 中継は通知内容のログを保持しません。
- 購入記録はAppleとRevenueCatがそれぞれのポリシーに基づいて保持します。
9. あなたの選択肢
- 通知: アプリ内でいつでもオフにできます。オフにすると中継上の登録が削除されます。
- プライベート通知モード: Issueのタイトルを中継に一切通さない設定を選べます(§3.2)。
- トークン: Sentryのアカウント設定からいつでも失効できます。失効すると本アプリは即座にアクセスできなくなります。
- ローカルデータ: サインアウトで消去できます。
10. 子どものプライバシー
本アプリは開発者向けのツールであり、13歳未満の子どもを対象としていません。13歳未満の子どもから意図的に情報を収集することもありません。
11. 変更
本ポリシーを変更する場合は、このページ冒頭の日付を更新します。重要な変更はアプリのリリースノートでもお知らせします。
12. お問い合わせ
本ポリシーについての質問は oikon48@gmail.com までお送りください。