事例紹介

Datadog が ProfilingManager を使用して数百万件の詳細なパフォーマンス分析情報を提供

所要時間: 4 分

パフォーマンスの低下は再現が非常に難しく、モバイル デベロッパーにとって大きなボトルネックとなっています。ANR 率などのシグナルは、本番環境で発生した問題の内容を示しますが、パフォーマンスの問題を引き起こした特定のコード行を特定するには、これまで徹底的な手動での再現や推測に基づく試行錯誤が必要でした。

Datadog は Google と協力して、ProfilingManager API(Android 15 以降のデバイスで利用可能)を Real User Monitoring(RUM)プラットフォームと Continuous Profiling プラットフォームに統合することで、この問題を軽減しました。この統合により、デバッグ ワークフローが変革され、デベロッパーは表面的な症状だけでなく、パフォーマンス ボトルネックの背後にある原因を検出できるようになります。

このシステムレベルの API を活用することで、Datadog は 2026 年 6 月の Datadog 内部データによると、世界中で毎週数百万件のプロダクション プロファイルを処理しています。これにより、エンジニアリング チームは、本番環境規模のパフォーマンス モニタリングのランタイム オーバーヘッドを低く抑えながら、実際のパフォーマンスを新たなレベルで可視化できます。

ProfilingManager の影響

ProfilingManager は、Android 15 で導入されたシステム サービスで、アプリがコールスタック サンプル、フィールド トレース、メモリヒープ ダンプなどのパフォーマンス データを本番環境から直接プログラムで収集できるようにします。この機能により、エンジニアリング パラダイムが事後対応の手動再現から事前対応のフィールド分析に移行します。

AANDDM_DataDog_Quote_01.png

たとえば、Google のコミュニケーション アプリでは、フィールド トレースを使用して、新しい高性能なハードウェアでコールド スタート時間が遅くなる原因を調査しました。エンジニアは、フィールドで収集されたトレースを詳しく調べ、さまざまなデバイスタイプでトレースを比較することで、隠れたスケジューリングの問題を発見しました。アプリの起動時に、バックグラウンドのテキスト読み上げサービスが不必要にプリウォームされていたのです。トレースから、このバックグラウンド プロセスがデバイスの最もパフォーマンスの高いビッグ CPU コアを独占し、プリウォームの実行中にアプリのメインスレッドをスリープ状態にしていたことがわかりました。

Android コードレベルの可視性の課題を解決する

ProfilingManager の実装前は、Datadog の Real User Monitoring(RUM)は、ユーザー ジャーニーを評価するために、アプリケーションの健全性とセッションレベルのテレメトリーに重点を置いていました。エンジニアリング チームは、初回表示までの時間、ANR 率、CPU 負荷、フリーズしたフレームなどの Android パフォーマンス シグナルをモニタリングできます。これらの分析情報は、ネットワーク レイテンシ、タッチイベント、メインスレッドのハングなどの詳細なインタラクションにまで及びます。ただし、このデータはフィールドで発生しているパフォーマンスのボトルネックを効果的に特定できましたが、これらの障害の根本原因を特定するための明確な方法を提供していませんでした。

AANDDM_DataDog_Quote_02.png

この問題を解決するために、Datadog は、パフォーマンスへの影響を最小限に抑えながら、本番環境のデバイスから Android トレースを直接キャプチャできるプロファイリング エンジンを必要としていました。Android Debug API を使用して独自のトレース プロセッサを作成するなど、代替アプローチを評価した結果、チームは ProfilingManager を選択しました。これは、評価したプロファイリング オプションの中で最もパフォーマンスの高いソリューションであり、サンプリングの決定オーバーヘッドを OS にオフロードするためです。

ProfilingManager は、CPU トレース、コールスタック サンプリング、Java ヒープダンプとネイティブ ヒープ プロファイルによるメモリ分析など、さまざまな収集方法をサポートしています。これにより、デベロッパーは本番環境ビルドのプロファイリング、トレース ファイルの外部ストレージへのアップロード、Perfetto トレース アナライザ UI での確認を行うことができます。SaaS プロバイダである Datadog は、SDK を介して収集されたこれらのプロファイルをアップロード、可視化、分析し、アプリケーションの健全性に関する全体像を提供します。

