feed

2015年02月13日, 編集履歴

iTunesで再生中の曲にレート付けするウィジェットを作った

 OS X 10.10 Yosemiteから搭載された機能拡張(通知センターの「今日」ペインで動作する機能拡張を「ウィジェット」と呼ぶ)を用いて、iTunesで再生中の曲にレート付けをするウィジェットを作ってみた。ソースはGenjiApp/iTunes-Rating-Widgetで公開する。

Scripting Bridge

 iTunesからの情報取得や操作にはScripting Bridgeを用いた。Scripting BridgeはAppleScriptで操作可能なアプリケーションに対して、AppleScriptを用いずにObjective-Cからの操作を行うフレームワークである。

iTunesArtworkオブジェクトの謎

 Scripting Bridgeを用いてiTunesの曲情報を取得すると、アートワークはiTunesArtworkオブジェクトとして得られる(クラス名等の接頭辞iTunesは自分で設定可能)。このオブジェクトにはNSImage型のdataというプロパティがある。通常これを用いればCocoa環境で使いやすい画像オブジェクトが得られるはずである。
 アートワークがJPEG形式の場合、dataプロパティは問題なくNSImageが返すが、PNG形式だった場合、NSAppleEventDescriptorオブジェクトが返ってくるという謎の挙動を示す。仕方がないので、iTunesArtworkが持つ画像の生データrawDataプロパティを用いてNSImageを生成した。

com.apple.iTunes.playerInfoノーティフィケーション

 iTunesの再生・一時停止・曲送り・曲戻し操作の際には通知名「com.apple.iTunes.playerInfo」で通知が飛ぶ。これをNSDistributedNotificationCenterで捕まえて情報の更新を行った。

NSLevelIndicatorCellのハイライト

 NSLevelIndicatorを使うとiTunesのような星を用いたレート付けのGUIが作れる。しかし素のままで使うと、値が0のときに表示が何もなくなって解りづらい。レート付けの操作中、つまりハイライト時にはドットが表示されるので、NSLevelIndicatorCellをサブクラス化し、- (BOOL)isHighlightedが常にYESを返すようにしておいた。

コンテナアプリケーション

 機能拡張はそれ単体では開発・配布を行うことができず、主となるアプリケーションが必要になる。これをコンテナアプリケーションと呼び、コンテナアプリケーションに内包する形で機能拡張を開発・配布することになる。
 今回はそれは主眼ではないので、適当にシステム環境設定の機能拡張ペインを開くだけのものにした。システム環境設定の各ペインの実体は「/System/Library/PreferencePanes/」以下にあるので、目的のペインのURLを作成し、NSWorkspaceopenURL:メソッドで開いてやれば良い。

2015年01月06日, 編集履歴

Murasaki ver. 2.2.4をリリースしました

 OS X用EPUBリーダMurasakiのver. 2.2.4をリリースしました(アプリ紹介ページMac App Store)。

 ver. 2.2.4は、

です。この問題はTwitterアカウント宛にご報告いただきました。ありがとうございます。

2014年12月19日, 編集履歴

Mailto Interceptor ver. 1.2.2をリリースしました

 mailto:リンク等によるメールアプリケーションの即時起動を抑制するユーティリティMailto Interceptorをver. 1.2.2にヴァージョンアップしました。

 ver. 1.2.2の変更点は、

です。どうぞよろしくお願いします。

2014年12月13日, 編集履歴

Murasaki ver. 2.2.3をリリースしました

 OS X用EPUBリーダMurasakiのver. 2.2.3をリリースしました(アプリ紹介ページMac App Store)。

 ver. 2.2.3はバグ修正版です。修正箇所は、

です。この問題はコンタクトフォームよりご報告いただきました。ありがとうございます。

2014年11月26日, 編集履歴

JEPA電子出版アワード2014にMurasakiがノミネートされました

 日本電子出版協会(JEPA)電子出版アワード2014に、拙作のOS X用EPUBリーダアプリケーションMurasakiがノミネートされました。「エキサイティング・ツール賞」というジャンルです(候補作品リスト)。昨年に引き続き2回目のノミネートです。アワードの他ジャンルの賞も含めて有名企業や電子書籍界隈での有名人がならぶ中、ひとり私だけぽつんとTwitter名義でいるのも昨年と同様です。
 エキサイティング・ツール賞の候補作品は、

となっています。
 12月3日水曜日の22時まで投票フォームからどなたでも投票できるようなので、応援していただける方はぜひ。