|
|
Log In | Not a Member? |
Contact ADC |
| < Previous PageNext Page > |
Cocoaに独自の開発環境があるというのは、正確な表現ではありません。たとえばプログラマは、アップルの主要な開発アプリケーションであるXcodeとInterface Builderを使って、Carbonなど、ほかのMac OS Xアプリケーション環境向けのソフトウェアを開発できます。また、XcodeやInterface Builderをまったく使わずに、Cocoaアプリケーションを開発できます。たとえば、MetrowerksのCodeWarriorを使用しても、Cocoaプロジェクトの管理、コンパイル、デバッグができます。さらに、徹底してこだわるのであれば、Emacsなどのテキストエディタを使ってコードを書き、makeファイルでコマンドラインからアプリケーションをビルドし、gdbデバッガを使ってコマンドラインからアプリケーションをデバッグすることも可能です。
しかし、Cocoaソフトウェアの開発には、XcodeとInterface Builderの使用が推奨されます。それらの起源はCocoa自体の起源と一致しているため、ツールとフレームワークの間には高度な互換性があります。XcodeとInterface Builderのおかげで、Cocoaソフトウェアプロジェクトの設計、管理、ビルド、デバッグはきわめて簡単です。さらに、AppleScript Studioでは、アプリケーションの機能を拡張し、スクリプタブルなCocoaアプリケーションと、AppleScriptを使ってほかのアプリケーションを制御するアプリケーションの両方を作成できます。
Xcode
Interface Builder
AppleScript Studio
その他の開発ツール
Xcodeは、アップルのMac OS X用統合開発環境(IDE)の基盤となるエンジンです。プロジェクトの開始から運用まで、ほとんどの内容を管理するアプリケーションです。このアプリケーションでは、以下のことができます。
ターゲットの要件、依存関係、ビルドスタイルの指定も含めた、プロジェクトの作成と管理
構文の色分けや自動インデントなどの機能を備えたエディタでの、ソースコードの記述
ヘッダファイルや書類など、プロジェクトのコンポーネント間のナビゲートと検索
プロジェクトのビルド
グラフィカルなソースレベルデバッガを使ったプロジェクトのデバッグ
Xcodeでは、C、C++、Objective-C、Objective-C++、Javaで記述したソースコードからプロジェクトをビルドします。コマンドラインツール、フレームワーク、プラグイン、カーネル拡張、バンドル、アプリケーションなど、Mac OS Xでサポートしているあらゆる種類の実行可能ファイルを生成します。Xcodeでは、ビルドおよびデバッグツール、実行可能パッケージ(情報プロパティリストとローカライズされたバンドルなど)、ビルドプロセス(ファイルのコピー、ファイルのスクリプティング、その他のビルド段階)、ユーザインターフェイス(分離型およびマルチビュー型のコードエディタなど)をほとんど無制限にカスタマイズできます。複数のソースコード管理システム(特にCVSとPerforce)もサポートしており、リポジトリへのファイルの追加、変更のコミット、最新バージョンの入手、バージョンの比較ができます。
Figure 1-4に、Xcodeのプロジェクトのサンプルを示します。
Xcodeは、特にCocoa開発に適しています。プロジェクトを作成するときには、Xcodeが、Cocoaプロジェクトのタイプ、すなわち、アプリケーション(Objective-CまたはJava)、ドキュメントベースのアプリケーション(Objective-CまたはJava)、ツール、バンドル、フレームワークなどに応じたプロジェクトテンプレートを使って最初の開発環境をセットアップしてくれます。Xcodeは、CocoaソフトウェアのコンパイルにはGNU Cコンパイラ(gcc)を使い、ソフトウェアのデバッグにはGNUソースレベルデバッガ(gdb)を使います。gccとgdbは、CocoaがNeXTSTEPのときからCocoa開発に使用され(“「小さな歴史」”を参照)、Cocoaバイナリのコンパイルとデバッグをサポートするために長年にわたって洗練、拡張、調整されてきました。
Xcodeには、インポートしたすべてのCocoaフレームワークのクラスに加えて、継承関係にあるカスタムクラスを表示できるクラスブラウジング機能もあります。クラスブラウザからは、任意のクラスに関するドキュメントをリクエストできます。さらに、各種のデザインツールも含まれています。たとえば、Core Dataアプリケーションで使用されるエントリの属性と関係をデザインするツールなどです。
Xcodeは、もう1つの主要な開発アプリケーションであるInterface Builderと高度に統合されています。Interface Builderでは、クラス(スーパークラス、アウトレット、アクション)を定義し、プロジェクトのクラスごとにスケルトンヘッダとソースファイルを生成できます。Xcodeでは、カスタムクラスにアウトレットとアクションを追加でき、Interface Builderでそれらのエントリをnibファイルにインポートできます。
注: 簡単にいえば、アウトレットはオブジェクト間の接続をアーカイブしたものです(1つのオブジェクトのインスタンス変数として指定されます)。アクションは、ボタンやスライダなどのオブジェクトを操作したときに、ターゲットと呼ばれる別のオブジェクト(通常はカスタムオブジェクト)において呼び出されるメソッドです。Interface Builderは、ターゲットと、対応する他のオブジェクト(コントロールと呼ばれます)の間の接続もアーカイブします。アウトレット、ターゲット、およびアクションの詳細については、「“アウトレット”」および「“ターゲット/アクションメカニズム”」を参照してください。
Cocoaプロジェクト用のもう1つの主要な開発アプリケーションはInterface Builderです。その名のとおり、Interface Builderはユーザインターフェイスを作成するためのグラフィカルなツールです。Interface Builderは、CocoaがNeXTSTEPとしてスタートした頃から存在しています。以来、この種のアプリケーションの中では最高のものとして広く認められてきました。当然のことながら、Interface BuilderとCarbonとの統合は緊密です。さらに、Interface BuilderでCarbonアプリケーションのユーザインターフェイスを作成することもできます。
Interface Builderは3つの主要なデザイン要素を中心としています。
nibファイル。nibファイルは、実際にはユーザインターフェイス上に表示されるオブジェクトを含むアーカイブ形式のファイルラッパ(不透過なディレクトリ)です。基本的にこのアーカイブは、スクリーン上(ウインドウの場合)、またはウインドウ内のオブジェクトのサイズと位置など、個々のオブジェクトに関する情報を含んだオブジェクトグラフです。Cocoaアプリケーションのnibファイルには、カスタムクラスのプロキシ参照と、Cocoaバインディングテクノロジーを利用した接続など、オブジェクト間の接続に関する情報も含まれます。Interface Builderでユーザインターフェイスを作成して保存すると、インターフェイスを再作成するのに必要なすべての情報がnibファイルに保存されます。インターフェイスで使われているイメージファイルとサウンドファイルもnibファイルに含めることができます。
Interface Builderは、Cocoaプロジェクト内のローカライズされているディレクトリにnibファイルを保存します。プロジェクトをビルドすると、nibファイルは、作成されたバンドル内の、対応するローカライズされたディレクトリにコピーされます(このようにして、nibファイルはユーザインターフェイスを簡単にローカライズする方法を提供します)。デフォルトの、つまりXcodeで作成されたとおりのCocoaアプリケーションにはメインのnibファイルがあり、アプリケーションの起動時に自動的に読み込まれ、表示されます。メインのnibファイルには、アプリケーションのメインメニューと、おそらくいくつかのウインドウが含まれています。アプリケーションは、要求に応じて、書類や環境設定ウインドウなど二次的なnibファイルを読み込むことができます。
Interface Builderは、nibファイルウインドウにnibファイルの内容を表示します。nibファイルウインドウでは、カスタムクラスの定義と、オブジェクト間の接続の確認もできます。
パレット。Interface Builderのパレットウインドウには複数のパネル、すなわち「パレット」が含まれており、それぞれに関連するユーザインターフェイスオブジェクトが集められています。ユーザインターフェイスを作成するには、パレットのオブジェクトを適切なサーフェスにドラッグします。サーフェスは画面、ウインドウ、何らかのビュー、メインメニューのいずれでも構いません(パレットオブジェクト自体は可視である必要はありませんが、何らかの方法でインターフェイスに作用するものでなければなりません)。オブジェクトをパレットからドラッグすると、Interface Builderが当該オブジェクトのデフォルトインスタンスをインスタンス化します。これは実際のCocoaオブジェクトで、実行時に作成されるインスタンスの代わりになるプロキシオブジェクトではありません。必要であれば、Interface Builderパレットに独自のカスタムオブジェクトを配置できます。
インスペクタ。Interface Builderには、ユーザインターフェイス上のオブジェクトを対象とするインスペクタ(情報ウインドウと呼ばれます)があります。情報ウインドウは、オブジェクトの初期の属性とサイズを設定するために使用できる一連の選択可能なパネルで構成されています(ただしサイズや多くの属性は直接操作して設定できます)。2つのパネルを使用してオブジェクト間の接続を確立できます。一方はアウトレットとアクションを使い、もう一方はバインディングを使います。また別のパネルではApplication Kitスーパークラスをカスタムクラスに置き換えることができます。そのほか、さらに特化されたパネルでは、ヘルプタグ、AppleScriptイベントハンドラ、Sherlockチャネルをユーザインターフェイスオブジェクトと関連付けることができます。
Figure 1-5に、Interface Builderで開いたnibファイルと関連ウインドウを示します。
Interface Builderでユーザインターフェイスを作成する一般的な手順は簡単です。
ウインドウオブジェクトまたはパネルオブジェクトを画面上にドラッグします(パネルはダイアログまたはセカンダリウインドウと同じです)。
ウインドウの最初の(または固定的な)位置、サイズ、属性を設定します。
テキストフィールド、ボタン、テーブルビュー、ポップアップリストをウインドウ上または事前に配置したビュー上にドラッグします。
上のオブジェクトの最初の(または固定的な)位置、サイズ、属性を設定します。
アプリケーションのカスタムクラスを定義します。
これはInterface Builder自体で、または事前に作成したヘッダファイルをInterface Builderに読み込むことで実行できます。カスタムクラスを定義すると、Interface Builderでそのアウトレットやアクションを指定できます。
オブジェクト間のバインディングまたは接続を確立します。これには次のいずれかを行います。
インターフェイスを保存してテストします。
Interface Builderには、各設計段階でインターフェイス(カスタム動作は除く)をテストできる機能があります。
定義した各カスタムクラスのヘッダファイルとソースファイルを作成します。これらのファイルは、関連するXcodeプロジェクトに表示されます。
Interface Builderには、配置された各オブジェクトを移動またはリサイズするときに、Aquaヒューマンインターフェイスガイドラインへの準拠性を、一時的な青い線で表示する機能があります。これには、推奨サイズ、位置揃え、ユーザインターフェイス上のほかのオブジェクトやウインドウの境界線との相対的な位置が含まれます。
参考資料: この、ユーザインターフェイス開発ツールの詳細については、『Interface Builder』を参照してください。“「nibファイル」”では、nibファイルついて、また、アプリケーションにおけるそれらの使用方法を説明しています。さらに、アウトレット、ターゲット/アクションメカニズム、Cocoaバインディングテクノロジーの概要については、“「オブジェクトとの通信」”も参照してください。
何年にもわたってMac OSを特徴付けてきた機能は、AppleScript言語で記述したスクリプトを使ってユーザがアプリケーションを制御できることでした。この機能により、複数のアプリケーションがかかわる一連の複雑な処理をつなぎ合わせることができるため、多くのユーザがこの機能を必須のものと考えています。AppleScriptの機能は、Mac OS Xにも導入されました。AppleScript Studioは、複雑なユーザインターフェイスの制御にAppleScriptスクリプトを利用する、Cocoaアプリケーション作成のための開発テクノロジーです。
AppleScript StudioはAppleScript、Xcode、Interface Builder、およびCocoaの要素を結合して、AppleScriptソリューションを作成するために洗練された環境を用意しています。以下のことが可能なアプリケーションをビルドできます。
AppleScriptスクリプトの実行
アプリケーションのユーザインターフェイスの制御
スクリプタブルアプリケーション、またはオペレーティングシステムのスクリプタブルな部分の制御
AppleScript StudioはAppleScriptとXcode、Interface Builder、およびCocoaを統合しているため、スクリプトを記述する際に、それぞれの独自の強みと機能を利用できます。Interface Builderパレットから豊富な一連のユーザインターフェイスオブジェクトをドラッグして、好みに合わせてカスタマイズできます。Aquaヒューマンインターフェイスガイドラインのサポートも組み込まれています。また、複数のターゲットやビルド手順を伴う複雑なプロジェクトのビルドとメンテナンスもできます。
この開発環境では、AppleScriptスクリプトの作成に従来使用されてきたScript Editorアプリケーションを十分にしのぐスクリプト機能を利用できます。以下のような機能があります。
任意の大きさのスクリプトの作成
スクリプト内の検索と置換
変数値を指定した実行が可能なシングルステップのスクリプトデバッグ
スクリプト中のハンドラとプロパティへの簡単なアクセス
アプリケーションスクリプティングの用語と連動した柔軟性のあるディクショナリビューア
XcodeとInterface Builderは、Cocoaアプリケーションの開発に使用する主要なツールですが、それ以外にも多数のツールがあります。これらの補助的なアプリケーションとコマンドラインツールの多くは、アプリケーションの開発段階で役に立ちます。
このセクションでは、補助的な開発アプリケーションについて説明し、いくつかのコマンドラインツールも簡単に紹介します。しかし、後者はあまりにも多数であるため、その要約さえここでは掲載できません。最善の方法は、/usr/binと/usr/sbinにあるツールのマニュアルページ(manページ)を調べることです。それには、Terminalシェルでmanに続けてツールの名前を入力します。/Developer/Toolsにも、アップルが開発したコマンドラインツールがいくつかあります。
以下のアプリケーションは、プログラムのパフォーマンス面の測定・分析に使用します。/Developer/Applicationsにあります。
Sampler: プログラムの実行動作とそのメモリの割り当てを分析します。名前のとおり、Samplerはプログラムの関数呼び出しスタックを定期的にサンプリングします。サンプリングセッションが終了すると、最も頻繁に遭遇した関数やメソッドが表示されます。この情報は、大量のCPU時間を消費する関数やメソッド、過剰なメモリ割り当てが発生する関数やメソッドを見つけるのに役立ちます。
ObjectAlloc: プログラムにおけるメモリ割り当てと割り当て解除を追跡します。この履歴データにより、繰り返しの多い割り当て動作と全体的な割り当ての傾向が明らかになります。Objective-Cコードの場合、ObjectAllocはすべてのalloc呼び出しだけでなく、すべてのcopy、retain、release、autoreleaseメソッドの呼び出しを記録します。また、malloc(および関連する)関数によって割り当てられたメモリはもちろん、これらのメソッドに対応するCore Foundation関数も記録します。
MallocDebug: プログラムに現在割り当てられているすべてのメモリブロックを割り当て時の呼び出しスタック別に整理して表示します。一目見ただけで、アプリケーションがどの程度の割り当てメモリを消費しているか、そのメモリがどこから割り当てられているか、どの関数に大量のメモリが割り当てられているか分かります。MallocDebugでは、プログラムのほかのどこでも参照されていない割り当てメモリを見つけることができるため、リークを見つけたり、メモリが割り当てられた場所を正確に追跡したりするのに役立ちます。
QuartzDebug: アプリケーション自体の表示をデバッグするのに役立つツールです。特に、大量の描画やイメージングを実行するアプリケーションで役に立ちます。QuartzDebugには、次のデバッグオプションがあります。
各描画操作後にグラフィックコンテキストの内容をフラッシュする自動フラッシュ描画
画面の領域を更新する直前に黄色でペイントするモード
システム全体におけるウインドウリストの静止画によるスナップショットを撮り、各ウインドウの所有者および各ウインドウが消費しているメモリ量を表示するオプション
Thread Viewer: プロセスのスレッド間の活動を表示します。各スレッドにおける活動のタイムラインが、アクション別に色分けされて表示されます。タイムラインをクリックすると、その時点における活動のサンプルバックトレースを表示できます。
パフォーマンス分析には、以下のコマンドラインツールを使用することもできます。
top: 現在実行中のプロセスについて、定期的にサンプリングした統計データを表示します。
gprof: プログラムの実行プロファイルを作成します。
fs_usage: ファイルシステムのアクセス統計データを表示します。
そのほかにも、パフォーマンス分析に利用できるコマンドラインツールはたくさんあります。Cocoaアプリケーション開発で使用できるパフォーマンスツールとアプリケーションの詳細と、パフォーマンスに関する概念やテクニック、戦略については、「Performance」のプログラミングトピックを参照してください。
Cocoaアプリケーションの開発には、次のアプリケーションも役に立ちます(/Developer/Applicationsにあります)。
Icon Composerとicns Browser:アプリケーションと書類のアイコンに関しては、Icon Composerを使ってさまざまな形式のインポートしたイメージからicnsファイルを作成できます。icns Browserアプリケーションを使うと、1つのアイコンからさまざまなサイズやビット深さ、ビットマスクのバリエーションを作成できます。
FileMerge: テキストファイル(ソースファイル、ヘッダファイル、プロパティリストなど)の「diff(差分)」を視覚的に表示し、選択的なマージを行う機能を提供します。
Package Maker: Installerアプリケーションでインストールするアプリケーション(およびその他のソフトウェア)をパッケージします。
| < Previous PageNext Page > |
Last updated: 2006-05-23
|
Get information on Apple products.
Visit the Apple Store online or at retail locations. 1-800-MY-APPLE Copyright © 2007 Apple Inc. All rights reserved. | Terms of use | Privacy Notice |