ProfilingManager は、高忠実度のテレメトリーを統合された可観測性 API 内で一元化することで、Datadog とそのクライアントが、次の主な技術的利点を活用して、複雑な Android パフォーマンスの回帰をプロアクティブにモニタリング、調査、修正できるようにします。

  • きめ細かいセッション診断: ProfilingManager は、OS レベルのトレースデータを直接提供することでデバッグの容易性を高め、システム サービスによるカスタム ロギングでよくある可視性と整合性の問題を解決します。さらに詳しく調べるために、デベロッパーは Datadog からこれらのトレースをダウンロードして、Perfetto UI などの可視化ツールでさらに調査できます。
  • 自動テレメトリー トリガー: ネイティブ システム イベントを活用して、主要な最適化ポイントでトレース記録を開始することで、Datadog はカスタム収集ロジックを構築する必要性を軽減します。最初のロールアウトでは APP_FULLY_DRAWN シグナルに重点が置かれていますが、すでに ANROOMCOLD_START トリガーを含めるようにオブザーバビリティを拡大する計画があります。
  • プロアクティブなトレース スナップショット: ProfilingManager は、システムレベルの Perfetto サービス(traced)と直接やり取りすることで、予測不可能な問題をキャプチャするように設計されたプロアクティブなバックグラウンド記録モデルを利用します。これにより、デベロッパーはパフォーマンスの異常につながるイベントを正確に可視化し、手動の計測では得られないレベルの分析情報を取得できます。
  • 大規模なボトルネック検出: Datadog は、Datadog のグローバルな顧客ベース全体からテレメトリーを合成し、独自のハードウェア構成と可変ネットワーク環境でのみ発生する回帰を検出できます。
  • システムで強制されるリソースの安定性: API はサンプリング トレース収集を活用して、パフォーマンスとユーザー エクスペリエンスへの影響が目立たないようにします。
  • デバイス上のデータ制御: ProfilingManager は、プロファイルがアプリに配信される前に、デバイス上の他のプロセスから無関係な情報をフィルタします。これにより、ファイルサイズが最小限に抑えられ、アプリのプロセスに関連するデータのみが提供されます。

毎週数百万のプロファイルを処理して、実際のアプリを最適化

datadog-profiling-blogpost-final.png
ProfilingManager を利用したスタック サンプリングによる Datadog の初期表示までの時間の測定の例

システムレベルのプロファイリング API をグローバル モニタリング SDK に統合するには、インフラストラクチャの課題を解決する必要がありました。ProfilingManager は非常に詳細なパフォーマンス トレースを生成するため、Datadog エンジニアリング チームは、サーバーサイドでこれらのプロファイルを大規模に解析して分析できるパイプラインを構築する必要がありました。プロファイルの収集だけでなく、Datadog は、サンプリング頻度と、アプリケーションに関する有意義な分析情報を生成するのに十分なデータの収集のバランスを取ることの重要性も強調しています。Datadog は、ProfilingManager の組み込みレート制限を重要な安定性保護として使用し、過剰なテレメトリー リクエストがユーザーのデバイスに過負荷をかけるのを防いでいます。

チームは、Datadog 独自のネイティブ Android アプリケーションと、早期導入者のアプリケーションのプロファイリングを数か月にわたって実施し、数百万件のプロファイルを収集して、迅速でエラーのないリリース エクスペリエンスを確保し、パフォーマンス検出アルゴリズムを改良しました。現在、本番環境の統合は、さまざまな Android デバイスにわたってシームレスにスケーリングされます。

まとめ

Android の ProfilingManager API を統合することで、Datadog はバックエンド システムとモバイル クライアント アプリケーション間の可視性のギャップを解消し、顧客の成功に貢献しました。Datadog は、デバイスのオーバーヘッドを最小限に抑えながら、毎週数百万のプロファイルを処理することで、Android デベロッパーが複雑なパフォーマンス バグを瞬時に診断するために必要なコードレベルの分析情報を取得できるようにします。これにより、デベロッパーはよりスムーズなアプリケーションを構築し、Google Play ストアでのアプリのパフォーマンス シグナルを改善できます。ProfilingManager API をパフォーマンスのオブザーバビリティ フレームワークに直接導入するには、ドキュメントをご覧ください。

今後、Datadog は Android プロファイリング データをコーディング エージェントのファーストクラスの入力として、パフォーマンスのボトルネックを自律的に解決し、検出と修復間のフィードバック ループを閉じることを目指しています。Datadog は、Android プロファイリングをデベロッパーが幅広く利用できるように取り組んでいます。

ProfilingManager を利用した Datadog のリアルユーザー モニタリング機能の使用を開始するには、 Datadog Mobile Real User Monitoring をご覧ください。

作成者:
続きを読む