iTunesで現在演奏中の曲の題名を取得するウィンドウアプリをAppleScriptで作成する

久々のプログラミングチュートリアル系記事です。
Mac OS X TigeriTunesの現在演奏中の曲の題名を取得するアプリをAppleScriptで組んでみます。このチュートリアルを読むことで

  • XCodeを使ったウィンドウアプリの作り方
  • AppleScript での他アプリケーションとの連携の仕方(の初歩)

を学ぶことが出来ます。
このチュートリアルを読む人としては、最近MacOSXを使い始めて基本的な操作はわかっているけど、MacOSXでのプログラミングをしたことは全くないという人を想定しています。


手順

1. XCodeを立ち上げ「ファイル」->「新規プロジェクト」を選択->AppleScript Application を選択


図1 XCodeの新規プロジェクトウィンドウ
2. 適当に名前を付けて保存(例では~/xcode/AppleScript/GetMusicTitle/ )


図2 プロジェクトの名前を付けるウィンドウ
すると次のようなウィンドウが開きます


図3 XCodeの初期画面
まずは、Interface Builderを使ってウィンドウのデザインをします。

3. Interface Builderのウィンドウの役割を知る

先ほどのウィンドウからMainMenu.nib (English) をダブルクリックします。すると色々ウィンドウが開くのですが、ここで重要なのは以下のウィンドウ達。


図4 デザインウィンドウの初期画面

図4のウィンドウに色々ボタンやらラベルやらを貼付けます。


図5 ウィンドウに貼付けるコントロール
図5はウィンドウに貼付けるコントロール群を示しています。表示されていない場合は、Interface Builder->Tools->Show Palettes をクリックするか、Command+/ で表示させましょう。


図6 インスペクタ
図6のインスペクタは各コントロールの属性を編集する所です。表示されていない場合はInterface Builder->Tools->Show Inspector をクリックするか、Command+Shift+I で表示させてください。最初はウィンドウの属性(タイトルやら最小化可能かどうか、等)が表示されていると思います。

4. ウィンドウのデザインをする
それでは、ウィンドウのデザインをしましょう。図7のようにしてみてください。


図7 コントロールを貼付けたところ
図5のコントロール群のウィンドウからSystem Font Text と Buttonのコントロールを図4のウィンドウ上にドラッグ&ドロップしてください。図4のウィンドウの右下をドラッグ&ドロップして適当な大きさにリサイズするのも良いでしょう。

5. コントロール群の名前を変える
コントロールをクリックすると、図6のインスペクタのウィンドウが、クリックしたコントロールの情報になります。ここで、インスペクタウィンドウ上で情報を書き換えるとコントロールの名前なども変わります。以下の図8と図9はSystem Font Textと書かれていたラベルを「iTunesの曲名を知りたい」と書き換えたところです。


図8 ラベルの名前ビフォー

図9 ラベルの名前アフター
なんということでしょう。たちまちのうちにラベルの名前が変わってしまいました。
同じ要領で、ウィンドウのタイトルとボタンのラベルも変更することが可能です。図10はすべてのラベルの名前を変えたところです。


図10 最終的なウィンドウ
6. イベントハンドラの定義

ボタンがクリックされた時に現在iTunesでかかっている曲名の取得を行うようにしたいのですが、その前にボタンがクリックされた時にコードが呼ばれるようにイベントハンドラを定義する必要があります。
イベントハンドラの定義はインスペクタウィンドウでやります。
ボタンをクリックした状態でインスペクタウィンドウの「Attributes」の項目を「AppleScript」に変更(またはCommand+8を押す)してください。その後、表示されているEvent HandlersのAction->clicked にチェックボックスを入れます。


図11 イベントハンドラにチェックを入れたところ
その後、「Script」に表示されているGetMusicTitle.applescript->Edit をクリックしてください。コードを挿入するためのウィンドウが開くと思います。


図12 コード挿入エディタ(一部分)

7. コードの挿入

(*Add your script here.*)の箇所に以下のスクリプトを挿入してください。


tell application "iTunes"
set MusicName to name of current track
end tell
display dialog MusicName buttons {"OK"}

簡単に解説すると、tell application "iTunes" 〜 end tell で現在のトラックの曲名を取得しています。setで始まる文でMusicNameという変数に曲名を入れています。
display dialogで始まる文でMusicNameをダイアログで表示しています。後ろの

buttons {"OK"}

はOKボタンだけを表示せよ、という意味です。これを省くと"Cancel"と"OK"の2つのボタンが表示されます。
スクリプトのコード自身の解説としてはiTunes for MacまとめAppleScriptスクリプターズガイドが役に立ちそうです。

8. ビルドして実行!

最後にXCodeの「ビルドして実行」ボタンを押せば今作成したAppleScriptの実行が出来ます。


図13 XCodeウィンドウ
作成したアプリの「曲名取得」ボタンを押せば次のようなウィンドウが開くはずです。


図14 曲名取得ウィンドウ
以上でチュートリアルは終わりです。



まとめ

AppleScriptはただのスクリプト言語ではなく、Interface Builderを使ってGUIアプリを作成したり、他のMacOSXアプリケーションと連携して、強力なアプリケーションを作ることが出来ます。この例では、iTunesの再生中の曲名を取得するということをしましたが、再生中のアルバム名やアーティスト名を取得したり各種情報を書き換えたりといったことも出来ます。また、Safariブラウザとの連携なども出来ます。
AppleScriptを使って自分好みのアプリケーションをサクッと作るのも良いんじゃないでしょうか。