ファイル編集と同時にブラウザを自動でリロードさせると便利。watchmedoとAppleScriptで。

ウェブ開発者が繰り返し繰り返し行うことの一つに、ファイルを編集してブラウザに切り替えてリロードボタンを押すだけという簡単なお仕事がある。この記事では、それを自動化するのにwatchmedoとAppleScriptで行うやり方を紹介する。AppleScriptを使うので、MacOSX限定。

概要

watchmedoという、ファイルの変更を補足してあらかじめ登録したアクションを起こしていくれるツールがある。このツールと、applescriptを使ったブラウザのリロードするためのスクリプトを組み合わせると、ファイルの編集と同時にブラウザが勝手にリロードしてくれる環境を作ることができる。

watchmedoのインストール

watchmedoは、watchdogというpythonのモジュールの中に含まれているので、easy_install経由でインストールする。

easy_installが入ってない場合は以下のようにインストールする。

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py

easy_installを通じてwatchdogをインストールする

$ easy_install watchdog

watchmedoコマンドが使えたらインストール成功。

$ watchmedo --version
watchmedo 0.6.0

ブラウザをリロードするスクリプトを書く

あらかじめプリインストールされているAppleScript Editorを開いて、ブラウザをリロードするスクリプトを書く。

ブラウザによってリロードの仕方が違うので、利用するブラウザに合わせて書く。

Chromeだとこんな感じ。

tell application "Google Chrome" to reload active tab of window 1

Operaだとこんな感じ。Operaの場合だと、フォーカスを当てないとリロードできないので、フォーカスを戻すアプリの名前を適切に設定する。以下では、iTermにフォーカスを戻すように書いている。

tell application "Opera"
	activate
	tell application "System Events"
		tell application process "Opera"
			delay 0.1
			keystroke "r"
			delay 0.1
		end tell
	end tell
end tell

tell application "iTerm" to activate

ChromeOpera以外のブラウザをリロードするためのAppleScriptは、VimでHTMLやCSSの保存と同時に各ブラウザのリロードを実現するを参考にする。

AppleScript Editorからスクリプトをscpt形式で保存したら、次は実際に動くかどうかを確かめる。

$ osascript path/to/reload.scpt

ブラウザがリロードされたら成功。

使ってみる

あとは、watchmedoとreloadスクリプトを組み合わせれば、ファイルが変更された瞬間にブラウザがリロードするようになる。

$ watchmedo shell-command -c "osascript path/to/reload.scpt" ./

カレントディレクトリ以下のファイルを編集して、ブラウザが更新されたら成功。

終わり

ファイルを編集すると勝手にブラウザがリロードされて、本来無くても良い時間と手間が削減されるので快適。