APM (Application Performance Monitoring) は、メトリクス収集、リクエストトレーシング、実時間エラー診断を含む、ソフトウェアのパフォーマンスを監視するための総合的なアプローチです。Gartner IT Glossary, 2024によると、APMは以下の3つの重要領域を組み合せています:ユーザーエクスペリエンス監視、アプリケーションアーキテクチャの障害検知、およびインシデントの深层診断のための実行データ分析です。
まとめ
APM (Application Performance Monitoring) は、ソフトウェアの動作データの収集、視覚化、分析を含むアプリケーションパフォーマンス管理の分野です。個々のメトリクス(CPU、メモリ)のポイント監視とは異なり、APMはホリスティックな視点を提供します:ユーザーの視点からのアプリケーションの動作、コンポーネントの相互作用、ボトルネックの発生場所です。
APMの概念は2010年代に、モノリスシステムからマイクロサービスアーキテクチャへの移行に伴って生まれました。サービスの数が10~15ユニットを超えると、伝統的な監視方法は機能しなくなりました—何らの特定のサービスがリクエスト全体を遅くさせているかを特定することが不可能だったからです。APMソリューションは、ディストリビューテッドトレーシングと自動サービスマップ構築によってこの問題を解決しました。
Grand View Research (2024)によると、APM市場は82億米ドルと評価され、年間11.5%の割合で成長しています。主な推進要因は、クラウドヘの移行、マイクロサービスの増加、モバイルアプリおよびウェブサービスにおけるユーザーエクスペリエンスの品質への要求の高まりです。
現代のAPMは、アプリケーションの状態の完全な画像を形成する、3つのタイプのデータに基づいています。メトリクスは数値統計です:応答時間、リクエスト数、エラー率。これらは「何が起こっているか」という問いに答え、スレッショルド値に基づいてアラートを設定できます。
トレーシング(ディストリビューテッドトレーシング)は「なぜこれが起こっているのか」という問いに答えます。各入力リクエストは、すべてのマイクロサービス、データベース、外部コールを跡だってトレースされます。APMシステムはメトリクスとトレーシングを組み合せます:応答時間のメトリクスが上昇した場合、開発者はトレースダッシュボードに移動し、各サービスごとに内訳された、遅延を引き起こした正確なリクエストを確認できます。
ログは文脈を提供します—特定のエラーメッセージ、変数の値、コールスタックなどです。現代のAPMプラットフォーム(Datadog、New Relic、Grafana)は、共通のtrace_idを通じてログとトレースを連結し、メトリクグラフから特定のリクエストログへの移動を可能にします。Datadog (2025)によると、ログとトレースの相関関係により、インシデントの平均診断時間が45分から12分に縮小されます。
| シグナル | 問い | 単位 |
|---|---|---|
| メトリクス | 何が起こっているか? | 数値統計 |
| トレーシング | なぜこれが起こっているのか? | Spansとtraces |
| ログ | 正确に何が悪かったのか? | テキスト記録 |
クラシックなAPMアーキテクチャは、3つのレベルから構成されます:エージェント、コレクタ、バックエンドです。エージェントは、アプリケーションに組み込まれたライブラリ、またはその横で実行されるライブラリ(サイドカー)です。エージェントは入力と出力のコールを拦って、ランタイムデータを収集し、安全なチャネルを通じてコレクタに送信します。
Java用APMエージェントは、JVMレベルでjavaagentを通じて接続し、すべてのHTTPリクエスト、データベースコール、メッセージキュー、外部APIを自動的にインストゥルメンティングできます。モバイルプラットフォームでは、エージェントはSDKとして接続し、デバイスからメトリクスを収集します。Android用のNew Relic Agentは、例えばOkHttp、HTTPクライアント、WebViewを通じてすべてのネットワークリクエストを自動的にトレースします。
import com.newrelic.agent.android.NewRelic;
public class MainApplication extends Application {
public void onCreate() {
super.onCreate();
NewRelic.withApplicationToken("YOUR_TOKEN")
.start(this);
}
}
このコードは、AndroidアプリケーションでNew Relic Agentを初期化します。起動後、エージェントは各画面の追加のインストゥルメンテーションなしに、ネットワークリクエストメトリクス、エラー、ANR、UIパフォーマンスデータを自動的に収集します。エージェントはバックグラウンドスレッドで実行され、主なアプリケーションインターフェイスのパフォーマンスに影響を与えません。
コレクタは数千のエージェントからデータを受信し、メトリクスを凝集し、トレースのサンプリングを行い、ホットストレージとコールドストレージの両方で長期保存します。APMバックエンドは、ダッシュボード、アラート、サービスマップ、および外部システム(Slack、PagerDuty、Jira、ServiceNow)との統合のためのAPIを提供します。Datadogは、20か国以上の地域に設置されたコレクタを通じて、秒間で千万点以上のデータを処理し、最小限の送信遅延を実現しています。
Apdex (Application Performance Index) は、アプリケーションの応答時間に对するユーザー満足度を測るためのオープン標準です。Apdex値は次の式で計算されます:(満足しているユーザー数 + 容忍できるユーザー数 / 2)/ 総ユーザー数。結果は0から1の数値で、1はすべてのユーザーが満足していることを意味します。
Apdexのスレッショルドは、アプリケーションごとに個別に設定されます。モバイルアプリの場合、通常の満足スレッショルドは応答時間が1.5秒まで、容忍できるのが4.5秒までです。4.5秒を超えるものは、受け入れられないとみなされます。Apdexスコア0.94以上は、プロダクション環境において優れているとみなされます。
Apdexは、質のメトリクスだけでなく、アラートのスレッショルドとしても使用されます。Apdexが10分間にわたって0.85を下回った場合、APMシステムは当番チームに通知を送信します。これは、時間帯や負荷によって変動する可能性のある絶対値の応答時間に依存するよりも、よりバランスの取れたアプローチです。
モバイルAPMには独自の特徴があります:アプリはユーザーのデバイスで動作し、ネットワーク環境や空いたメモリ量、OSバージョンが異なります。モバイルAPMは、これらのすべての要因を考慮し、デバイスモデル、OSバージョン、地域、ネットワーク運営会社ごとにメトリクスを内訳して提供する必要があります。
モバイルAPMエージェントは、デバイス上でメトリクスを収集し、1~5分ごとに一括送信します。これにより、ユーザーのトラフィックへの影響を最小限に歱えます。接続が切れた場合、データはローカルキャッシュに保存され、次回接続時に送信されます。Firebase PerformanceとDynatrace Mobileは、ネットワーク要失時の自動再送信をサポートしています。
標準のAPMメトリクスに加え、モバイル開発では独自のメトリクスが追加されます:コールドスタート時間、スクロール時のFPS、メモリ消費量、ANR頻度(Android)、およびウォッチドッグ終了回数(iOS)です。New Relic Mobileはさらに、マップビュー、キャッシュ使用率、特定のViewControllerのレンダリング時間をトレースします。
import NewRelic
class ProfileViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NewRelic.startInteraction(withName: "ProfileView")
}
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
NewRelic.stopCurrentInteraction()
}
}
Swiftのコードは、ユーザープロフィール画面のためのインタラクショントレースを作成します。New Relicは、この画面が表示されている間に実行された、データ読み込み時間、UIレンダリング、およびすべてのネットワークリクエストを自動的に測定します。
APM市場には、監視の深さ、コスト、サポートされるプラットフォームによって異なる数十のソリューションがあります。Datadog APMは、メトリクス、トレース、ログを単一インターフェイスで統合する点でリーディングしています。New Relicは、モバイルプラットフォームに対して最も詳細なトレーシングを提供します。Dynatraceは、Davis AIエンジンを使用してルートコースを自動検出します。
| プラットフォーム | モバイルエージェント | ディストリビューテッドトレーシング | 無料プラン |
|---|---|---|---|
| Datadog | iOS, Android | あり | なし |
| New Relic | iOS, Android | あり | 100 GB/月 |
| Dynatrace | iOS, Android | あり | 15日間 |
| Grafana | OpenTelemetry経由 | あり | あり (OSS) |
APMプラットフォームの選択は、チームのサイズ、技術スタック、予算によって異なります。スタートアップには、バックエンド用のGrafanaと組み合わせたFirebase Performanceが最適です。高いSLA要件を持つエンタープライズプロジェクトには、完全なオブザービリティツールとAIドライブンのルートコース解析を備えたDatadogまたはDynatraceが適しています。
よくある質問
一般的な監視はインフラストラクチャメトリクス(CPU、メモリ、ディスク)をトレースします。APMはアプリケーションレベルを視たちます:特定のトランザクションの実行時間、SQLクエリ、マイクロサービス間のHTTPコールなどです。APMは、CPUが正常でも、データベースへの遅いクエリによってアプリが遅くなっていることを示せます。
単一のサービスには、基本的なカバレッジのために標準的な監視 + ロギングで十分です。APMが必要になるのは、サービスが5つ以上あり、単一のユーザーシナリオでリクエストが複数のサービスを経由する場合です。APMは、どの特定のサービスがリクエストの全体のフローを遅くさせているのか、またはボトルネックがどこにあるのかを明らかにします。
APMエージェントは、サーバーあたり1~3%のCPUと50~200MBのメモリを消費します。ライセンス費用は、ホストあたり月額15〜80ドルです。テレメトリートラフィックは、トレーシングの強度によってホストあたり日籌1~10GBです。OpenTelemetry + Grafanaは、商用APMに対する無料の代替手段です。
はい、モバイルAPMエージェントは独立して動作します。アプリにサーバー側がなくても、デバイス上で起動時間、FPS、クラッシュ、第三者APIへのネットワークリクエストなどのメトリクスを収集します。データは、デバイスがインターネットに接続したときにAPMプラットフォームに送信されます。
基本的なAPM設定(スレッショルド、ダッシュボード、アラート)は一度設定し、アーキテクチャが変わったり、パフォーマンスベンチマークが更新されたりしたときに調整されます。エージェント設定は、アプリを再リリースしたりコードを変更したりすることなく、APMプラットフォームの管理画面から自動的に更新されます。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。