Mac用のTwitterクライアントは最低限の機能だけ実装して、デバッガ上で使い続けている。相変わらず自分専用だけどもそれはいい。
Twitterアプリも新機能を追加する必要性にせまられない。リツイートしたこともないし、する機会もないし、する衝動にかられることもない。DM機能にしても相手がいない。このあたりを使うようになればアプリに実装するのだろうけども、現状では自分のツイートの削除昨日の追加と、フォローしなくなった相手の過去ログをローカルに持っているから、それを消すか消さないか選べるようにするとかその程度しか考えつかない。
ということで新ネタを始めた。今回はiTunesネタ。出来上がってから公開するとして、少々大きく、時流に乗った、うまくいけばユーザが獲得できるようなネタかも知れない、そんなソフト。
iTunesにアクセスするMac用アプリは以前、AppleScriptを使って書いたことがあり、今も自宅サーバに再生履歴を送信するために使っているが、今回はAppleSciptなし。Cocoa Scripting Bridgeなる新しい仕組みだ。新しいと言ってもLeopardから使えるようにはなっていたし、そもそも、現在はAppleScriptとInterface Builderの組み合わせが非推奨(初期状態で使えなくなっている)なのである意味ひとつの標準的なものとも言える。
WindowsのCOMに近いイメージ。アプリケーションの実行ファイルからヘッダファイルを作成するとそのアプリ特有の構造体(クラス)の定義が得られる。これを使うとObjective-Cでアクセス出来るのだが、ネット上の情報が同様に用意されているRubyやPythonの方が多いので具体的なソースの書き方にはまった。
食事を挟んで7時間かかって、ようやく、名前を指定したプレイリストの曲名一覧の取得に成功した。ちなみに、曲名を取得している時点で、iTunesのトラック(楽曲)が持っている情報全てにアクセスできる状態になっているので、ここまでくればiTunesから「得る」情報はすべて揃ったことになる。
今回、つくろうと思っているアプリは、アプリからiTunesへ情報を「出力する」ことを考えているので、この部分が難しい。テストしたいが、テストでライブラリを壊したくないし、テスト用に別ライブラリを用意して切り替えるのもいいが、テスト中に音楽が聞けないのは趣味プログラミングとしては痛い。
ここまでは、UIをつくらず、ロジックとコンソール出力だけで確認してきたので、次の段階はUIを作り始めて情報の流れを考えてみようと思う。仕事プログラムだったら文書化するんだろうけど、趣味プログラミングだから文書は書かないのだ。
コメント