iplay(Parse iTunes Music Library)
iTunes に登録されている曲を afplay で再生するプログラムを作ってみました。iTunes より高音質であるというオカルト的な意見もあるようですので、是非一度お試しください(言われてみれば確かに?!)。
更新履歴

[2011/02/22] 折りたたみ表示機能(collapse)が適切に機能していなかったので、修正しました。

Q and A
[Q] フリーソフトですか?
[A] 利用者責任の原則に同意していただけるのであれば、あらゆる意味でフリーです。
 
制限事項
  1. Mac OS X 10.6 かつ iTunes 10 でのみ動作します。iTunes が最新版でも、ライブラリの管理方法が旧式の場合は動作しません。
  2. 再生を休止(サスペンド)することはできません。全曲再生が終了するのを待つか、「Ctrl + C」で終了してください。
  3. 再生中の曲をスキップすることは出来ません。
  4. ギャップレス再生は出来ません。
  5. afplay で再生できない曲は再生できません。どのフォーマットなら再生可能かは調べていませんが、Apple ロスレスなら大丈夫です(私は全て Apple ロスレスにしています)。iTunes Store で購入した曲などは再生できないかもしれません(買ったことがないので試せません)。

◉ 開発の背景等
iPod 等を利用する必要性から iTunes は不可欠なソフトウェアですし、手軽に映画をレンタルできるなど、魅力的な機能もあります。しかし、
  1. (HDD だと)起動が非常に遅い!
  2. 複数の曲を再生する場合、事前に曲にチェックマークを付けなければならない。
  3. 再生したくない曲からは、チェックマークを外しておかなければならない。
  4. 未だに 32 ビット。
  5. 立ち上げているだけで 60MB 以上もメモリーを確保してしまう。
