|
アップルのツールスイートおよび統合開発環境(IDE)であるXcodeを使うと、開発者はMac OS X Tiger対応アプリケーションを手早く簡単に開発できます。Xcodeは、Mac OS Xが備えている優れたテクノロジーをすべて活用できるように設計されています。また、作成するアプリケーションを将来に向けて確実に備えておけます。現在のバージョンであるXcode 2.1からは、現在のPowerPCベースのMacと将来のインテルベースのMacの両方で実行できる、Universal Binaryアプリケーションを作成できるようになりました。Xcodeを使って開発することで、優れたアプリケーションを今すぐ作成でき、将来への備えも万全となります。 2005年6月にリリースされたXcode 2.1は、着実に機能やツールを増やし、パフォーマンスを向上させてきたこれまでのバージョンのXcodeプロジェクトを土台として構築されています。Xcodeは成熟した堅牢なツールセットであり、Fix and Continue、ZeroLink、予測コンパイル、リモートデバッグ、分散ビルドなどのテクノロジーを備えています。 この記事では、すでにXcodeを使い始めている方を対象として、最新バージョンで利用できる主な機能について説明しています。また、Xcodeをまだ使っていない方のために、作業を始める方法についても紹介しています。今すぐUniversal Binaryの作成を始めて、Mac OS X Tigerの持つあらゆる最新のテクノロジーを最大限活用してください。 コードを対象とした作業
まず特筆すべきなのがユーザインターフェイスです。Xcodeでは、直感的で習得しやすいユーザインターフェイスを使用して作業ができます。すべての人が同じ方法で作業をするとは限りません。そのため、Xcodeは、非常に高い柔軟性を備えたツールとなっており、開発プロセスをカスタマイズするためのさまざまな手段が多数用意されています。その中で視覚的に最もわかりやすいのが、開発環境を次の3つのレイアウトのいずれかに設定できることです。
どのレイアウトを選んでも、Xcodeのユーザインターフェイスには、プロジェクトを構成する各種のファイルやリソースを操作するための主要な要素が2つあります。それが、「Groups & Files」リストと詳細ビューです。 「Groups & Files」リスト「Groups & Files」リストには、プロジェクトの概要が表示されます。これを使って、プロジェクトを構成しているすべての項目を管理しやすい単位でまとめて整理し、管理することができます。リストの先頭にはプロジェクトグループがあります。このグループには、プロジェクトで使われているすべてのファイル、フレームワーク、およびライブラリが表示されます。プロジェクトグループの項目は、ファイルシステム上にどのように置かれているかに応じて整理されるのではなく、より明確で論理的なグループに整理されます。ユーザは自分のニーズに合わせて整理方法を変更できます。 プロジェクトグループの下には一連のスマートグループがあります。これらのグループには、特定のルールやパターンに適合するファイルその他の情報が集められます。Xcodeはいくつかの組み込みのスマートグループを備えており、マウスをクリックするだけで、頻繁に使われる情報を表示できます。たとえば、“Targets(ターゲット)”グループには、プロジェクトのビルドのために設定されているすべてのターゲットがあります。“Errors and Warnings(エラーと警告)”グループには、直前のビルドで生成されたすべての警告とエラーが一覧表示されます。“Project Symbols(プロジェクトシンボル)”グループには、プロジェクトで定義したシンボルがすべて表示されます。
このほか、独自のスマートグループを定義することもできます。たとえば、プロジェクトの中で 詳細ビュー「Groups & Files」リスト内のグループをクリックすると、そのグループに属する項目の一覧が表形式で詳細ビューに表示されます。たとえば、プロジェクトグループを選択すると、そのプロジェクトに属するすべてのファイルが表示されます。 詳細リストに表示されるファイルの一覧は、ウインドウの右上にある「Search」フィールドにタイプ入力することで簡単に絞り込むことができます。タイプ入力するとリストが動的に更新され、検索ボックスに入力した文字列に適合する項目だけが表示されます。
カスタマイズ可能なキーバインディングXcodeのGUIは、プロジェクトを進めていくうえで大いに役に立ちます。しかし、1つのファイルに対して作業を行うときは、インターフェイスのグラフィカルでない構成要素がたいへん重要になります。それは、コードのナビゲーションに使うキーストロークです。デフォルトでは、Xcodeでは、すべてのアプリケーションで使われている標準のキーバインディングのセットに基づいたキーバインディングのセットが使われます。しかし、別の環境での作業経験が長い方は、指先が覚えているキーストロークを維持したいと思うかもしれません。そこで、Xcodeではキーバインディングのセットを次のいずれかに変更することができるようになっています。
さらに、独自のキーバインディングのセットを設定することで、自分の好みに合わせて操作方法をカスタマイズすることもできます。 バージョン管理との連携Xcodeは、CVS、Subversion、Perforceといったいくつかのバージョン管理システムについて、それらへの共通のインターフェイスを備えています。Xcodeでは、プロジェクトの更新や、ファイルに加えた変更のコミットなど、バージョン管理作業のほとんどを作業中に簡単に実行できます。また、プロジェクトのローカルコピーにあるファイルにどのような変更が加えられたのかを追跡し、それらのファイルのステータスを表示することもできます。 統合された単体テストテスト先行開発や単体テストは、ソフトウェア開発の中で広く受け入れられるようになってきました。単体テストを実施することで、アプリケーションをリファクタリングした後でも、アプリケーションが引き続き想定どおりに動作するという確信を持つことができます。その結果、アプリケーションの開発速度を速めるのに役立ちます。また、単体テストは、コードベース内の問題のうちすでに対処済みのものについて再び対処するという後戻り作業を防ぐのにも役立ちます。 Xcode 2.1では、単体テストがIDEに直接統合されているほか、OCUnitを使ったObjective-Cのテストや、CPlusTestを使ったC++のテストについてもサポートされています。どちらのフレームワークを使っても、CocoaおよびCarbonアプリケーション用のテストバンドルを作成できます。また、JUnitなどのほかの単体テストフレームワークを統合することも簡単にできます。作成した単体テストは、プロジェクトをビルドするたびに実行でき、エラーがあった場合は「Build Results」ウインドウに報告されます。その結果、アプリケーションが想定どおりに動作しているかどうか直ちにフィードバックを得ることができます。 コードの視覚化
プロジェクトが大きく複雑になるほど、その全体像を視野に入れておくことが難しくなります。コードの詳細が多くなるため、全体の構造がはっきりしなくなる可能性があります。視覚的なモデルは、視野の中に全体像を戻すのに役立ち、プロジェクト全体の構造を把握できるようになります。また、視覚的なモデルによって、それまで気付かなかったコンポーネントどうしの関係も把握できるようになります。 つまり、プロジェクトの個々の部品ではなく、そのアーキテクチャを眺めることができるようになります。 視覚的なモデルはまた、プロジェクトの構造をほかの人に伝える手段にもなり、開発者ほどプロジェクトに深く関与していない人にも伝えることができます。 Xcodeでは、「クラスモデル」と「データモデル」の2種類の視覚的なモデルを作成して作業を行うことができます。クラスモデルを同僚に見せて、問題の解決方法に関して意見を求めることができます。データモデルを見込み顧客に提示して、顧客が抱えている課題を効果的に解決しているかどうかを確認できます。または、社内のほかの人々にプロジェクトの進捗に驚嘆してもらえるように、プロジェクトの大きな図面を印刷して壁に掲示することも可能です。 クラスモデルXcodeのクラスモデラはObjective-C、C++、Javaの各ソースコードファイルを対象とすることができ、少数のクラスだけを表示したり、プロジェクト内のすべてのクラスを表示したりできます。フレームワーク内のすべてのクラスを表示することも可能です。1回限りのモデルを手早く作成してプロジェクトの一部分を調べたり、あるいは、永続モデルを作成してプロジェクトの一部とし、CVSやSubversionなどのソース管理システムに対してチェックインまたはチェックアウトすることができます。
Xcodeが作成するクラスモデルは単なる静的な表現ではなく、優れたインタラクティビティを備えています。クラスモデルを使い、コードのナビゲーションを行うことができます。プロパティ(Properties)や操作(Operations)をダブルクリックすると、すぐに関連するコードに移動します。また、システムフレームワークのドキュメントをクラスモデルから直接閲覧することもできます。さらに、モデルはそのベースになっているソースファイルの変更に従ってリアルタイムで更新されます。たとえば、クラスにメソッドを追加すると、そのクラスの図の“Operations”セクションにメソッドが即座に表示されます。同様に、クラスからインスタンス変数を削除すると、そのクラスの図の“Properties”セクションからインスタンス変数が削除されます。 モデルを作成した後は、図を拡大または縮小したり、クラスの色を変えたり、移動したり、すべてのクラスを固定サイズに設定したり、配置を調整したりできます。自分にコードがもっとも把握しやすいように、自由にアレンジできます。 データモデル
データモデルは、単にアプリケーションのクラス階層をグラフィカルに表現するだけではありません。これらはCore Data、つまり、Mac OS X Tigerで初めて導入されたオブジェクトグラフ管理と永続性のフレームワークの基礎的な要素です。オブジェクトグラフ管理機能により、完全なアンドゥとリドゥが可能な状態で、アプリケーション内のデータを操作できます。また、明確に定義されたデータ整合性インフラストラクチャが提供されます。オブジェクトグラフの永続化により、アプリケーション内のデータが自動的にディスク上のファイルに格納され、それから取得されます。 これらの機能を利用するために必要なコードはごくわずかです。Core Dataは、スキーマとも呼ばれるデータモデルを使って、データを持つエンティティをアプリケーションの中で定義し、それらのエンティティをユーザに代わって管理し格納することができます。Core Dataは、永続ストア内のデータをアプリケーション内のオブジェクトのインスタンスにマッピングする処理について、そのすべての詳細を処理します。これらのモデルをXcodeの中でグラフィカルに作成することで、ユーザは自分のスキーマをすばやく簡単に定義できます。大きなXMLを作成して編集したり、たくさんの面倒な定型コードを記述したりする必要はありません。 ドキュメントのすばやい検索
Xcodeの持つ最も便利な機能の1つに、ドキュメントブラウザがあります。ドキュメントブラウザを使えば、システムにインストールされている各種のフレームワークに対応したAPIをすばやく閲覧できるほか、“ この優れた機能をさらに便利にするため、Xcodeは、ADC Reference Libraryで新しいドキュメントが利用可能になったときに通知する機能を備えています。新しいドキュメントは自分のローカルディスクにダウンロードして、ローカルコピーを更新できます。したがって、35,000フィート上空の機内でネットワークに接続せずに作業をしていても、常に最新の開発者ドキュメントを参照できます。 ドキュメントブラウザはまた、全文検索でSearchKitを使うようにアップグレードされています。このため、従来よりも高速で正確な検索が可能です。さらに、Xcodeでは、ローカルにインストールされたコンテンツ用の検索インデックスだけでなく、ADCのWebサイトおよびADC Developer DVDで利用できるドキュメントについても、検索インデックスが用意されています。 すばやく簡単なビルドIDEを使う主な目的は、もちろんアプリケーションを作成することです。Xcodeでは、業界標準のGCC 4.0コンパイラを使う一方で、すばやく簡単なビルドを確実に実現しています。また、Xcodeでは編集−ビルド−デバッグのサイクルを最適化できるように、コンパイル済みプレフィックスヘッダ、予測コンパイル、分散ビルド、およびZeroLinkが使われています。さらに、Xcode 2.1からは開発ビルドとリリースビルドが別々の2か所でビルドされるため、プロジェクトの作業を続けながらリリースビルドを定期的に作成してほかの作業者と簡単に共有できます。
コンパイル済みプレフィックスヘッダ
プロジェクト内のソースファイルの多くには、共通のシステムヘッダやプロジェクトヘッダの一部がインクルードされています。たとえば、Cocoaアプリケーションのソースファイルには、ほかの多数のヘッダをインクルードする コンパイル済みプレフィックスヘッダを使うと、プロジェクト内のソースコードファイルの全部、またはそのほとんどで使われている共通のヘッダ群を定義できます。Xcodeを使用し、定義したプレフィックスヘッダを1回だけコンパイルすれば、その結果を、コンパイルされるすべてのファイルと共有できます。また、プロジェクトの以降のビルドで同じコンパイル済みヘッダを使うことで、ビルドをさらに高速化できます。なお、コンパイル済みプレフィックスヘッダは共有の場所に格納されるようになったので便利です。このため、すべてのプロジェクトで同じデータを再利用できるので、ビルド時間がさらに短縮されます。 ZeroLink
ZeroLinkは、ビルドからリンクプロセスをなくすことによってビルドプロセスを高速化します。その代わりに、各オブジェクトの 予測コンパイルご存知のように、通常、コードをコードバッファに入力している間は、コンピュータのリソースが十分に利用されていません。そして、「Build」ボタンをクリックすると、コンピュータがしばらくの間フル回転で動作しますが、ビルドが完了した後はアイドルに近い状態に戻るだけです。予測コンパイルを使うと、ソースコードのコンパイル作業をそのような空いた時間に移すことができます。そのため、「Build」ボタンをクリックしてからビルドが完了するまでの時間を大幅に短縮できます。 予測コンパイルでは、ネイティブのビルドシステムで使われる各ターゲットについて、それらのビルド状態に関する情報がXcodeによって管理され、その情報がコンパイルに使われます。Xcodeは、ターゲットのプロダクトのビルドに使われるファイルのうちどれが古くなっており、それらのファイルを最新にするためにどのような処理が必要なのかを、いつでも認識しています。予測コンパイルを有効にすると、この作業の大半がバックグラウンドで実行されます。その後、「Build」ボタンをクリックすると、Xcodeはその作業結果をできるだけ多く利用して変更内容をディスクに書き出します。その結果、ビルド時間が短縮されるので、ユーザはより多くの作業を実行できるようになります。 分散ビルドプロジェクトのビルド作業、特に個々のソースファイルのコンパイルは、大部分を並列に処理することが可能です。デュアルプロセッサ搭載のコンピュータを使っている場合、Xcodeではビルドプロセスが両プロセッサ間で自動的に並列処理されます。ビルドをさらに高速化したい場合は、ローカルネットワーク上の他のマシンを利用するようにXcodeを設定し、それらのマシンの力を借りてソースコードをビルドすることができます。
分散ビルドを使うためには、ビルドに参加するすべてのマシンで同じバージョンのコンパイラ、Xcode、およびMac OS Xを使う必要があります。後は、各コンピュータをコンパイルホストとして参加できるように有効にするだけです。これには、Xcodeの「Preferences」ウインドウを使います。 GCC 4.0現在バージョン4.0となっているGNU Compiler Collection(GCC)が、Mac OS Xのネイティブなランタイム環境であるMach-Oプログラムのビルドに使われます。GCC 4.0には、アプリケーションを高速化するための高度な最適化技法が数多く組み込まれています。その中で最も重要なのが、旧版のRegister Transfer Language(RTL)から受け継がれているTree SSA(Single Static Assignment)の使用です。Tree SSAは言語とターゲットのどちらにも依存しないように設計されており、RTLでは不可能なレベルでのコード解析と最適化を可能にしています。次の最適化が組み込まれています。
これらの最適化の中で最も特筆すべきものの1つが、自動ベクトル化です。スーパーコンピュータの分野から借用されたこの技法は、PowerPC G4およびG5プロセッサのVelocity Engineだけでなく、インテルプロセッサのSSEも、コードの中で容易に活用することができます。 C++の拡張
コード生成の最適化その他の新機能に加えて、GCC 4.0ではまったく新しいC++パーサーが導入されています。新しいパーサーは、Xcode 1.5で使われていた以前のバージョン(GCC 3.3)よりも格段に高速であり、C++ベースのプロジェクトのビルドで利点を発揮します。特に、C++標準ライブラリが 以前のバージョンのMac OS XでC++標準ライブラリを使うためには、ライブラリをアプリケーションに静的にリンクする必要がありました。Tigerでは、libstdc++がシステム上でダイナミックライブラリとして提供されています。その結果、アプリケーションのサイズが小さくなり、C++標準ライブラリに加えられた最新の機能向上を自動的に利用できます。 ビルドのカスタマイズプロジェクト、ターゲット、あるいはファイルのレベルで、ビルド設定を調整しなければならないことがよくあります。Xcode 2.1の新しいビルド設定によって、この作業が可能となりましたが、それだけではありません。別々のターゲットを作成しなくても、プロダクトの複数の「バリエーション」をビルドできます。その結果、作業が減り、ファイルのバージョン管理について心配する必要がなくなります。 ビルド設定の一般的な使いかたの1つに、ターゲットをデバッグバージョンとリリースバージョンの2つのバージョンのプロダクトとしてビルドするという使いかたがあります。新しいXcodeプロジェクトには、これら2つのビルド設定が定義済みの設定として含まれています。一般に、ほとんどの人にとって定義済みのビルド設定で十分ですが、これらのビルド設定を編集したり、新しいビルド設定を独自に定義したりすることも可能です。 対照的に、デバッグ用と最終ビルド用の2つのターゲットを作成する必要があったとしたら、両方のターゲットの同期を常に保つ必要があります。たとえば、一方のターゲットにファイルを追加した場合は、他方にも忘れずにファイルを追加する、といったことが必要になります。 ビルド設定を使うと、ターゲットのビルドフェーズやビルドルールを変更せずに、異なるビルド設定グループを使ってのビルドが可能です。変更の必要な値を含んだビルド設定を作成しておき、該当する設定をビルドしたほうがずっと簡単です。 さらに、設定は外部ファイルとして保存できるため、設定を複数のプロジェクト間で共有することもできます。 強力なデバッグ機能Xcodeのデバッガインターフェイスの背後では、GCC 4.0ツールセットの一部であるオープンソースのGDBデバッガが動作しています。デバッグは、Xcodeのデバッガユーザインターフェイスの中で、またはコマンドラインで、あるいはその両方を使って実行できます。デバッガでは、プログラムの実行を一時停止してその内容を調べ、コード内の問題を特定し修正することができます。 ブレークポイントとウォッチポイントXcodeのブレークポイント機能では、特定のコード行でプログラムの実行の流れを止めるブレークポイントを定義できるだけでなく、関数呼び出しやメソッド呼び出しの時点で、または特定の条件が成り立つときにも、プログラムの実行を一時停止することができます。また、変数の内容が変化したときにプログラムの実行を一時停止するウォッチポイントも設定できます。 プログラムの実行を単に停止するだけでなく、コンソールへの情報の出力、シェルコマンドの実行、音を鳴らしての警告など、Xcodeを通じてさまざまなアクションを実行することも可能です。
ビジュアルクラスデバッガXcodeでは、プログラムの実行の流れをまったく新しい方法で視覚化できます。アプリケーションを実行し、Debug Visualizerを開くと、アプリケーションのクラス階層が表示され、現在実行中のクラスとメソッドが示されます。 アプリケーションが実行されるにつれて、呼び出されたメソッドが強調表示され、アプリケーションで何が実行されているのかを視覚的に確認できます。 Fix and Continue通常、デバッガで問題を見つけたときは、プログラムの実行を停止して再ビルドし、起動し直す必要があります。fixコマンドを使うと、多くの場合にこの手順を避けることができ、実行中のアプリケーションに新しい機能を追加することができます。この機能は、GCCを利用して新しいバイナリ機能をビルドし、アプリケーションが一時停止している間にアプリケーションの実行中のインスタンスのコードをGDBから入れ替えることによって、実現しています。実行を再開すると、新しい機能が認識されます。 リモートデバッグアプリケーションを実行しているマシンと同じマシンでデバッグすることが、現実的に無理だという状況がよくあります。たとえば、フルスクリーン表示のゲームを作成している場合、ゲームによってコンピュータの画面全体が占有されるため、コンピュータでデバッガを使うことが非常に難しくなります。また、GUIイベントの処理に関する問題を扱うような場合も考えられます。こうした状況に対応できるように、Xcodeはリモートデバッグの機能を備えています。 リモートデバッグを有効にするには、比較的簡単な3つの手順が必要になります。
これらの手順を完了すると、ローカルマシン上と同じように、実行可能ファイルをリモートマシン上で簡単にデバッグできるようになります。 CodeWarriorからの移行現在CodeWarriorをプロジェクトに使っている方は、今こそ移行を実施するよい機会です。この記事ではXcodeを使うべき理由をいくつか説明しましたが、最も重要な理由は、アプリケーションをインテルベースのMac上でネイティブに実行できるようにUniversal Binaryをビルドするためには、GCCとXcodeが必要になる、ということです。 XcodeではCodeWarrior形式のプロジェクト相対参照をサポートしているので、CodeWarriorのプロジェクトファイルをXcodeに確実に移行できます。Xcodeは、CodeWarrior形式のインラインアセンブリコードと互換性があるため、CodeWarriorからXcodeへの移行に伴う負担は少なく済みます。そのため、開発者は自分のアプリケーションの中でパフォーマンスが特に重視される部分を手作業で調整できます。それでもCodeWarriorからXcodeへのプロジェクトの移行には時間がかかるのは確かですが、将来に備えるための価値ある時間になります。 まとめXcodeの最新のリリースではいくつかの重要な新機能が製品に追加されました。これらは、従来のバージョンを土台にしながら、将来の機能を実現するためのものです。ビジュアルモデリングツールは、プロジェクトでの作業を進め、プロジェクトをほかの人に伝えるうえで、新しい手段となり、ワークスペースのレイアウトによって、コードをより快適に操作できるようになります。そして、GCC 4.0コンパイラによって、完成したアプリケーションが従来よりも高速に実行されます。さらに、XcodeはインテルベースのMacへの移行に備えるための唯一の手段です。 作業を始めるには作業を始めるのはとても簡単です。まず、Apple Developer Connectionのメンバになっていない方は、メンバ登録を行ってください。無料のADCオンラインメンバになることで、Xcodeの最新のアップデートやその他の開発者ツールを入手できます。 Tiger Developer Kitの付いたADCセレクトメンバになると、さらに製品版のMac OS X TigerとXcodeをディスクで入手でき、Mac OS X Tiger Serverのダウンロードも可能になります。また、セレクトメンバはTigerのサポートエンジニアと直接1対1で相談することができるほか、ADCハードウェア購入プログラムを通じてハードウェアを割り引き価格で購入したり、プレリリース版のソフトウェアを継続的に入手したりできます。 詳細情報
掲載日:2005-08-26 |