Activity MonitorはすべてのMacに標準搭載されており、基本的な用途には十分です。しかし、本格的なデバッグを始めると、多くの開発者が最初の1週間で限界を感じるようになります。ここでは、両ツールの機能を詳しく比較します。
結論から言うと
アクティビティモニタはCPU・メモリの確認に加え、プロセスの階層表示にも対応しています。ProcXrayはその階層と、環境変数、正規表現検索、コード署名の確認、終了したプロセスの保持を一つのツールにまとめています。
機能比較一覧
| 機能 | Activity Monitor | ProcXray |
|---|---|---|
| CPU / メモリチャート | ✓ | ✓ |
| プロセス一覧 | ✓ | ✓ |
| 強制終了 | ✓ | ✓ |
| プロセスツリー(親子関係) | 対応(表示メニュー) | ✓ |
| 環境変数インスペクター | ✗ | ✓ |
| リアルタイム正規表現検索 | ✗ | ✓ |
| 短命プロセスの捕捉 | ✗ | ✓ |
| プロセスライフサイクルのハイライト | ✗ | ✓ |
| Dylib(動的ライブラリ)ビューアー | ✗ | ✓ |
| オープンファイルディスクリプター | 対応(開いているファイルとポート) | ✓ |
| コード署名とEntitlements | ✗ | ✓ |
| ネットワークポート監視 | ✗ | ✓ |
| 右クリックコンテキストアクション | 基本的 | 完全対応 |
プロセスツリー:何が何を起動したのかを把握する
アクティビティモニタでも親子関係を表示できます。表示 → すべてのプロセス(階層表示)(英語表示:View → All Processes, Hierarchically)を選ぶと、ヘルパーを起動した親プロセスを確認できます。Appleの説明も参照してください。
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で十分ですか?
アクティビティモニタはCPU・メモリの確認に加え、プロセスの階層表示にも対応しています。ProcXrayはその階層と、環境変数、正規表現検索、コード署名の確認、終了したプロセスの保持を一つのツールにまとめています。
なぜプロセスツリー表示が実際のインシデントで重要なのですか?
複数の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対応。