メニューバー常駐型のネットワーク転送量モニター「Up&Down」。その名の通り上りと下りのネットワーク転送量を測定しメニューバーにリアルタイムに表示するMacアプリです。
開発者は、iStat Menusのような多機能アプリも存在するが、自分にとってはネットワーク機能だけで十分だったのでこのアプリを作成したと、作成に至った動機を説明しています。
残念ながらバイナリファイルは準備されていませんが、Xcodeさえあれば自分でビルドして実行することができます。
目次
ビルド方法
まずソースコードをダウンロードします。
git clone https://github.com/gjiazhe/Up-Down
cd Up-Down
open Up\&Down.xcodeproj
Xcodeが起動したらCommand-Rを押してビルド。しばらく待てばメニューバーにアイコンが表示されます。
デバッグビルドではなく常用するためのリリースビルドが必要な場合、Xcodeのメニューから「Product > Archive」を実行し、「Export」から「Export as a Mac Application」を実行します。
エクスポートされた「Up&Down.app」をアプリケーションフォルダなどにコピーして使用します。
まとめ
Up&DownはSwiftで作られているオープンソースソフトです。例えばネットワーク転送量の測定に「sar」コマンドの出力を加工して利用していることが読み取れます。
func updateRateData() {
let task = NSTask.init()
task.launchPath = "/usr/bin/sar"
task.arguments = ["-n", "DEV", "1"]
let pipe = NSPipe.init()
task.standardOutput = pipe
task.launch()
task.waitUntilExit()
let status = task.terminationStatus
if status == 0 {
// print("Task succeeded.")
let fileHandle = pipe.fileHandleForReading
let data = fileHandle.readDataToEndOfFile()
var string = String.init(data: data, encoding: NSUTF8StringEncoding)
string = string?.substringFromIndex((string?.rangeOfString("Aver")?.startIndex)!)
handleData(string!)
} else {
print("Task failed.")
}
}
Swiftプログラムと外部コマンドの連携方法や、シンプルなメニューバーアプリの作成方法など、開発者の方にとっても役立つ情報が含まれているプログラムだと思います。