> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# bitdriftのモバイルセッションとClickStackトレースの相関付け

> モバイルテレメトリーをエクスポートせずに、OpenTelemetryのトレースコンテキストを使用して、bitdriftのモバイルセッションとClickStackのバックエンドトレースを相関付ける

export const PartnerBadge = () => {
  return <div className="PartnerBadge">
            <div className="PartnerBadgeIcon">
                <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                    <polyline points="12.5 9.5 10 12 6 11 2.5 8.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <polyline points="4.54 4.41 8 3.5 11.46 4.41" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <path d="M2.15,3.78 L0.55,6.95 A0.5,0.5 0,0,0 0.77,7.62 L2.5,8.5 L4.54,4.41 L2.82,3.55 A0.5,0.5 0,0,0 2.15,3.78 Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <path d="M13.5,8.5 L15.23,7.62 A0.5,0.5 0,0,0 15.45,6.95 L13.85,3.78 A0.5,0.5 0,0,0 13.18,3.55 L11.46,4.41 Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <path d="M11.5,4.5 L9,4.5 L6.15,7.27 A0.5,0.5 0,0,0 6.24,8.05 C7.33,8.74 8.81,8.72 10,7.5 L12.5,9.5 L13.5,8.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                    <polyline points="7.75 13.5 5.15 12.85 3.5 11.67" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1" />
                </svg>
            </div>
            パートナーインテグレーション
        </div>;
};

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<PartnerBadge />

<Info>
  **概要**

  このガイドでは、OpenTelemetry trace context を使用して、bitdrift のモバイルセッションを ClickStack にすでに保存されているバックエンドトレースと相関付ける方法を説明します。モバイルテレメトリーは bitdrift 内に保持され、ClickStack にエクスポートされることはありません。以下の方法を学びます。

  * モバイルアプリで bitdrift のネットワークおよびトレーシングインテグレーションを有効にする
  * bitdrift テナントのトレーシングを有効にし、ディープリンクのリンク先を ClickStack インスタンスに設定する
  * bitdrift のモバイルセッションから trace ID をたどり、ClickStack UI (HyperDX) で確認する

  bitdrift はモバイルデバイス上で豊富な非サンプリングのテレメトリーを収集します。一方、ClickStack は、リクエストが OpenTelemetry でインストルメントされたサービスに到達すると、バックエンドトレースを保存してクエリします。

  所要時間: 10～15 分
</Info>

<div id="what-is-bitdrift">
  ## bitdrift とは？
</div>

