自分のMacアプリに、RoamSwitchの診断機能をそのまま
RoamSwitchKitは、RoamSwitch本体が計算しているセキュリティ診断結果を、Swiftコードから直接参照できる無償・オープンソースのクライアントです。ARP監視やポートスキャンを自作することなく、「今のネットワークは安全か」を自分のアプリに組み込めます。
🔒 なぜ安全なのか
- 読み取り専用: ロックダウン切替・ポート隔離・デバイス取り出しなどの操作系APIは一切存在しません。組み込んだアプリがユーザーの許可なくRoamSwitchの設定を変更することはできません。
- 完全ローカル: RoamSwitch.appに同梱されたバイナリをサブプロセスとして起動し、標準入出力のみで通信します。外部サーバーへの送信は一切ありません。
- 無償・オープンソース: MITライセンスで公開されており、誰でも自由にソースコードを確認・組み込めます。
Swift Package Managerで1行
Package.swiftのdependenciesに追加するだけです。macOS 12+、Swift 5.9+、RoamSwitch 1.3.0以降のインストールが前提です。
dependencies: [
.package(url: "https://github.com/lafine1211/RoamSwitchKit.git", from: "1.0.0")
]
メソッドで診断結果を取得
import RoamSwitchKit
let client = try RoamSwitchClient()
let report = try await client.securityReport()
print(report.score, report.grade)
let ports = try await client.exposedPorts()
for port in ports.ports where port.overallRisk == "high" {
print(port.processName, port.port)
}
let status = try await client.guardStatus()
print(status.activeSecurityLevelLabel, status.isCurrentNetworkTrusted)
let urlReport = try await client.auditURLSafety(url: "https://apple.com.login-verify.xyz")
print(urlReport.score, urlReport.riskLevel) // e.g. 20, "dangerous"
読み取り専用のメソッド
securityReport()
FileVault・SIP・Gatekeeper・ファイアウォール・Wi-Fi暗号強度・ARPスプーフィング・外部公開ポートなど10項目を総合診断したスコアと改善アドバイスを取得します。
exposedPorts(includeLocalOnly:)
現在リッスン中の全ポートを一覧化し、外部公開されているものは既知の危険サービス(Redis/MongoDB等)判定を含む詳細な監査結果を取得します。
guardStatus()
未知ポート自動遮断・ARPスプーフィング自動対応・USBストレージガード・Bluetoothガード・Web/Mailダウンロード保護・DNS脅威保護の有効状態と、現在の保護レベルを取得します。
auditURLSafety(url:)
不審なメールリンクや短縮URLを引数に取り、フィッシング詐欺・Unicodeホモグラフ偽装・有名ブランド偽装サブドメイン・高リスクTLDを完全端末内(Zero Telemetry)で高速解析・スコアリングします。
こんな組み込み方ができます
同期・バックアップアプリ
信頼できないネットワークに接続した際、バックグラウンド同期を一時停止する。
パスワードマネージャー
未信頼ネットワークでは自動ロックまでの時間を短縮するなど、保護レベルに応じて挙動を変える。
開発者向けツール・自動化
開発サーバーが0.0.0.0で待受を始めた際に警告する、Shortcuts等でネットワーク信頼度に応じたワークフローを組む。
RoamSwitchKitについて
Q. 無料で使えますか?
A. はい。RoamSwitchKitはMITライセンスで無償公開しています。RoamSwitch本体(診断エンジン)のインストールが前提ですが、SDK自体に費用はかかりません。
Q. ユーザーの設定を変更できますか?
A. いいえ。読み取り専用で、ロックダウン切替やポート隔離などの操作系APIは一切実装されていません。組み込んだアプリがユーザーの許可なくRoamSwitchの保護設定を変更することはできません。
Q. RoamSwitchがインストールされていない場合は?
A. RoamSwitchClientError.appNotInstalledがスローされます。この場合は機能を非表示にするなど、穏やかに処理することを推奨しています。