もうすぐ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版のCoolirisGoogle Gearsも、この方法を利用している。

SIMBLは、このインプットマネージャを利用したハックの統一仕様と考えればいいだろう。仕組みやプラグインの開発方法に大きな違いはないが、SIMBLに準拠したほうが後の管理がラクになるため、多くの開発者がこちらを選択しているようだ。

SIMBLプラグインを利用するには、インプットマネージャを偽装 (?) するSIMBL本体が必要

SIMBLプラグインの導入

Leopardでは、インプットマネージャを利用した追加プログラムは/Library/InputManagers以下にインストールされる。~/Library/InputManagersなど、Tigerのとき有効だったディレクトリは無視される仕様だ。SIMBL本体も、前述したCoolirisやGoogle Gearsも、このディレクトリへインストールされる。

プラグインを所定のフォルダへFinderでコピーすればOK。コピーには管理者のパスワードが必要

Leopard対応のSIMBLは、Cocoaアプリが起動されたときに「/Library/Application Support/SIMBL/Plugins」以下をサーチする。つまり、入手したSIMBLプラグインは、このディレクトリへコピーすればOK。ユーザ別のディレクトリ (~/Library/Application Support/SIMBL/Plugins) も使用できるが、どちらか一方に統一したほうがいいだろう。なお、SIMBLプラグインのコピー後にログアウトする必要はないが、対象アプリケーションは一度終了させること。

SIMBLプラグインをいくつか紹介

SIMBLプラグインといえば、なんといっても「SafariStand」だろう。タブをサムネイル化してサイドバーに表示したり、ブックマークや履歴を検索したり、気の利いた機能がいくつも用意されている。このプラグインを利用するためだけでも、SIMBLを導入する価値があるといっていい。

SIMBLプラグインの定番「SafariStand」。気の利いた機能が豊富に用意された、定番のSIMBLプラグインだ

SafariばかりがSIMBLのターゲットではない。こちらに挙げる「Megazoomer」は、[Command] + [Enter]キーを押すと、画面がフルスクリーンに切り替わる。元の状態へ戻すときも、同じショートカットキーを押せばOK。文字の表示がメインのTextEditやTerminalはともかく、Preview.appやSafariでは便利に使えるはずだ。

Megazoomerによりフルスクリーン表示したTerminalで「banner ";-)"」を実行したところ。ふだんの80X24ではズレてしまうが、これならバッチリ

Visor」もイイ感じ。Terminalを起動しておけば、登録しておいたショートカットキーを押すだけで、デスクトップ上半分がTerminalウインドウへと早変わり。コマンドの利用頻度が高いユーザにはお勧めだ。

Visorの設定画面。ショートカットキー (デフォルトでは[Control]+[F1]キー) を押すと、デスクトップ上半分がTerminalウインドウになる

動画 - 「Visor」
Visorの動作の様子。Quakeなどの3Dアクションゲームのコマンド入力画面をヒントにしたらしい