AppleScript で iPhone 用に動画を変換する作業を自動化する(ただし,面倒なところは Ruby に任せる)

最近,MacBook Pro にためてきた動画を iPhone でも見られるようにしたくなりました.しかし,iPhone で再生できるのは .m4v 形式なので,この形式に動画を変換する必要があります.幸い,Mac OS X に付属の QuickTime Player 7 を使えば iPhone 用 .m4v を作成できるので,ファイルを一つ一つ開いてマウスでカチカチやっていけば,いずれは全部 .m4v になります.しかし,この方法ではきっと 13 ファイル目くらいで心が折れるので,AppleScript を使って作業を自動化することにしました.

AppleScript とは

AppleScript とは Apple 製のスクリプト言語で,Mac のアプリケーションをスクリプトから操作するために利用されます.AppleScriptMac OS X の一部として提供されるので,面倒なインストールは不要です.AppleScript を使えば面倒な作業を自動化することができます.

AppleScript を勉強してみる

AppleScrip が何か分かったところで AppleScript を勉強してみます.

アプリケーションへのコマンドの送り方

AppleScript でアプリケーションを操作するには,アプリケーションに相当するオブジェクトにコマンドを送ります.アプリケーションにコマンドを送るには,

tell application アプリケーション名
    一つめのコマンド
    二つめのコマンド
    ...
end tell

と,tell 文を使います.iTunes で "My Top Rated" というプレイリストを再生して 5 秒後に停止するスクリプトを例に挙げると,

tell application "iTunes"
     play the playlist named "My Top Rated"
     delay 5
     stop
end tell

となります.

ファイルの扱い方

いくつかのコマンドは,ファイルを扱うときに絶対パス文字列ではなく「エイリアス」を利用します.絶対パス文字列からエイリアスを作るには,

set fooAlias to POSIX file "/path/to/file"

とします.

AppleScript の勉強をあきらめてみる

と,ここまで AppleScript の基本を勉強したところで,AppleScript の修得をやめます.AppleScript は単にコマンドを発行するだけではなく,制御構造をもったプログラミング言語なのです.しかし,私にとって制御構造を書くのなら Ruby のほうが楽なので,AppleScript はアプリケーション操作のコマンドを発行するためだけに使い,他の部分は Ruby で書きます.

osascript(1)

コマンドラインから AppleScript を実行するには osascript(1) を利用します.Ruby から AppleScript を実行する方法としては RubyCocoa を使う方法もあるのですが,簡単なのでこちらを使います.osascript には標準入力から AppleScript を渡します.

できたプログラム

以上の知識を利用してプログラムを書いてみました.例によって gist ではりつけます.

このプログラムを使うには,コマンドラインから,

$ /usr/bin/ruby movie_importer.rb foo.mpg bar.mp4 ... 

などとします.

おわりに

iPhone 用に動画を変換する作業を AppleScript で自動化しようとしましたが,途中で面倒くさくなって Ruby も使いました.本当は AppleScript を使わなくても RubyCocoa の QTKit 経由で Ruby だけもで同じことができるのですが,お手軽な方法で目的を達成したので,これで終わりとします.

参考