Activity MonitorはすべてのMacに標準搭載されており、基本的な用途には十分です。しかし、本格的なデバッグを始めると、多くの開発者が最初の1週間で限界を感じるようになります。ここでは、両ツールの機能を詳しく比較します。
結論から言うと
CPUやメモリの基本的なチェックだけで十分なら、Activity Monitorで問題ありません。プロセスツリー、環境変数、正規表現フィルタリング、短命プロセスの捕捉、コード署名の検査が必要であれば、開発者のデバッグやインシデント対応のワークフローにはProcXrayの方が適しています。
機能比較一覧
| 機能 | Activity Monitor | ProcXray |
|---|---|---|
| CPU / メモリチャート | ✓ | ✓ |
| プロセス一覧 | ✓ | ✓ |
| 強制終了 | ✓ | ✓ |
| プロセスツリー(親子関係) | ✗ | ✓ |
| 環境変数インスペクター | ✗ | ✓ |
| リアルタイム正規表現検索 | ✗ | ✓ |
| 短命プロセスの捕捉 | ✗ | ✓ |
| プロセスライフサイクルのハイライト | ✗ | ✓ |
| Dylib(動的ライブラリ)ビューアー | ✗ | ✓ |
| オープンファイルディスクリプター | ✗ | ✓ |
| コード署名とEntitlements | ✗ | ✓ |
| ネットワークポート監視 | ✗ | ✓ |
| 右クリックコンテキストアクション | 基本的 | 完全対応 |
プロセスツリー:何が何を起動したのかを把握する
Activity Monitorのフラットなリストは、Safariが起動しているかどうかを確認するには十分です。しかし、ビルドシステム、CIランナー、マルチプロセスのNode.jsアプリをデバッグする場合、すぐに不便になります。20個のnodeプロセスが表示されても、どれがどれを起動したのかがわかりません。
ProcXrayのツリー表示では、プロセスの完全な系譜をリアルタイムで確認できます。親プロセスを展開すれば、すべての子プロセスや孫プロセスが見えます。確認が終わったら折りたたむこともでき、いつでもフラットリストに戻せます。
環境変数:デバッグに本当に必要なデータ
プロセスが本番環境とローカル環境で異なる動作をする場合、原因は大抵環境変数にあります。Activity Monitorでは、実行中のプロセスの環境変数を確認する方法がそもそもありません。
ProcXrayのEnvironmentタブでは、プロセスが継承した、または明示的に設定されたすべての変数を表示します。ワンクリックですべての変数をJSONとしてコピーできるため、クリーンなシェルでバグを再現するのに便利です。
正規表現検索:数秒で目的のプロセスを見つける
Activity Monitorの検索は、プロセス名に対する部分文字列フィルターのみです。node.*buildやpython.*manage.pyに一致するすべてのプロセスを検索したい場合、対応できません。
ProcXrayの検索は、プロセス名、コマンドライン引数、PID、ファイルパスを横断するリアルタイム正規表現フィルターを実行します。入力に合わせてサブミリ秒でリストが更新されます。
短命プロセスの捕捉
コンパイラやリンカーのプロセス、シェルヘルパー、ビルドツールのサブプロセスは、1秒未満で終了することがよくあります。1〜5秒ごとに更新されるActivity Monitorでは、これらが表示されることはありません。
ProcXrayは、新しいプロセスが起動した瞬間に緑色でハイライトし、終了したプロセスは赤色で保持するため、後から確認できます。「ビルド中に何が実行されているかわからない」が「すべてのサブプロセス、そのPID、引数、実行時間を確認できる」に変わります。
Dylibとファイルディスクリプターの検査
ライブラリの競合が原因かもしれないクラッシュをデバッグしていますか?ProcXrayのModulesタブでは、プロセスが読み込んだすべての動的ライブラリを一覧表示します。Connectionsタブでは、すべてのオープンファイルディスクリプターとネットワークポートを表示します。
同等のターミナルコマンド:
vmmap <PID> # 読み込まれたライブラリ(出力が複雑)
lsof -p <PID> # オープンファイルとポート
ProcXrayは同じデータを構造化された、フィルタリング可能なUIで提供します。
コード署名とセキュリティ
セキュリティレビューやコンプライアンスチェックでは、ProcXrayが各プロセスのコード署名ステータス、署名IDおよびEntitlementsの一覧を表示します。codesign -dvvvの難解な出力を解読する必要はありません。
FAQ
ソフトウェア開発のデバッグにActivity Monitorで十分ですか?
Activity Monitorはリソースの簡易チェックには便利ですが、プロセスの親子関係、環境変数の確認、短命プロセスの可視化ができません。マルチプロセスアプリやビルドシステムのデバッグでは、これらの不足が大きな障害になることがよくあります。
なぜプロセスツリー表示が実際のインシデントで重要なのですか?
複数のnode、python、またはヘルパーバイナリが動作している場合、親子関係をたどることが、CPU急騰、メモリ増大、またはゾンビサブプロセスの真の原因を特定する最も速い方法であることが多いです。
ターミナルコマンドだけでも同じことができますか?
部分的には可能です。ps、lsof、vmmap、codesignなどのツールで多くの生データは取得できますが、出力は分散しており、アクティブなデバッグ中に素早く関連付けるのは困難です。
参考資料
- Apple: Activity Monitor User Guide
pscommand referencevmmapcommand referencelsofcommand referencecodesigncommand reference
まとめ
Activity Monitorはざっと状況を確認するには便利です。しかし、デバッグ、パフォーマンス分析、セキュリティレビューなど、より深い作業が必要な場合、ProcXrayはActivity Monitorでは取得できないデータを提供します。
ProcXrayを無料ダウンロード → — macOS Sonoma以降、Apple Silicon & Intel対応。