MacのWi-Fi切→入するだけのツールを作った
MacのWi-Fiは不安定という話をよく聞きますが、自分が会社で使っているMacBook Proも、1日に数回くらい、突然Wi-Fi接続が切れたり、Wi-Fi自体はつながっているみたいだけど通信ができなくなったりすることがあります。
ネットワークの問題なのか、Mac側の問題なのか…インフラ担当の人も色々と手をつくしてくれているものの、なかなか改善されない状況です。
先日アップデートしたOS X Yosemite 10.10.4ではWi−Fi周りが改善されているという話でしたが、自分のところでは改善は見られず、相変わらず数時間おきくらいに、メニューバーのWi-Fiアイコンで切ったり入れたりしています。

しかし、いい加減その動作も面倒くさくなってきたので、手軽にWi-Fiの切→入をするツールを作ってみることにしました。
シェルスクリプト版
以下の記事で、Macのネットワーク設定をいじれる networksetup というコマンドを使うことで、Wi-FiのON/OFFもできることがわかりました。
コマンドラインからMac OS XのWi-Fiを無効化する - Qiita
というわけで、以下のようなシェルスクリプトを用意しておけば、コマンド一発でON/OFFできるようになりました。
wifireboot.sh
#!/bin/sh networksetup -setairportpower Wi-Fi off && networksetup -setairportpower Wi-Fi on
デスクトップツール版
同じフロアでMacBook系を使っている、エンジニアではない人たちも、同様の問題で困っていました。
自分の場合は普段からターミナルなりEmacsなりが起動しているので、上記のようなシェルスクリプトを実行すること自体はたいした手間ではないのですが、そういった人たちに黒い画面を立ち上げてコマンド打たせるというのは、正直難しいところです。
そこで、以前試したシェルスクリプトをMacアプリ化した手法で、デスクトップツールを用意することにしました。
このような感じのアプリ化スクリプトを用意して実行すれば、.appが生成されます。
make_wifirebooter.sh
#!/bin/sh
APPFILENAME="WiFiRebooter"
SHELLSCRIPT="wifireboot.sh"
ICONFILE="app.icns"
mkdir -p ${APPFILENAME}.app/Contents/{MacOS,Resources}
cat > ${APPFILENAME}.app/Contents/Info.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Wi-Fi Rebooter</string>
<key>CFBundleExecutable</key>
<string>${SHELLSCRIPT}</string>
<key>CFBundleIconFile</key>
<string>app.icns</string>
<key>CFBundleName</key>
<string>Wi-Fi Rebooter</string>
<key>CFBundleShortVersionString</key>
<string>Version 0.0.1</string>
<key>CFBundleVersion</key>
<string>0.0.1</string>
</dict>
</plist>
EOF
cp ${SHELLSCRIPT} ${APPFILENAME}.app/Contents/MacOS/
cp ${ICONFILE} ${APPFILENAME}.app/Contents/Resources/
chmod +x ${APPFILENAME}.app/Contents/MacOS/${SHELLSCRIPT}
超適当ですが、判別しやすいようにアイコンも付けてみました。

実行すると、シェルスクリプト版のコマンドを実行して終了するだけなので、このようにDockへ入れておけば、エンジニアではない人でも簡単に実行できるでしょう。
いちおうGitHubで保管。
MacのWiFiが安定してくれれば、こんな手間もいらないんですが…。

MF885J/A iMac Retina 5Kディスプレイモデル(3300)
- 出版社/メーカー: Apple Computer
- メディア: エレクトロニクス
- この商品を含むブログを見る