[bitdrift](https://bitdrift.io/) は、モバイルアプリケーション向けに特化して設計された動的なオブザーバビリティプラットフォームです。主なコンポーネントは 3 つあります。

* **[Capture SDK](https://bitdrift.io/feature/performance-centric)**：Rust で構築され、プラットフォーム固有の薄いラッパーを備えた軽量なクロスプラットフォームライブラリです。テレメトリーを即座にストリーミング送信するのではなく、デバイス上の固定サイズのリングバッファに書き込みます。
* **コントロールプレーン**：すべてのクライアントとの永続的な双方向接続を維持し、新しい設定をリアルタイムでプッシュします。収集対象とアップロード対象を決定します。
* **bitdrift プラットフォーム**：ワークフロー、セッションタイムライン、チャート、issue、アラートを通じて、モバイルテレメトリーから答えを得られます。web UI、CLI、AI agents、パブリック API からアクセスできます。

bitdrift はリクエストされるまでモバイルテレメトリーをエッジに保持するため、チームは固定の事前サンプリング済みシグナルセットに頼るのではなく、クラッシュやパフォーマンス上の問題につながった完全で未サンプリングのセッションを取得できます。bitdrift Capture プラットフォームは、bitdrift がホストする SaaS として、または AWS account 内の独自のクラウド (または bucket) にデプロイして利用できます。

<Image img="https://mintcdn.com/private-7c7dfe99/3mS6b88R0boYl1UC/images/clickstack/bitdrift/bitdrift-user-journey-dashboard.png?fit=max&auto=format&n=3mS6b88R0boYl1UC&q=85&s=def374455b33795e2574aa193e30ed41" alt="ANR に至る経路を示す bitdrift User Journey ダッシュボード" size="lg" width="2440" height="1160" data-path="images/clickstack/bitdrift/bitdrift-user-journey-dashboard.png" />

*ユーザーが ANR に至るまでの経路を示す bitdrift User Journey ダッシュボード。*

<div id="why-bitdrift-clickstack">
  ## bitdrift + ClickStack を選ぶ理由
</div>

ClickStack は、バックエンドサービス、Web フロントエンド、インフラストラクチャ全体のデータを収集、保存、クエリする、ClickHouse を基盤としたオブザーバビリティソリューションです。bitdrift は、この基盤を、多くの深刻な本番環境の問題が発生するモバイルデバイスまで拡張します。

* **bitdrift はデバイス上で何が起きたかを示します**: ユーザー操作、アプリの状態、ネットワークリクエスト、ログ、エラー、クラッシュ、パフォーマンスシグナル、および前後のセッションコンテキスト。
* **ClickStack はリクエストがバックエンドに到達した後に何が起きたかを示します**: 分散トレース、サービスの依存関係、ログ、メトリクス、データベース操作、インフラストラクチャの動作。
* **OpenTelemetry trace context が両者を結び付けます。**

調査は、bitdrift で検出された決済の失敗、画面読み込みの遅延、認証エラー、クラッシュから始まることがあります。エンジニアはネットワークリクエストから trace ID をたどり、HyperDX を基盤とする ClickStack UI で、分散したタイムスタンプを手作業で突き合わせることなく、リクエストがバックエンドサービス間をどのように移動したかを確認できます。

<Tip>
  **主なポイント**

  * **bitdrift** は、モバイルアプリ全体からサンプリングされていないモバイルネイティブのテレメトリーを収集し、取得した trace ID を対応するバックエンドトレースにリンクします。
  * **ClickStack** は、得られた分散トレースを ClickHouse に保存・クエリし、HyperDX に表示します。
</Tip>

<div id="prerequisites">
  ## 前提条件
</div>

* **ClickStack** がインストール済みで、セルフマネージドまたは ClickHouse Cloud 上でバックエンドサービスからアクセス可能であること。[Open Source ClickStack を使い始める](/docs/ja/clickstack/getting-started/oss) または [Managed ClickStack を使い始める](/docs/ja/clickstack/getting-started/managed)を参照してください。
* バックエンドサービスが **OpenTelemetry** でインストルメントされ、トレースを ClickStack に送信していること。[OpenTelemetry を使用した取り込み](/docs/ja/clickstack/ingesting-data/opentelemetry)を参照してください。
* モバイルアプリに **bitdrift Capture SDK** が統合されていること。インストール手順については、[bitdrift SDK ドキュメント](https://docs.bitdrift.io/)を参照してください。
* **bitdrift アカウント**を所有していること。テナントのトレーシングを有効にするには、[Support](https://bitdrift.io/contact-us)にお問い合わせください (トレーシングは bitdrift がテナントごとに有効化する実験的機能です) 。

<div id="configure-tracing">
  ## トレーシングを設定する
</div>

設定はすべて bitdrift 側で行います。手順は次の3つです。

1. [bitdrift Support](https://bitdrift.io/contact-us) に連絡し、**テナントのトレーシングを有効にし、ClickStack (HyperDX) インスタンスへのトレースのディープリンクを設定**してもらいます。ディープリンクの設定により、**View Trace** リンクのリンク先が ClickStack UI になります。この設定がない場合もトレースはキャプチャされますが、**View Trace** リンクは表示されません。
2. プラットフォーム用の **bitdrift ネットワークインテグレーションを有効に**し、送信リクエストでトレーシングヘッダーが伝播されるようにします。
3. **Start Tracing ワークフローアクションを追加**し、対象のセッションでトレーシングを有効にします。

各手順のプラットフォーム固有の詳細については、bitdrift ドキュメントの [How bitdrift and ClickStack work together](https://docs.bitdrift.io/product/integration-partners/clickhouse#how-bitdrift-and-clickstack-work-together) を参照してください。

設定後、bitdrift のタイムラインログの行と span ビューに、キャプチャされた trace ID を ClickStack UI (HyperDX) に渡す **View Trace** リンクが表示されます。

<Image img="https://mintcdn.com/private-7c7dfe99/3mS6b88R0boYl1UC/images/clickstack/bitdrift/bitdrift-view-trace.jpg?fit=max&auto=format&n=3mS6b88R0boYl1UC&q=85&s=1fc46073d05ada0d673c6c7e62033576" alt="ClickStack UI の分散トレースにリンクする bitdrift トレース" size="lg" width="3977" height="1292" data-path="images/clickstack/bitdrift/bitdrift-view-trace.jpg" />

*bitdrift セッションから **View Trace** リンクをたどって、ClickStack UI (HyperDX) の分散トレースを表示する例。*

<div id="deployment-flexibility">
  ## デプロイメントの柔軟性
</div>

このインテグレーションは、ClickStack をセルフマネージドで運用している場合でも、ClickHouse Cloud のマネージドサービスとして利用している場合でも機能します。これは、データが ClickStack に到達する経路を変更しないためです。bitdrift はモバイルテレメトリーを ClickStack にエクスポートするのではなく、デバイス上でリクエストの OpenTelemetry trace context をキャプチャし、自身で OpenTelemetry をインストルメントしたサービスがすでに ClickStack に送信しているバックエンドトレースにリンクします。bitdrift が **View Trace** リンクの生成に必要とするのは ClickStack UI (HyperDX) のアドレスだけであるため、ClickStack のデプロイメントやインジェストパイプラインを変更する必要はありません。

<div id="next-steps">
  ## 次のステップ
</div>

* モバイルアプリのクラッシュや遅いリクエストから、bitdrift を経由して ClickStack のバックエンドトレースに至る実際の調査をたどる
* モバイルアプリが依存するバックエンドサービス向けのダッシュボードを ClickStack (HyperDX) で作成する
* [bitdrift sandbox](https://bitdrift.io/sandbox) で Capture の使用感を確認する
* [無料トライアルを開始](https://bitdrift.io/signup)して、モバイルアプリに bitdrift を追加する

<div id="read-more">
  ## 関連情報
</div>

* [bitdrift ドキュメント: ClickHouse 連携](https://docs.bitdrift.io/product/integration-partners/clickhouse)
* [Open Source ClickStack を使い始める](/docs/ja/clickstack/getting-started/oss)
* [OpenTelemetry による取り込み](/docs/ja/clickstack/ingesting-data/opentelemetry)