など、不満が多々あります。特に、起動が遅いのは致命的です。
もっと軽いプレーヤーはないのかと探してみると、Vox というすばらしいソフトがあるにはあるのですが、積極的にメンテナンスされている様子はありませんし、現状では自分で(iTunes とは別に)Playlist を用意しなければならず、手間がかかり過ぎます。
そんな折、Linux や FreeBSD で遊んでいた時代に使っていた mpg123 という簡素で便利なソフトが脳裏をよぎり、afplay にたどり着いたという次第です。まさに灯台下暗し、です。
でも困ったことに、afplay はサスペンドできないんですね。Ctrl + Z でも killall でも、止まってくれません。思わず Perl のバグを疑ってしまいました。ごめんよ Larry。
なお、現状の iplay ではサスペンドはもちろん、曲をスキップすることも出来ません。
◉ 利用の前に!
iplay は姉妹プログラム pitunes より危険です。最悪の場合、スピーカーが破損したり、あるいは、電源ボタン長押しによってパソコンを強制終了しなければならなくなります。ご利用にあたっては、最低限、以下の操作を覚えておいてください。
終了する(Ctrl + C
プログラムを終了するには、「control」キーと「C」キーを同時に押します。この操作を、通常「Ctrl + C」と表記します。「Ctrl + C」は、無限ループに陥ってしまったプログラムを強制的に終了する場合にも使いますが、この操作によってファイルが破損するなどという事態は(通常は)起こりませんので、ご安心ください。
強制的に終了する(killall afplay
iTunes と違い、afplay は複数同時に起動させることが出来てしまいます。例えば、100 個の afplay が同時に演奏を始めれば音量も 100 倍になります。恐怖の瞬間です。万一、複数の afplay が同時に起動してしまうような事態が発生したら、ターミナルに「killall afplay」と入力し、「return」キーを押してください。それでも止まらない場合は、「killall perl」を実行して Perl そのものを強制終了させた後に、もう一度「killall afplay」を実行してください。Perl を強制終了させなければならないような事態が発生した場合は、念のため、パソコンを再起動することをお勧めします。
実行中のプログラムを確認する(ps aux
実行中のプログラムは「アクティビティモニタ」でも確認できますが、ターミナルを最大化した状態で「ps aux」と入力し、「return」キーを押すことでも確認できます。
別のターミナルを起動する(command + N
「command」キーと「N」キーを同時に押すと、別のターミナルを起動することが出来ます。iplay が暴走した場合、当然そのターミナルで「killall afplay」や「ps aux」を入力・実行することは出来ませんので、必ずこの「別のターミナルを起動する」方法を練習しておいてください。
◉ インストール方法
動作環境
Mac OS X Snow Leopard + iTunes 10 で動作確認を行っています。古い iTunes を利用している場合や、「iTunes Music」フォルダを非標準な場所に設定してある場合は動かないと思います(若干修正すれば動くかもしれません)。また、afplay で再生できない曲は当然再生できません。
インストール方法
圧縮ファイルを解凍(展開)して、PATH の通ったフォルダに入れるだけです。よくわからない場合は、 /usr/bin に入れて下さい。
補足
このプログラムは Perl で書いています。必須ではありませんが、日本語処理のため Text::Iconv をインストールしておくことをお勧めします(インストールしていない場合は標準コマンド iconv を利用します)。
◉ 利用例(各オプションの詳細は下記「引数の意味」をご覧下さい。)
iplay は CUI アプリケーションソフトです。ターミナル(Terminal)上で実行してください。
iplay
ターミナルに「iplay」と入力し、「return」キーを押すと、iTunes に登録されている全てのアルバムが一覧表示され、入力待ち状態になります。
[~]> iplay
    0 | いとう かなこ | F.D.D_ | 1 | 2
    1 | 中島 愛 | 天使になりたい | 1 | 4
    2 | 倖田 來未 | Best~first things~ | 1 | 12
    3 | 倖田 來未 | Best~first things~ | 2 | 11
    4 | 宇多田 ヒカル | Movin' on without you | 1 | 2
    5 | 宇多田 ヒカル | SAKURAドロップス | 1 | 2
    6 | 宇多田 ヒカル | Wait & See ~リスク~ | 1 | 3
    7 | 宇多田 ヒカル | traveling | 1 | 3
    8 | 彩音 | ARCHIVE LOVERS | 1 | 13
    9 | 茅原 実里 | Sing All Love | 1 | 14
Select Album Number: 
「q」や「e」を入力し、「return」キーを押すと、iplay は終了します。もちろん、「Ctrl + C」でも終了させることが出来ます。上記の出力は順に、アルバム番号(連番)、アーティスト名、アルバム名、ディスク番号、トラック数です。ディスク番号については、(iTunes で)何も設定していない場合は、1 と判断します。
Select Album Number:」の後ろにアルバム番号を入力し、「return」キーを押すと、そのアルバムをトラック順に再生し、全ての曲を再生し終えると iplay も終了します。
アルバム番号は複数指定することも出来ます。例えば、
Select Album Number: 2 4 9
とすれば、番号 2、4、9 のアルバムがこの順に再生されます。文字「s」を付記すると、シャッフルして再生します。また、番号の代わりに文字「a」を入力すると、リストアップされた全てのアルバムを再生します。アルバムが大量にある場合は、適宜途中で終了するコマンド「Ctrl + C」を活用してください。
iplay -c 文字
[折りたたみ表示機能]引数に「-c 文字」を与えると、「文字」を含むアルバム名のみが表示されます。アルバムが大量に存在する場合に、目的のアルバムを選択しやすくする機能です。
[~]> iplay -c 宇多田ヒカル
    4 | 宇多田 ヒカル | Movin' on without you | 1 | 2
    5 | 宇多田 ヒカル | SAKURAドロップス | 1 | 2
    6 | 宇多田 ヒカル | Wait & See ~リスク~ | 1 | 3
    7 | 宇多田 ヒカル | traveling | 1 | 3
Select Album Number: 
再生したいアルバム番号を入力して「return」キーを押せば再生が開始されます。なお、表示を制限しているだけですので、表示されなかったアルバム番号を指定することも出来ます。検索対象は、アーティスト名とアルバム名です。つまり、曲名等は検索しません。コンピレーションはアーティスト名が「Compilations」になることに注意が必要です。
番号の代わりに文字「a」を入力すると、リストアップされた全てのアルバムを再生します。特に、ヒットしたアルバムが 1 個だけの場合は、番号を入力するより手間がかからず便利です。更に、文字「s」を付記すると、シャッフルして再生します。
Select Album Number: as
また、文字「t」(または「b」)により、リストアップされた順(または逆順)による指定が出来ます。例えば、
Select Album Number: t 1 2
のように指定すると、リストアップされた 1 番目と 2 番目のアルバムを再生します。同様に、
Select Album Number: b1
のように指定すると、リストアップされたアルバムのうち、一番最後のアルバムを再生します。
iplay -n 整数
アルバム番号が分かっている場合は、引数に「-n 整数」を与えることで、応答なしに再生を開始させることができます。
[~]> iplay -n 2
Now playing...
 /Users/USER/Music/iTunes/iTunes Media/Music/中島 愛/天使になりたい/01 天使になりたい.m4a
iplay -n "2 10 32" の要領で、複数の番号を指定することも出来ます。この場合は、必ず二重引用符で数字全体をくくってください。
iplay -m
引数に「-m」を与えると、単曲選択モードで実行し、iTunes に登録されている全ての曲(トラック)が一覧表示されます。
[~]> iplay
    0 | いとう かなこ | F.D.D_ | 01 F.D.D..m4a
    1 | いとう かなこ | F.D.D_ | 02 Fly to the sky.m4a
    2 | 中島 愛 | 天使になりたい | 01 天使になりたい.m4a
    3 | 中島 愛 | 天使になりたい | 02 Be MYSELF.m4a
    4 | 中島 愛 | 天使になりたい | 03 パイン.m4a
    5 | 中島 愛 | 天使になりたい | 04 (仮)ダジャレのお歌.m4a
    6 | 倖田 來未 | Best~first things~ | 1-01 NO TRICKS.m4a
    7 | 倖田 來未 | Best~first things~ | 1-02 TAKE BACK.m4a
    8 | 倖田 來未 | Best~first things~ | 1-03 Trust Your Love.m4a
    9 | 倖田 來未 | Best~first things~ | 1-04 COLOR OF SOUL.m4a
   10 | 倖田 來未 | Best~first things~ | 1-05 So Into You.m4a
   11 | 倖田 來未 | Best~first things~ | 1-06 love across the ocean.m4a
   12 | 倖田 來未 | Best~first things~ | 1-07 m・a・z・e.m4a
   13 | 倖田 來未 | Best~first things~ | 1-08 real Emotion.m4a
   14 | 倖田 來未 | Best~first things~ | 1-09 1000の言葉.m4a
   15 | 倖田 來未 | Best~first things~ | 1-10 COME WITH ME.m4a
Select Music Numbers: 
Select Music Numbers:」の後ろに曲番号を入力し、「return」キーを押すと、その曲を再生し、再生を終えると iplay も終了します。曲番号は複数指定することも出来ます(as 及び数字以外の文字や記号等を区切り文字と見なします)。この他、使い方はアルバム選択モードと同じです。なお、上記の出力は順に、曲番号(連番)、アーティスト名、アルバム名、ファイル名です。
◉ 引数の意味
-h
使い方を出力します。
[~]> iplay -h
【利用方法】
iplay [-m|-a ["ソート方法"]] [-v "小数"] [-c "文字列"] [-n "整数"] [-s] [-l]
【各オプションの役割】
 -c 文字列	:「文字列」を含むアルバム・トラックのみを表示します。
 -n 整数	:「整数」番号のアルバム・トラックを再生します。
 -v 小数	: 音量を設定します。デフォルトは 0.12 です。
 -s		: シャッフル再生モードで実行します。
 -l		: ループ再生モードで実行します。
 		  -n が設定されている場合は無視されます。
 -a ソート方法	: アルバム選択モードで実行します。省略可能です。
 -m ソート方法	: トラック選択モードで実行します。
【ソート方法】
 4 種類のソート方法があります。省略した場合は、文字コード順にソートします。
  r		: 文字コード逆順にソート
  a		: 追加日時の古い順にソート
  ar, ra	: 追加日時の新しい順にソート
  l		: 再生日時の古い順にソート
  lr, la	: 再生日時の新しい順にソート
  c		: 再生回数の少ない順にソート
  cr, rc	: 再生回数の多い順にソート
-a ソート方法
アルバム再生モードで実行します。引数にソート方法を指定できます。利用可能なソート方法は下記の通りです。
無指定 : 文字コード順
r : 文字コード逆順
a : 追加日時(各トラックの追加日時うち、最も新しい日時)の古い順
ar, ra : 追加日時の新しい順
l : 最後に再生した日時(各トラックの再生日時のうち、一番最後に再生したトラックの再生日時)の古い順
lr, rl : 最後に再生した日時の新しい順
c : 再生回数(全てのトラックの再生回数の合計)の少ない順
cr, rc : 再生回数の多い順
-m ソート方法
単曲再生モードで実行します。引数にソート方法を指定できます。利用可能なソート方法は、アルバム再生モードと同様です。
-v 小数
再生音量を「小数」に設定します。安全を考慮して 0.5 より大きな値を設定することは出来ません。デフォルトは 0.12 です。
-c 文字列
「文字列」を含むアルバムのみを表示します。検索対象は、アーティスト名とアルバム名のみです。ヒットするアルバムが存在しない場合は全てのアルバムが表示されます。曲名等は検索しません。iTunes の仕様上コンピレーションは、アーティスト名が「Compilations」になることに注意が必要です。また、アスタリスク(*)等、ファイル名に用いることの出来ない記号はアンダースコア(アンダーバー)で管理されることにも注意が必要です。
-n 整数
-n "整数1 整数2 整数3 ..."
「整数」番号のアルバムを再生します。この場合、「-c」は無視されます。設定してあっても実害はありません。なお、存在しない番号が設定された場合は、通常通り「Select Album Number:」によって入力を求めます。
-s
シャッフルして再生します。
-l
Play List の再生が終了した後に、再び入力待ち状態になります。ただし、番号指定再生「-n 整数」の場合は、このオプションは無視されます。
-t
iTunes Music Library.xml に記録されているファイル名が間違えていないかチェックします。万一エラーが発生した場合は、その曲を一旦削除し、登録し直すことをお勧めします。全ての曲が正常なら、実行結果は次のようになります。
[~]> iplay -t
エラーは発生しませんでした。
(少なくとも現行の)iTunes は、長いファイル名を適切に扱うことが出来ないようです。姉妹プログラム pitunes には、「HDD には保存されているが、iTunes には登録されていない曲一覧を出力する機能」が用意されています。この機能を使って、全てのトラックが適切に登録されているか調べておくことをお勧めします。
[~]> pitunes -d