【コラム】

ダイナミックObjective-C

42 SIMBLでハックを管理

    木下誠  [2006/07/05]

    前回は、インプットマネージャを利用したハックの方法を説明した。InputManagersフォルダの下にバイナリを置くだけで実現できるが、すべてのCocoaアプリケーションに自動的に読み込まれてしまうという欠点もある。例えばWebブラウザであるSafariをハックするような、ターゲットとなるアプリケーションに特定したい場合もあるだろう。

    そのようなときのために、ハックするモジュールの読み込みを管理するためのソフトウェアがある。今回は、それを紹介しよう。

    SIMBL

    SIMBL(Smart InputManager Bundle Loader)は、アプリケーションを拡張するためのプラグインを管理するためのソフトウェアだ。名前から分かるように、InputManagersから侵入するタイプのモジュールを対象にしている。つまり、Cocoaアプリケーション専用という事だ。

    SIMBL

    SIMBLそのものは、InputManagersにインストールするソフトウェアだ。したがって、SIMBLは常にすべてのCocoaアプリケーションに読み込まれる事になる。

    そして、SIMBLは、独自のプラグインを定義している。とは言っても、それほど特殊なものではなく、基本的にはInputManagersにインストールするものと同じだ。違いは、まずSIMBLプラグインは、/Library/Application Support/SIMBL/Pluginsにインストールする。SIMBLは、起動すると、このフォルダを調査し、ランタイムにプラグインを読み込んでいく。

    このときに、SIMBLプラグインは、モジュールの情報を記述するInfo.plistファイルに、SIMBLのための情報も書いておく事ができる。ここに、このプラグインがターゲットとするアプリケーションを指定する事ができるのだ。

    アプリケーションは、識別子とバージョン番号を使って指定する。たとえば、Safariを指定するためには、次のように記述する。

    <key>SIMBLTargetApplications</key>
    <array>
        <dict>
            <key>BundleIdentifier</key>
            <string>com.apple.Safari</string>
            <key>MinBundleVersion</key>
            <integer>125</integer>
            <key>MaxBundleVersion</key>
            <integer>125</integer>
        </dict>
    </array>

    識別子はcom.apple.Safari、バージョン番号は125となっている。SIMBLは、プラグインを読み込む際にこの情報をチェックして、現在起動中のアプリケーションがターゲットかどうかを判定する、という訳だ。

    SIMBLプラグイン

    SIMBL自体は、プラグインの読み込みを管理するだけの機能しかない。実際の魅力は、プラグインにある。多数のプラグインがリリースされているので、その一部を紹介しておこう。

    AcidSearch
    Safariの検索機能を拡張

    SafariStand
    Safariの機能を様々に拡張

    SafariSource
    SafariでHTMLソースを表示したときに、色を付けて表示

    TerminalColors
    ターミナルの文字色を変更

    Safari用のプラグインが多いところが目を惹く。Webブラウザのような使用頻度の高いアプリケーションは、それだけ機能に対する細かな要望が多いのだろう。

    最後の10%を埋める

    ところで、SIMBLのWebページの冒頭に掲げられている文が興味深い。SIMBLとは何かを説明したものだ。

    問題:
    やりたい事の90%までしかできないアプリケーションがある。

    解決策
    新しいアプリケーションを開発する。

    もう少し良い解決策
    アプリケーションにパッチを当ててみる。

    新しいものを作るのではなく、前のものを継承して一部を変更する。これこそ、Objective-C、というよりは、オブジェクト指向の根底にある考え方ではないだろうか。そして、再コンパイルの必要もなく、元のソースコードを見る必要すらなしに、パッチを当ててしまえるのが、Objective-Cの面白いところだ。

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン