もうすぐ2008年も終わり。9月頃から急激に世相が変わりつつありますが、来年には好転するでしょうか? Macworld Expoは寂しいことになるけれど、新年からホットな話題をお届けできればいいなあ、と願っています。
さて、今回は「SIMBL (Smart InputManager Bundle Loader)」について。Input Managerの機構を利用してプラグインの実行を可能にする、Cocoaアプリのハックシステムのことだ。なぜか当コラムでは紹介する機会に恵まれなかったが、Snow Leopard前でネタが厳しいこともあり、ここに登場願う次第。
文字入力だけじゃない「インプットマネージャ」の役割
SIMBLを紹介する前に、その仕組みについて説明しておきたい。どうして非純正プラグインが動作するか、なぜSIMBLが必要かが、これでハッキリするはずだ。
まずは基礎概念の「ポージング」について。ポージングとは、Cocoa / ObjCに用意されているクラスオブジェクトを置き換える機構だ。考え方とプログラミングの実際は木下誠氏の連載 (ダイナミックObjective-C 第12回「ポージングで乗っ取り」) に詳しいが、要はこの機構を応用したプログラムを作成すれば、Cocoaアプリに任意の機能を追加できるということ。ポージングは決して著作権を侵害するようなクラックではなく、むしろCocoa / ObjCの特性を生かした合法かつ高等なハックである、ということもあわせて理解しておきたい。
ポージングを応用したプログラムだが、動作させるにはCocoaアプリの起動時に読み込ませなければならない。そこで着目されたのが、Cocoaの文字入力機構「インプットマネージャ」だ。Cocoaアプリは、起動時に~/Library/InputManagers
にあるバイナリを (たとえ文字入力に無関係でも) 参照する仕様のため、まんまと任意のプログラムを読み込めるという仕掛け。ちなみに、Safari版のCoolirisやGoogle Gearsも、この方法を利用している。
SIMBLは、このインプットマネージャを利用したハックの統一仕様と考えればいいだろう。仕組みやプラグインの開発方法に大きな違いはないが、SIMBLに準拠したほうが後の管理がラクになるため、多くの開発者がこちらを選択しているようだ。
SIMBLプラグインの導入
Leopardでは、インプットマネージャを利用した追加プログラムは/Library/InputManagers
以下にインストールされる。~/Library/InputManagers
など、Tigerのとき有効だったディレクトリは無視される仕様だ。SIMBL本体も、前述したCoolirisやGoogle Gearsも、このディレクトリへインストールされる。
Leopard対応のSIMBLは、Cocoaアプリが起動されたときに「/Library/Application Support/SIMBL/Plugins
」以下をサーチする。つまり、入手したSIMBLプラグインは、このディレクトリへコピーすればOK。ユーザ別のディレクトリ (~/Library/Application Support/SIMBL/Plugins
) も使用できるが、どちらか一方に統一したほうがいいだろう。なお、SIMBLプラグインのコピー後にログアウトする必要はないが、対象アプリケーションは一度終了させること。
SIMBLプラグインをいくつか紹介
SIMBLプラグインといえば、なんといっても「SafariStand」だろう。タブをサムネイル化してサイドバーに表示したり、ブックマークや履歴を検索したり、気の利いた機能がいくつも用意されている。このプラグインを利用するためだけでも、SIMBLを導入する価値があるといっていい。
SafariばかりがSIMBLのターゲットではない。こちらに挙げる「Megazoomer」は、[Command] + [Enter]キーを押すと、画面がフルスクリーンに切り替わる。元の状態へ戻すときも、同じショートカットキーを押せばOK。文字の表示がメインのTextEditやTerminalはともかく、Preview.appやSafariでは便利に使えるはずだ。
「Visor」もイイ感じ。Terminalを起動しておけば、登録しておいたショートカットキーを押すだけで、デスクトップ上半分がTerminalウインドウへと早変わり。コマンドの利用頻度が高いユーザにはお勧めだ。
動画 - 「Visor」 |
---|
Visorの動作の様子。Quakeなどの3Dアクションゲームのコマンド入力画面をヒントにしたらしい |