マイコミジャーナル

知りたい!を刺激する総合専門サイト


  1. パソコン

  2. アップル
  3. コラム
  4. OS X ハッキング!

【コラム】

OS X ハッキング!

212 GNUStep? Yellow Box? いえ、Cocotronです

2007/02/01

海上忍

先日、Mac開発系な方々が集うMOSAの新年会に参加したのですが、そうしたらですね、ジャンケンでお年玉を争奪する出し物で1等金5,000円也を当ててしまったんですよ。ありがたく当コラムのネタ資金として使わせていただき、ネタは後日MOSAのイベントに賞品として提供したいと思います。

さて、今回は「Cocotron」について。名前を聞いただけではピンとこないかもしれないが、ひと言でいえば"GNUstepのCocoa版"、分かりやすくいえば"他プラットフォーム上で動作するCocoa互換環境"というべき実装系だ。かつてYellow Boxに胸をときめかせたタカシマヤ世代(わかる?)には、ぜひとも体験していただきたい。

Cocotronの目指すところ

Cocotronは、Cocoaの中核をなす2つのAPI「Foundation」と「AppKit」をオープンソースで再実装、Windowsなどのプラットフォームで実行できるようにしたもの。現在公開されているコードの大部分は、プロジェクトの主催者Christopher Lloyd氏により記述されたもので、参加メンバーも氏を含めて2名という小所帯だが、長らくOPENSTEP互換を目指し開発が進められてきた経緯から、NSWindowやNSViewといった基本的なクラスはすでにサポートされている。

その内容だが、AppKitやFoundationなどの互換フレームワークで構成されるCocotron本体と、bin-utilsやgcc、MinGWといったクロスコンパイル環境に必要な一切合切がパッケージ化されたCDT(The Cocotron Developer Tools)の2つに分かれる。Xcode 2.4以降が導入されたOS Xに両者をインストールすれば、"Windowsで動作するCocoaアプリ"を生成できるという寸法だ。

CocotronでビルドしたCocoaアプリをWindows上で起動したところ。結構感動しますよ

と、ここまで聞くと思い出されるのがGNUstep。対応アプリケーションも数多く発表されるなど相応の実績を持つが、OPENSTEPとのAPI互換を目指したプロジェクトであり、Cocoaとの互換性確保を目指すCocoatronとは理想を異にする。GNUstepはGPL、Cocoatronはプロプライエタリ製品の開発にも使えるMITと、ライセンスも異なることから、両プロジェクトが統合されるとは考えにくい。開発リソースが分散している状況は惜しいが、とりあえずは待望のYellowBox的な実装の今後に期待だ。

Cocotronを試す

それでは、実際にCocotronを試してみよう。CocotronおよびCDTはIntel / PowerPCいずれのプラットフォームでも動作するが、筆者は初代MacBookで動作確認を行った。

まずはCDTのインストールから。書庫ファイルに同梱されたシェルスクリプトを実行するだけで万事整えてくれるので、以下の通りコマンドを実行した後は、茶でも飲みながら20分ほど待機しよう。

$ curl -O http://cocotron.org/Tools/Downloads/InstallCDT-2006-12-23.zip
$ unzip InstallCDT-2006-12-23.zip
$ cd InstallCDT-2006-12-23
$ ./install.sh

Cocotron本体はGoogleCodeのサイトでホスティングされているため、ダウンロードにはsvnが必要。こちらのサイトから入手した後、以下の通りコマンドを実行してみよう。ダウンロード後、Cocoaフォルダに収録されたXcodeのプロジェクトファイル(Cocoa.xcodeproj)を開き、変更を加えずそのままビルドすれば、AppKit.frameworkなどのフレームワークが適切な領域(初期値では/Developer/Cocotron/1.0/Windows/i386/Frameworks/)にインストールされるはずだ。

$ svn checkout http://cocotron.googlecode.com/svn/trunk/ cocotron

結構手間がかかります

Cocotronを利用してCocoaアプリをビルドする手順だが、その前に注意点を。使用できるフレームワークがAppKitとFoundation、Cocoaの3種に限られるうえ、すべてのクラスが実装されているわけではないため、利用できない機能が多いことは覚悟しておこう。なお、Cocotronのサイトで公開されているテキストエディタは設定なしにビルドできるので、結果を先に見たい場合はそちらを利用してほしい。

まずはXcodeのプロジェクトファイル(*.xcodeproj)を開き、ターゲットの情報ウインドウを表示しよう。次に[ルール]タブ左下の[+]をクリック、「C source files」に「Cocotron 1.0 Windows…」を使うルールを追加した後、[ビルド]タブで下表の項目を修正する。

コンパイラには、CDTに含まれるgccを指定する

表 ターゲットの「ビルド」タブで設定を見直す項目
アーキテクチャ i386
ビルドプロダクトのパス build/Windows
フレームワーク検索パス /Developer/Cocotron/1.0/Windows/i386/Frameworks
プレバインド チェックを外す
他のリンクフラグ -Wl, --enable-auto-import -mwindows -mconsole
プレフィックスヘッダをプリコンパイルする チェックを外す
位置依存コードを生成 チェックを外す
修正して続ける チェックを外す
その他の警告フラグ ブランクにする
EXECUTABLE_FOLDER_PATH(追加) $(CONTENTS_FOLDER_PATH)/Windows
EXECUTABLE_SUFFIX(追加) .exe

そして「グループとファイル」欄にあるFrameworks→Other Frameworksを展開、「AppKit.framework」と「Foundation.framework」の情報ウインドウを開き、ターゲットへのリンクを張ること。これでビルドを実行すれば、プロジェクトフォルダの「build」以下にバンドル(*.app)が生成されるはずだ。

仕上げは、バンドル内部の「Windows」フォルダに、/Developer/Cocotron/1.0/Windows/i386/Frameworksディレクトリから「Foundation.1.0.dll」と「AppKit.1.0.dll」、「Foundation.framework」と「AppKit.framework」をコピーすればOK。これで、Window上にバンドルをコピーし、Windowsフォルダを開いて(エクスプローラにはバンドルを実行する機能はない)実行形式のファイルをダブルクリックすればいいはず……しかし、/Developer/Examples/AppKitに収録されているサンプルコードはことごとく起動に失敗。ケアレスミスをしている気配濃厚だが、紙幅も尽きたので続きは次回(すいません)。

バンドル内のWindowsフォルダは、このような構成になる


画像で見るニュース(パソコン)

スペシャル

  • Windows 7 大百科
  • パソコン/ビジネスPC メールマガジン創刊のお知らせ

特別企画


注目サイト