読込み可能バンドルの作成
本章では、XcodeによるCocoaの読込み可能バンドル─アプリケーションコンポーネントやプラグイン─の作り方を解説します。
Xcodeは読込み可能バンドル作成用のグラフィカルなツールを提供します。 読込み可能バンドルのビルドはアプリケーションのビルドと非常に良く似ています。 工程はは基本的な3つのステップから構成されます:
- Xcodeテンプレートから新規プロジェクトを作る
- ソースファイルを準備し編集する
- バンドルに関する情報にあわせてプロジェクト設定を変更する
以後の節でこれら工程の詳細を解説します。
プロジェクトの作成
読込み可能バンドルプロジェクトの作成は、アプリケーションプロジェクトの作成と大変良く似ています。適切なプロジェクトテンプレートを選択するだけです。 読込み可能バンドルプロジェクトを作成するには、以下の手順を踏みます:
- Xcodeを起動
- 「ファイル」メニューから「新規プロジェクト…」を選択
- テンプレートリストから「Cocoa Bundle」を選択
- 「次へ」をクリック
- プロジェクトの保存場所を選択し「完了」をクリック
ソースファイルとリソースの準備
Cocoa Bundleテンプレートから作成した新規プロジェクトは1つのソースファイル、main.c
とCocoaフレームワークへの参照を持っています。
殆どの場合、開発者はこのファイルを削除し、自分のソースを追加することでしょう。
Cocoaアプリケーションがそうであるように、新しいCocoaクラスや他のソースファイルの追加と同様、リソースやフレームワークの追加が可能です。
Cocoaにおける最小の読込み可能バンドルは、2つのファイル─1つがインタフェース(MyClass.h
)で、もう1つが実装ファイル(MyClass.m
)─による1つのクラスで構成されます。
ターゲット設定の変更で記述のあるように、バンドル内のクラスのうち1つを主要クラスに設定するべきです。
主要クラスが選択されていなければ、NSBundleは(Xcodeウィンドウに表示される)プロジェクトの最初のクラスを主要クラスとして使用します。
読込み可能バンドルがプラグインの場合、ホストアプリケーション開発者は大抵、フレームワークの中でプラグインアーキテクチャのインタフェースを提供します。 このフレームワークは典型的に、全てのプラグインの主要クラスが継承するクラス、ないし主要クラスが採用する(形式または非形式の)プロトコルを持ちます。
ターゲット設定の変更
バンドルが“善良なコンポーネント”(a good citizen)となるよう、バンドルの情報プロパティリストで2つの設定をする必要があります:
- バンドル識別子
- 主要クラス
バンドル識別子はシステム上の全てのバンドル─アプリケーション、カーネル拡張、全ての読込み可能バンドル、そしてその他の種類のバンドルで一意の識別子として働きます。
バンドル識別子はcom.apple.screensaver.Abstract
のように、DNS風の名前を逆転させたものにしなければなりません。
主要クラスはCocoaバンドルのエントリーポイントとして働きます。 名前衝突の防止で解説するように、グローバルで一意となるような方法で名付けなければなりません。 主要クラスが選択されていなければ、NSBundleが勝手に選びます。
これら設定を変更するには、以下の手順を踏んで下さい:
- プロジェクトの「ターゲット」ペインを開く
- 「ターゲット」グループのターゲット一覧からバンドルを選ぶ
- Under Info.plist Entries > Simple View, select Basic Information.
- Enter the desired bundle identifier into the text field labeled “Identifier:”.
- Also under Info.plist Entries > Simple View, select Cocoa-Specific.
- Enter the name of the principal class into the text field labeled “Principal class:”.