TOKYO SECRETS 0/7
LAB

PortLens

USB・Thunderbolt の接続図アプリ

PortLens は、Mac に接続された USB・Thunderbolt/USB4 機器を、接続図と一覧で確認する macOS アプリです。macOS が認識している機器情報を読み取り、どのハブやバスにつながっているかを表示します。

概要

接続図は拡大・縮小でき、ハブやバスの下流を折りたためます。USB と Thunderbolt を横並びで表示し、機器を選ぶと、その機器までの接続経路を強調します。接続方式やバスでの絞り込みと、機器名・メーカー・位置 ID・自分で付けた表示名での検索もできます。

「机の下のハブ」のような表示名を付けたり、接続経路をコピーしたり、スナップショットを JSON で書き出したりできます。デモデータで画面を試せるので、機器をつながなくても表示を確認できます。更新は更新ボタンか、任意の自動更新(初期状態はオフ)で行います。

図は OS が報告する論理的な接続関係です。物理ポートの位置を推測して表示することはなく、USB と Thunderbolt を一つの配線図に自動で統合することもありません。接続速度も OS が報告した値で、実測の転送速度ではありません。

アーキテクチャ

構成
Swift Package Manager で、外部の Swift パッケージを使わずに作っています。SwiftUI アプリ(PortLens)、接続情報の取得・解析・モデル(PortLensCore)、検証ランナー(PortLensChecks)の 3 つに分けています。
仕組み
接続情報は、macOS 標準の機能で取得します。任意コマンドの実行、管理者権限への昇格、機器への制御命令、ドライバーの追加は行いません。
データ
取得・表示・書き出しは Mac の中で完結し、外部へのアップロードはありません。書き出す JSON には、機器を一意に特定できる識別子(シリアル番号など)を含めません。自分で付けた表示名は、この Mac のアプリ設定に保存し、JSON には出しません。
配布
v0.1.0 を ZIP で配布しています(macOS 14 以降。Apple シリコンと Intel Mac の両方に対応)。署名は簡易的なもので、Apple の公証はまだ行っていません。ソースからもビルドできます。
検証
接続情報のパーサーは合成データでテストするので、特定の機器をつなぐ必要はありません。Command Line Tools だけでも動く共通検証コマンドと XCTest を用意し、GitHub Actions で実行しています。
種別
USB・Thunderbolt の接続図アプリ
区分
LAB(個人制作・実験)
状態
公開中
担当
企画・設計・開発
技術
  • Swift
  • SwiftUI
  • AppKit
  • Swift Package Manager
  • system_profiler
  • XCTest
  • GitHub Actions