Metrics Server
Bluetooth LEを介して近くのデバイスにライブのデバイス情報をブロードキャストします。
概要
Metrics Serverは、デバイスをBluetooth Low Energy(BLE)ペリフェラルに変え、Metrics Client を実行している近くのデバイスにライブのデバイス情報をブロードキャストします。接続されたクライアントは、CPU使用率、コアごとのCPUアクティビティ、デバイス識別情報、タイムスタンプなどのデータを1秒ごとにBLEの通知キャラクタリスティックを通じて連続的に受信します。
Wi-Fiネットワークやインフラを必要とせず、別のデバイスからリアルタイムで1台のデバイスのパフォーマンスを監視するのに便利です。
目次
- 主なセクション
- Metrics Serverステータスカード
- サーバー名とプリセット
- サーバーコントロール
- 接続クライアント
- 現在のメトリクス
- 送信データ
- Metrics Clientとの使い方
- 技術的詳細
- 注意事項と制限
主なセクション
Metrics Serverは4つのカードを 持つ単一のスクロール画面です:
- Metrics Server — ステータスとサーバー名の設定
- サーバーコントロール — BLEブロードキャストの開始/停止
- 接続クライアント — 購読中のデバイス数
- 現在のメトリクス — ブロードキャスト中のデータのライブプレビュー
Metrics Serverステータスカード
最上部のカードには以下が表示されます:
- 稼働インジケーター — ラベル付きの色付きドット:
- Running(緑)— サーバーがアクティブに広告および送信中。
- Stopped(赤)— サーバーが広告していない。
- サーバー名フィールド — BLE探索時に他のデバイスに表示される名前を編集可能。詳細はサーバー名とプリセットを参照してください。
- ステータス — アクティブまたは非アクティブ。
- Bluetoothステータス — 現在のBluetoothラジオ状態(Powered On、Powered Off、Unauthorized、Unsupported、Resetting、Unknown)。
- 接続数 — 現在メトリクスストリームに購読しているクライアントデバイスの数。
- エラー — BLEスタックからのエラーメッセージ(エラー発生時のみ表示)。
サーバー名とプリセット
サーバー名は、Metrics Clientユーザーが探索時にこのデバイスをどのように認識するかを決定します。任意のカスタム名を入力するか、プリセットドロップダウンから組み込みのオプションを素早く適用できます:
| プリセット | 例 |
|---|---|
| マーケティング名 + モデル識別子 | iPhone 16 Pro Max (iPhone17,2) |
| マーケティング名のみ | iPhone 16 Pro Max |
| モデル識別子のみ | iPhone17,2 |
| デバイス名 | Rogerio's iPhone 16ProMax |
デフォルトは利用可能な場合、**マーケティング名(モデル識別子)**です。
サーバー稼働中に名前を変更すると、BLE広告が自動的に再起動され、新しい名前が即座に反映されます。
サーバーコントロール
サーバーコントロールカードには単一のStart Server / Stop Serverボタンがあります:
- Start Server(緑)— BLE広告を開始し、CPUメトリクスの収集を開始します。クライアントが購読するとすぐにデータ送信を開始します。
- Stop Server(赤)— BLE広告を停止し、メトリクス収集を中止します。
ボタンの下には、サーバーがBluetooth LEを介して接続クライアントにメトリクスをブロードキャストする旨の説明があります。
接続クライアント
接続クライアントカードには以下が表示されます:
- 現在購読中のクライアントデバイス数(大きな数字で目立つように表示)。
- クライアントが接続されていない場合:アイコンとメッセージのプレースホルダーが表示され、サーバーを開始して別のデバイスでMetrics Clientを使用するよう促します。
- クライアントが接続されている場合:購読数を示す確認メッセージ(例:「1クライアントがメトリクスを受信中」)。
サーバーは少なくとも1台のクライアントが購読している場合のみデータを送信します。クライアントがいない場合は内部タイマーが一時停止され、リソースを節約します。
現在のメトリクス
現在のメトリクスカードはブロードキャスト中のデータのライブプレビューを表示します:
| フィールド | 説明 |
|---|---|
| CPU使用率 | このデバイスの現在の全体CPU使用率(例:30.0%)。 |
| コア数 | このデバイスのCPUコア数(例:6)。 |
| デバイス | ユーザーが割り当てたデバイス名(例:「Rogerio's iPhone 16ProMax」)。 |
これらのフィールドの下には、CPU使用率の時間推移を示す使用履歴の折れ線グラフがあり、負荷の変動を視覚的に把握できます。
送信データ
サーバーは1秒ごとに2つのBLE通知キャラクタリスティックをすべての購読クライアントにブロードキャストします:
サマリーキャラクタリスティック
コンパクトなバイナリペイロードに以下のフィールドを含みます:
| フィールド | 型 | 説明 |
|---|---|---|
| サーバー名 | 文字列(最大32文字) | ステータスカードに表示される設定可能な名前。 |
| デバイスモデル | 文字列(最大32文字) | デバイスのマーケティング名(例:「iPhone 16 Pro Max」)。 |
| デバイス名 | 文字列(最大32文字) | iOS設定からのユーザー割り当てデバイス名。 |
| CPU使用率 | 浮動小数点数(32ビット) | 全体のCPU使用率(0〜100%)。 |
| コア数 | UInt16 | CPUコア数。 |
| タイムスタンプ | UInt64 | Unixエポックからのミリ秒。 |
コア別キャラクタリスティック
コアごとのCPU使用率データを含みます:
| フィールド | 型 | 説明 |
|---|---|---|
| コア数 | UInt8 | コア数(最大32)。 |
| コア使用率 | 浮動小数点数配列 | 各コアの使用率を表す32ビット浮動小数点数。 |
| タイムスタンプ | UInt64 | Unixエポックからのミリ秒。 |
Metrics Clientとの使い方
- 監視したいデバイスで、ツール > Metrics Serverを開き、Start Serverをタップします。
- 別のデバイスで、ツール > Metrics Clientを開きます。
- Discoveryタブでサーバーをリストから見つけてConnectをタップします。
- クライアントは自動的にMetricsタブに切り替わり、ライブデータを表示します。
技術的詳細
- サーバーは
CBPeripheralManagerを使用するBLEペリフェラルとして動作します。2つの通知専用キャラクタリスティック(サマリーとコア別)を持つカスタムGATTサービスを広告します。 - 少なくとも1台のクライアントが購読している場合に1秒ごとにデータを送信します。クライアントがいない場合はタイマーが一時停止されます。
- ペイロード内のすべてのマルチバイト数値は、AppleプラットフォームのSwiftがネイティブに生成するリトルエンディアン形式です。
- サーバーはCoreBluetooth状態復元を使用し、システムによるアプリ再起動時に広告状態を回復可能です。
- BLEのバックプレッシャーは適切に処理されます。送信キューが満杯の場合、更新はキューに入れられ、
peripheralManagerIsReady(toUpdateSubscribers:)でシステムが準備完了を通知した際に排出されます。 - CPUメトリクスはCPU Monitorツールで使用される同じ
ToolCPUViewModelからサンプリングされ、一貫した読み取りを保証します。
注意事項と制限
- このツールはBluetooth LEを使用し、Wi-Fiネットワークは使用しません。デバイスはBLEの範囲内(通常は屋内で10〜30メートル)にある必要があります。
- BLEの利用可能性、バックグラウンド動作、接続の安定性はデバイスおよびOSバージョンによって異なります。
- visionOSではBLEペリフェラルロールがサポートされていないため、Metrics Serverは利用できません。
- サーバー名はBLEペイロードサイズの制約により32文字までに制限されています。
- 現在送信されるのはCPU関連のメトリクスのみで、メモリや温度など他のデバイス情報はBLEストリームに含まれていません。