● Carbon視点でCocoa探求(2007/09/03)

  このニュースは、MOSAの会員にのみ配布されているデベロッパー向けの
  デジタルマガジンMOSADeNのに掲載された記事です。ほぼ一ヶ月遅れで
  ここに掲載されて行きます

 〜 XcodeとInterface Builder 〜


今回からは技術的な内容にも踏み込むのですが、なにせ筆者はCocoa初心者です。何か間違いを書いていたら、ぜひメールでMOSA事務局へご連絡くださいませ。また、私の方で疑問点を取り上げることもあるでしょうが、その答えが判明した時には優先して提示したいと思います。「一人の疑問は全員の答え」「一人の間違いは全員の知識」という方針で連載を続けたいと思いますので(笑)ひとつよろしくお願い致します。

今回の開発で用いるXcodeは最新版のv2.4.1です。Leopard(Mac OS X 10.5)にはXcode v3.0が搭載される予定ですが、もうしばらくの間は、このバージョンとの付き合いが続くことになります。また、Cocoaプログラミングモデルでは、Carbon以上にnibファイルが重要な役割りを担います。そのファイルを作成、編集するためのInterface Builderの最新版はv2.5.4となっています。この2つのアプリケーションが、Cocoa Frameworkを用いるアプリケーション開発の「両輪」となります。

ところで、Xcodeの方はちゃんと日本語にローカライズされており、以下のサイトには日本語訳されたユーザーガイドも存在しています。また、日本語訳された関連ドキュメントも幾つか参照することが可能です。

「Xcode 2.3ユーザーガイド」

http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeUserGuide/Contents/Resources/ja.lproj/index.html

「Xcodeを使った作業:将来に対応したアプリケーションの構築」

http://developer.apple.com/jp/tools/xcode/xcodefuture.html

「XcodeへのCodeWarriorプロジェクトの移植に関する概論」

http://developer.apple.com/jp/documentation/DeveloperTools/Conceptual/MovingProjectsToXcode/index.html

ところが「相棒」のInterface Builderの方は未だローカライズされていません。それどころか、英語版の正式ユーザーガイドさえ存在していないのが現状です(ですよね?)。アプリケーションで簡単なヘルプは参照できますが、それを見ながらの操作と言うのはさすがに辛いものがあります。そんな状態ですので「Interface BuilderはApple社内で開発されていないのではないか?」という噂もあるようですが(笑)兎にも角にも、Leopardではこうした状況を改善してもらわないと困ります。

それでは「どうやってInterface Builderの操作を習得すれば良いのか?」という問題になります。Cocoaで開発してみると、Carbonの時とは比べものにならないぐらいInterface Builderに依存した操作や処理が発生することが分かります。そのため、Cocoaでのプログラミングを解説したドキュメントには「逐次」Interface Builderの操作方法が記述されています。つまり、Interface Builderの操作方法は、Cocoaのプログラミング解説書の方でカバーされているわけです。Apple社も、そうした状況を見越して、Interface Builder自身のドキュメントに関しては手を抜いているのかもしれません...。

さて、まずはXcodeを起動しましょう。ファイルメニューから「新規プロジェクト...」を選択すると、アシスタントから空プロジェクトのテンプレート(新規雛形)を選ぶことが可能になります。プロジェクトの種類を大きく分類すると、Action、Application、Audio Units、Bundle、Command Line Utility、Dynamic Library、Framework、J2EE、Java、Kernel Extention、Standard Apple Plug-ins、Static Libraryの12種類です。このうち今回の開発は「Application」が対象ですので、全部で13種類のテンプレートの中から目的に合ったものを選択することになります。

テンプレートを選ぶと、ダイアログの下にその目的の解説が表示されるのですが、残念ながらその部分は日本語訳されていません(手抜き)。Carbonなら「Carbon Application」「Carbon C++ Application」「Carbon C++ Standard Application」の3種類から選択します。Cocoaであれば「Cocoa Application」と「Cocoa Document-based Application」を含め、全部で7種類の中から選択します。筆者がCarbonアプリケーションを開発している時には「Carbon Application」を利用していました。C++も使っていないという所がミソでして(笑)CarbonとピュアCから突然CocoaとObjective-Cへ移行するとどうなるのか?アプリケーションのソースコードを比較することで色々と面白いことが判明しそうです。

筆者には両者の区別が分からないのですが、C++に関しては「Carbon C++ Application」と「Carbon C++ Standard Application」の2つのテンプレートが用意されています。このテンプレートで作成したプロジェクトファイルを見ると、「Sources」グループ中に「HIFramewrok」というファイル群が登録されていることが分かります。これは、Apple社がよりモダンなCarbonプログラミングモデルを提供するため用意したFrameworkです。具体的には、Carbonに導入されているCarbon EventやHIViewなどの仕組みと、C++(OOP環境)との親和性を高めるために使われています。

現在、クロスプラットフォーム向けにアプリケーションを開発するとすれば、やはりC++と何かしらのFrameworkを使うことになるでしょう。HIFramewrokも、その一手段として重要な意味を持っていたと思います。ところが、このHIFramewrokの中で使われているのは、「64bit化しませんよ」と宣言されたCarbon APIがほとんどです。つまり、64Bitアプリケーションの開発では利用できなくなるのです。このように、自ら開発の選択肢を消してしまうのは、何とももったいないような気がするのは筆者だけでしょうか?

さて、Cocoaアプリケーションを開発するプロジェクトテンプレートを選択しましょう。とりあえず、Cocoa-JavaとCore Dataベースのアプリケーション(機会があれば後でチャレンジします)を選択から外すと、残りは「Cocoa Application」と「Cocoa Document-based Application」のどちらかになります。「Cocoa Document-based Application」は、ワープロソフトのようにユーザが作成したドキュメントをファイルに保存するタイプのアプリケーションがターゲットです。もう片方の「Cocoa Application」は、それ以外のタイプということになりますが、せっかくなので、今回は両方のプロジェクトを作成して比較してみたいと思います。

アシスタントから目的プロジェクトを選び、「次へ」ボタンをクリックしてプロジェクト名を入力して「完了」ボタンを押します。これで指定したディレクトリにプロジェクト名が付いたフォルダが作成され、その中に開発で必要な「材料一式」(ソースファイルやnibファイルなど)が保存されます。プロジェクト名は、幾つかのファイル名やアプリケーション名に使われますので(後から変更可能)、最初から適切な名称を選んでおいた方が良いでしょう。また、プロジェクト名は日本語でもかまいません。

次回は、今回作成した「Cocoa Application」と「Cocoa Document-based Application」のプロジェクトフォルダの中身を、Carbonプロジェクトの場合と比較しながら調べてみることにします。

copyright 2007 Ottimo, Inc. All rights reserved
無断転載・引用禁止