![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/masatora_bd5/20240330/20240330234419.jpg)
## やりたいこと
Wi-Fiの接続状況、特にスピードを自動的に記録しておくと便利です。
記事 [Wi-Fi環境を把握して最適なプレイを。PS5のリモートプレイに役立つシェルスクリプト - Qiita](https://qiita.com/hann-solo/items/c560062e9742769ce5bc) では、PS5のリモートプレイに焦点を当てましたが、それにとどまらず、接続速度の推移を記録してあると、諸々対策の幅も広がります。
macOSには、自動的にシェルスクリプトを定期実行し、出力をメニューバーに表示できる [[SwiftBar]] というツールがあります。Wi-Fiの自動モニタリングとの相性は最高です。
![SS 2024-03-30 23.19.04_rd.png](https://cdn-ak.f.st-hatena.com/images/fotolife/m/masatora_bd5/20240330/20240330231928.png)
<span class="mxt-caption"> ▲ 10分毎に自動測定しており、メニューバーでいつでも見られます。</span>
## 今回発生した困りごとと対策
[[SwiftBar]] プラグインで、SSID表示がうまくいかなくなりました。
macOSのセキュリティポリシー更新で、`airport`コマンドが非推奨となり、代替方法への移行が必要となりました。この変更はWi-Fi速度自動測定プラグインに影響があり、SSIDが正しく表示されなくなっていました。
この記事では、SSID取得方法を改訂した作業の詳細を記します。
### 改訂内容の概要
#### SSID取得方法の更新
以前のSSID取得コマンド:
```bash
ssid=$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk -F': ' '/ SSID/ {print "SSID: " $2}')
```
改訂後のSSID取得コマンド:
```bash
ssid=$(system_profiler SPAirPortDataType | awk '/Current Network Information:/{getline; gsub(/^ +|:$/,""); print "SSID: " $0; exit}')
```
プラグインの全体コード:
[speedtest_swiftbar.sh - Monitor Wi-Fi speed: Automatic tests, monthly logs, and menu bar results · GitHub](https://gist.github.com/hnsol/bde3ef4c5f76790f2fe93c0d7a1a0919)
#### 変更の動機
`airport`コマンドの非推奨化により、SSIDが取得できず、メニューバーにSSIDを表示できなくなりました。`system_profiler SPAirPortDataType`を使用することで、SSIDを含むネットワーク情報を安定して取得できるようになります。このコマンド変更は、SSID取得方式を現在のmacOSの仕様に合わせ、より長期的に利用可能にします。
### 注意点
この改訂は現在の`system_profiler`の出力フォーマットに基づいています。Appleによる将来的なフォーマット変更は、この解決策の有効性に影響を及ぼす可能性があるため、注意が必要です。
### 補足:SSID取得コマンドの変更
新しい`system_profiler SPAirPortDataType`コマンドは、従来の`airport`コマンドに比べ、包括的なWi-Fiネットワーク情報を提供します。SSIDだけでなく、接続品質やセキュリティ設定など、より詳細なデータを得られます。また、macOSのセキュリティポリシーに基づく変更に強く、将来的にもサポートが続く見込みです。
## まとめ
この記事では、SwiftBarプラグインのSSID表示問題に対処するための方法を紹介しました。macOSの更新に伴い非推奨となった`airport`コマンドに代わる、新しいSSID取得方法を導入しました。
この改訂により、プラグインは再び正確なSSID情報を表示できるようになり、ユーザーは現在接続しているWi-Fiネットワークを簡単に確認できます。