
2026/07/14 20:06
Show HN: Rejourney – Web およびモバイルアプリ向けのオープンソース収益漏洩予測ツール
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Rejourney は、Web およびモバイルのユーザージャーニーにおける重大な問題(クラッシュ、ANR、レイテンシなど)を能動的に検出・解決することを目的としたオープンソースプラットフォームです。これらの問題は収益やコンバージョン率に影響を与えます。同システムはセッションリプレイと深い技術的文脈(API エラー、リクエスト失敗、 rage taps などの特定のインタラクションデータ)を組み合わせています。類似したセッションをコホートにグループ化することで、GitHub リポジトリとの統合時に直接のコード修正を提案できる実行可能なレポートを提示します。
プラットフォームは低いパフォーマンスオーバーヘッドが特徴で、モバイルキャプチャにおけるメインスレッドでのベンチマーク平均値が 12.4ms と報告されています。Next.js、React Native、Swift といった複数のフレームワークにおいて、PostHog よりも優れた性能を発揮しています。対応するモダンなフレームワークとしては Next.js、React Native(ネイティブコードの要件あり)、iOS/Swift アプリがあり、保持率や収益などのビジネスメトリクス向けの広範なアナリティクス連携を提供します。
重要な点として、Rejourney はプライバシーを優先しており、組み込みされた同意コントロール、サンプリングオプション、データマスキングを搭載しています。ユーザーデータは自動的に 7 日間の保持期間後には匿名化され、長期的なコンプライアンスが確保されます。ライセンスモデルは二重構造であり、クライアントサイドの SDK と CLI は Apache 2.0 ライセンスを採用し、サーバーサイドバックエンドとダッシュボードコンポーネントは SSPL 1.0 ライセンスを採用しています。
本文
『Silly Demo (猫あり)』:ユーザを失う前に、コンバージョン上の不具合を発見・修正しましょう
Rejourney は、Web サイトやモバイルアプリにおいてコンバージョン率低下、リテンション悪化、あるいは収益損失に発展する前の段階で、ユーザージャーニーの課題を特定するためのオープンソースプラットフォームです。
セッション再生機能と、貴社定義のビジネスイベントに加え、API 失敗やクラッシュ、ANR(アプリの応答停止)といった技術的情報を組み合わせることで、調査に値するパターンを浮き彫りにします。
対応プラットフォーム
仕組み
- Web アプリケーション、Swift、または React Native アプリケーションに Rejourney SDK をインストールします。
- ビジネスにとって最も重要な数少ない製品イベント(登録完了、サブスクリプション購入、成功したチェックアウトなど)を「重要なコンバージョンイベント」として追跡します。
- Rejourney が周囲のユーザージャーニーやインタラクションデータを記録し、セッションからのイベントおよび技術シグナルと関連付けます。
- 似たようなセッションはコホート(集団)にグループ化され、重要イベント周辺で懸念される傾向がある場合、再生映像と証拠を分析のために提示します。
- 最終的に、開発ワークフローに活用するための推奨修正策も含まれる不具合報告書が生成されます。GitHub リポジトリ連携により、コードのコンテキストと提案された変更も追加可能です。
Rejourney が収集する内容
Rejourney は、重視する結果(アウトカム)に対して、それ以前に何が起きたかを関連づけます。収集されるデータには以下が含まれます:
- セッション、ルート/スクリーン、インタラクション、およびイベントの文脈
- タップ、スワイプ、ドラッグなどの動作
- 繰り返されたタップや「怒りの連打(rage taps)」のような素早い操作
- ユーザージャーニーの順序
収集データの詳細カテゴリー
- 再生映像、ジャーニー、インタラクションパターン
- セッション再生機能により、特定の利用者がフローを通じて実際にとどった経路を視覚化できます。
- ジャーニーマップやヒートマップを用いて、ループの特定や、ユーザーが混乱するインターフェース部分の特定が可能です。
- API、クラッシュ、安定性情報
- エンドポイントビューはレイテンシ、エラー、ステータスコードの構成を示します。
- クラッシュと ANR の詳細には、アプリバージョン、デバイス、実行コンテキストが含まれ、破損したフローと技術的な状況を結び付けます。
- デバイスおよび地理的コホート
- アプリバージョン、OS、デバイス、地理的位置などでフィルタリングすることで、性能劣化の範囲(全体的か特定のリリース/デバイス/地域に限定か)を区別できます。
- 分析および収益に関する文脈
- プロジェクトレベルの分析(導入率、エンゲージメント、安定性など)と並置されます。
- 収益連携がある場合、トランザクションやトレンドも表示されます。
画像をクリックするとフル解像度のキャプチャを確認できます。
重要なコンバージョンイベントの追跡
インテンション(意図)を確立し、成功した結果をもたらすアクションに関する安定したドメインレベルのイベントを追跡します。 例えば、チェックアウトフローでは以下のイベントを使用可能です。
Rejourney.logEvent('checkout_started', { orderId: 'order_123', amount: 49, currency: 'USD', }); Rejourney.logEvent('purchase_completed', { orderId: 'order_123', transactionId: 'txn_456', amount: 49, currency: 'USD', });
- Rejourney はこれらイベントを用いて、似たようなセッション間のジャーニーと結果を比較します。
- 重要: 報告されたパターンは調査の出発点ですが、因果関係の証明ではありません。
- 修正をデプロイする前に、代表例となる再生映像を確認し、権限のある製品状態または決済状態を見極める必要があります。
すばやい統合
Web
npm install @rejourneyco/browser
import { Rejourney } from '@rejourneyco/browser'; await Rejourney.init('pk_live_your_public_key'); await Rejourney.start();
- 同意設定: Web サイトで同意が必要な場合は、同意取得後に
を呼び出してください。start() - ドメイン許可: プロジェクト設定の「許可されたドメイン」にアプリケーションドメインを追加することを忘れずに;許可されないと Web 録画は開始されません。
- 詳細は Web の入門 を参照してください。
React Native
npm install @rejourneyco/react-native
import { Rejourney } from '@rejourneyco/react-native'; Rejourney.init('pk_live_your_public_key'); Rejourney.start();
- 制約: ネイティブコードが必要であり、Expo Go 上では動作しません。
- ナビゲーション追跡、セッションコントロール、イベント命名、プライバシー設定の詳細は React Native の入門 を参照してください。
Swift (iOS)
Xcode で「ファイル」→「パッケージ依存関係を追加」を選択し、以下のリポジトリを追加します:
https://github.com/rejourneyco/rejourney
- 要件: iOS 15.1 また後以降が必要です。
import SwiftUI import Rejourney @main struct MyApp: App { @MainActor init() { Rejourney.configure(publicKey: "rj_your_public_key") Task { await Rejourney.start() } } var body: some Scene { WindowGroup { ContentView() } } }
- スクリーン追跡、アイデンティティ、イベントキャプチャ、録画コントロールの詳細は iOS の入門 を参照してください。
プライバシーとデータ処理
ユーザセッション記録におけるプライバシーは核心的な考慮事項です。以下の設定で製品に合わせて構成してください:
- 同意取得設定
- キャプチャ制御
- サンプリング
- 許可されたドメイン
- マスキング
送信してはいけない情報: イベントやログに、PII(個人識別情報)、認証情報、決済データ、機密情報、または機微なアプリケーションペイロードを含めないでください。
- 保持期間: Rejourney は短命な録画を設計しています(一般的には 7 日)。
- 匿名化プロセス: 保持ウィンドウが経過した後、録画は量化され、フィンガープリントは匿名化されます。データは一般ダッシュボード分析用に集約されます。
- コンプライアンス: GDPR や貴社のプライバシー規制を満たすよう、設定とポリシーを確認してください。
パフォーマンス測定
Web ベンチマーク結果
チェックインされた Web ベンチマークでは、同じスクリプトフローをローカルの Next.js、SvelteKit、Nuxt フラグメント上で Rejourney ブラウザ SDK と PostHog を比較しました。
- 測定項目:SDK のキャプチャオーバーヘッド(不具合検出精度やレイテンシ SLA は測定対象外)
| フレームワーク | フラグメント | Rejourney アップロード | PostHog アップロード | Rejourney タスク時間 | PostHog タスク時間 |
|---|---|---|---|---|---|
| Next.js | 21.29 KiB | 45.35 KiB | 417.96 ms | 449.91 ms | |
| SvelteKit | 8.38 KiB | 24.99 KiB | 268.72 ms | 304.03 ms | |
| Nuxt | 8.40 KiB | 26.57 KiB | 305.51 ms | 322.24 ms |
注:公開された実行結果は Chromium 1365×768 で実施。各フレームワークにつき 3 回の反復を使用。結果を別のアプリケーションに適用する前に再実行することをお勧めします。
関連リソース: ベンチマーク README | 公開レポート | マスキング済み生データ | ベンチマークランナー
モバイル比較(パッケージフットプリント)
Sentry に対する Rejourney のパッケージサイズ測定結果です。
| パッケージ | バージョン | ミニファイド (圧縮前) | Gzipped (gzip 圧縮後) |
|---|---|---|---|
| 1.0.17 | 39.7 kB | 13.2 kB |
| 8.7.0 | 403 kB | 135.3 kB |
ソース:Bundlephobia の @rejourneyco/react-native および @sentry/react-native から。
キャプチャ測定(実機環境)
- 環境: iOS 26、iPhone 15 Pro、Expo SDK 54、React Native ニューアーキテクチャ、Mapbox Metal、Firebase 採用の本番アプリケーション。
- 注記:
のみメインスレッド上で実行されます。他の測定はバックグラウンド。UIKit + Metal キャプチャ
| キャプチャ段階 | 平均 | 最大 | 最小 | 実行コンテキスト |
|---|---|---|---|---|
| UIKit + Metal キャプチャ | 12.4 ms | 28.2 ms | 8.1 ms | メインスレッド |
| 非同期画像処理 | 42.5 ms | 88.0 ms | 32.4 ms | バックグラウンド |
| Tar + gzip 圧縮 | 14.2 ms | 32.5 ms | 9.6 ms | バックグラウンド |
| アップロードハンドシェイク | 0.8 ms | 2.4 ms | 0.3 ms | バックグラウンド |
これらの測定値は記録されたワーク負荷を記述するものであり、一般的なモバイルパフォーマンス比較ではありません。
開発とデプロイ
- ローカル開発環境: ローカル Kubernetes 開発 から始めてください。
- 単一ノードセルフホスティング: セルフホストガイド をご参照ください。
- アーキテクチャ詳細: アーキテクチャドキュメント にあります。
ライセンス
| コンポーネント | ライセンス |
|---|---|
| クライアントサイド(SDK、CLI) | Apache 2.0 |
| サーバーサイド(バックエンド、ダッシュボード) | SSPL 1.0 |
LICENSE-APACHE および LICENSE-SSPL をご参照ください。