きりかノート 3冊め

おあそびプログラミング

サヨナラ InputManager ?

(2007/11/03 追記:適切な権限で /Library/InputManagers にインストールすることで Leopard でも動作することが確認されています。SIMBL も 0.8.2 でインストーラが変更され、問題なく利用できています)

Cocoa Blogs 経由でInput Managers and Leopard。InputManager が Leopard では使えないかも?という話。引用されている元記事のコメント欄がなかなかのスピードで伸びてる。

ひとつめのコメントが


No more SafariStand?

なのが素敵。

引用元によれば、デフォルトでは無効になっていて、変更することもできるらしい(今のとこ)ので、全く使えなくなるかどうかは、まだわからないところのようだ。

もともと InputManager は、かな漢字変換などのテキスト入力を提供する仕組みで、そのためにすべてのアプリケーションでロードされるようになっていた。ただ、これで実装された(本当の)InputManager てのはまず見当たらなくて(NeXT 時代については知らない)、アプリケーションをハックして機能を追加したりするのに多く利用されていた。ある種のウラワザだったわけだ。アプリケーションの外側からモジュールをロードさせる手法としては、他には mach_inject を利用した mach_star や、 Unsanity の APE なんかがある。

なんでアプリケーションをハックするのかというと、SIMBL の作者が

Problem:
Some applications do about 90% of what I want.
Solution:
Develop my own applications.
Better Solution:
Patch the application myself...

と言っているように、あとちょっとだけ動作を変えることができれば要求を満たすことができるのだから、イチから同じようなアプリケーションを作るなんて無駄なのだ。大変だし。

自分でもいくつか InputManager は書いているし、無くなると困るのだけれど、別の方法でロードさせることさえできれば InputManager でなくたってよいのだ。.app/Resources/Plugins/ に配置したら勝手にロードしてくれるとかだとありがたいなあ。

Objective-C のランタイムから中身見えまくりなところと、 Cocoa フレームワーク疎結合を導くデザインが、他の環境と比較して Cocoa アプリケーションがハックしやすい状況を生み出していると思う。ここの点については長期的に変わらないと考えている。アプリケーション作成する側としては、ちょっとイヤな点だとも思うけれども。