LandVolume 2.0

Products

LandVolume 2.0 をリリース。

Mac App Store

今回から Mac App Store で販売。App Store 配布の経験がなかったので、その練習でもある。
やはり審査が大変だった。最初の Submit で「機能がなさすぎるのでリジェクト」と言われて App Review Board に英語で説明。それは受け入れてもらえたけど、その後も 3 回ほどリジェクトされたのでひと月以上かかってしまった。

新しくなったこと

コードはバージョン 1.x から全面的に書き直してある。

  • App Store での配布なので OS X 10.6.6 以降が必要。
  • スライダーの下にアイコンが追加され、装置の確認/変更が簡単にできるようになった。
  • 装置ごとに最大音量を設定できるようになった。ヘッドフォン、USB オーディオ、ディスプレイオーディオ、内蔵スピーカーなど複数の装置を使っているときに便利。
  • カラーの変更が可能に。ブルーベリー、グレープ、グラファイト、ライム、タンジェリンの 5 色。(懐かしい)
  • サイズの変更も可能に。S、M、L の 3 つから。これまでのサイズはスクリーンによっては小さすぎることがあったため。L はどう考えても大きすぎるけど、App Store 用のスクリーンショットを撮るときには役に立った。
  • 音量キーやメニューバーのアイコンなど、ほかの方法で音量が変更されたときにすばやく反応するように。これまでは一定間隔ごとに更新していたけど別の方法を使用するようになった。
  • 日本語リソースの追加。
  • 最初の起動時に使い方を表示するようになった。

ぜひどうぞ。

隠れ過ぎ? - ZMScrollerFlasher

Products

Lion でスクローラーが iOS 風に自動的に隠れるようになり見た目がすっきりしたのはいいけど、 スクローラーが表示されるタイミングが非常に少ないので、別のビューで作業しようと思ったとき表示している範囲を把握しにくい。

それならマウスカーソルがビューに入ったタイミングで一時的に表示されるようになればいいのではないか。そう考えたので、その動作を実現するための SIMBL プラグイン “ZMScrollerFlasher” を作ってみた。ダウンロードは Products の misc. のページから。

実際に使ってみると、カーソルの移動に応じて表示されるのは便利だけど、過剰な気がしないでもない。なぜ Apple がスクローラー表示タイミングをあのように設定したのかわかるような。

2 つのプロジェクトについて

Products

Animatabler

Snow Leopard になってから 64 ビットで動くソフトが増えてきた。Animatabler も 64 ビット化しないと 32 ビットのソフトでしか動作しない。

Animatabler でウインドウを変形させるのに使用している Core Graphics のプライベート関数 CGSSetWindowWarp() は本来、ウインドウを Dock にしまうときのジニーエフェクトや Exposé のウインドウ縮小などを実現するために用意されたものらしいけど 64 ビットでは使用されていないみたいでこれを呼んでも何も起きない。
個人的には CGSSetWindowTransformAtPlacement() が代わりに用意された関数ではないかと考えているけど、資料が少なくわからないという状況...
と書いていると Deskovery というソフトを発見。Compiz Fusion のふにゃふにゃウィンドウ移動を再現している。よくやるな〜

64 ビットには対応していないけど、環境設定アプリケーションを追加したバージョン 2.1.1 をリリース。ダウンロードはこちらから。(遅くなってしまったけど、Shige さん感謝です!)

ZMGoogleCSS

去年 5 月の Google 仕様変更で使えなくなった。CSS を上書きする方法の限界を感じてしまった。
Google が仕様を変更するたびに複雑な HTML 構造を調べ、CSS で無理矢理デザインを変更するには時間と労力がかかりすぎるし、できることの幅も少ない。

Google の提供する API を使ってデザインする方法もあり、デザインはいいものが作れそうだけど(Google Powered Site Search with jQuery)、通常の検索ページと URL が変わってしまうのは不便だし、JSON/Atom Custom Search API は "100 search queries per day" という制限があるので現実的ではない。
ほかの方法もなくはないけど、Google の規約に引っかかる可能性が出てくる。

これに影響されてこの分野が盛り上がることを期待してリリースしたけど、上記の問題もあり、なかなか作る人は現れない...

ハック系のソフトは維持が大変

他者のソフト/サービスをプライベートな方法で拡張するのは仕様変更のリスクが大きい。個人的に使える時間が限られてきたため、期待してくれていた方々には申し訳ないけど ZMGoogleCSS と Animatabler の開発は、しばらく休止します。

今年は Mac App Store が始まったこともあり、正当な方法で作ったソフトを中心にリリースしていく予定。

LandVolume 1.1

Products

LandVolume 1.1 をリリース。
Leopard で正しく動作するようになり、スライダーの回転ができるようになった。

スライダーの回転は、レイヤーの -[CALayer setTransform:] を呼ぶだけで実装できて感動。

このソフトのリクエストを送ってくれた方が Leopard を使用されていたので、Leopard 対応は重要な課題だった。1.0 をリリースした時点で対応させたつもりになっていたが、実際は動作せず... 原因は

  • 自作クラスの awakeFromNib 実装で super の awakeFromNib を呼んでいた。
    NSObjectawakeFromNib を実装しているのは Snow Leopard 以降。
  • 1.0 では、kAudioHardwarePropertyDefaultOutputDevice によって、選択されている出力デバイスを取得したあと、そのプロパティ kAudioHardwareServiceDeviceProperty_VirtualMasterVolume によって音量を取得/変更する方法をとっていた。同プロパティは Available in Mac OS X v10.5 and later と書いてあったから問題ないと思っていたのに、実際は Snow Leopard 上でないと正しく動作しなかった。
    デバイスのプロパティkAudioDevicePropertyPreferredChannelsForStereo によってステレオの 2 つのチャンネルを取得し、それらのプロパティ kAudioDevicePropertyVolumeScalar を取得/変更することで対処。

LandVolume でのアイデアは開発中の iTunes コントローラにも活かされる予定。

LandVolume 1.0

Products

ちょっとしたソフトをリリース。Mac の音量を調節するためだけのソフト。

スライダーと背景の中身を CALayer を使って作ってみた。
Core Animation は便利だ。iPhone プログラマは恵まれているな〜。

Google の変更が大きい

Products

数日前、Google の仕様がまた変わった。
これまでは仕様が変わっても、見た目/構造の変化は小さかったので、簡単に対応できた。しかし今回は、左のバーに検索フィールドの下にあった言語切り替えなどが移動していたり、検索フィールドが独自のものに変更されていたりと変化が大きい。

CSS の変更だけで従来の操作感を再現するのは難しそうだ...
デザインを変更しないといけないかもしれない。

期待してくれている人もいるようなので、できるだけ早く対応させたいけれども。

名前とアイコンが決まらない

Products

現在開発中の iTunes コントローラについて。

  • Snow Leopard 専用。
  • Mousqueak の後継ではない。
  • スライダーではない。スライダーより省スペース。
  • マウスのためだけの iTunes コントローラではない。ホットキー機能も。
  • マウスでも使いやすい。マウスの移動距離が短くもいろいろな操作ができる。
  • 自動スクロールで情報を表示。
  • 再生停止中は気配がなくなる。
  • シェアウェア。(無料で手に入れる方法も用意。)
  • ベースは Mousqueak。
  • いくつかの機能は Mousqueak と同じ。
  • Mousqueak の上位版ではない。方向性が違う。
  • Mousqueak は自分のために作ったもの。これは一般向けに作ったもの。

2012.2.2 追記

これらの方針は大幅に変更されました。