【コラム】
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アプリ"を生成できるという寸法だ。
と、ここまで聞くと思い出されるのがGNUstep。対応アプリケーションも数多く発表されるなど相応の実績を持つが、OPENSTEPとのAPI互換を目指したプロジェクトであり、Cocoaとの互換性確保を目指すCocoatronとは理想を異にする。GNUstepはGPL、Cocoatronはプロプライエタリ製品の開発にも使えるMITと、ライセンスも異なることから、両プロジェクトが統合されるとは考えにくい。開発リソースが分散している状況は惜しいが、とりあえずは待望のYellowBox的な実装の今後に期待だ。
Cocotronを試す
それでは、実際にCocotronを試してみよう。CocotronおよびCDTはIntel / PowerPCいずれのプラットフォームでも動作するが、筆者は初代MacBookで動作確認を行った。
まずはCDTのインストールから。書庫ファイルに同梱されたシェルスクリプトを実行するだけで万事整えてくれるので、以下の通りコマンドを実行した後は、茶でも飲みながら20分ほど待機しよう。
$ 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/)にインストールされるはずだ。
結構手間がかかります
Cocotronを利用してCocoaアプリをビルドする手順だが、その前に注意点を。使用できるフレームワークがAppKitとFoundation、Cocoaの3種に限られるうえ、すべてのクラスが実装されているわけではないため、利用できない機能が多いことは覚悟しておこう。なお、Cocotronのサイトで公開されているテキストエディタは設定なしにビルドできるので、結果を先に見たい場合はそちらを利用してほしい。
まずはXcodeのプロジェクトファイル(*.xcodeproj)を開き、ターゲットの情報ウインドウを表示しよう。次に[ルール]タブ左下の[+]をクリック、「C source files」に「Cocotron 1.0 Windows…」を使うルールを追加した後、[ビルド]タブで下表の項目を修正する。
| 表 ターゲットの「ビルド」タブで設定を見直す項目 | |
| アーキテクチャ | 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に収録されているサンプルコードはことごとく起動に失敗。ケアレスミスをしている気配濃厚だが、紙幅も尽きたので続きは次回(すいません)。
ヘッドライン
- アップル「Aperture 3」発表、プロ向けの性能にiPhotoの容易さを融合[02:28 2/10]アップル
- Appleの「A4」プロセッサとは何か? - エンジニアらの意見[01:54 2/10]アップル
- 医療ソリューション企業Epocrates、iPadは医療現場で人気と報告 - 臨床医2割が購入意向[21:00 2/9]アップル
- 米Apple CEOジョブズ氏がNYで秘密の会合 - 大手新聞社幹部らを訪問[21:00 2/9]アップル
- コーレル、「Corel WinDVD 2010」のアップデートを公開[20:46 2/9]ソフト
- Microsoft、Windows 7の「バッテリ交換」警告問題に回答[20:33 2/9]Windows 7
- ネットユーザーがキーボードでこだわるポイント - アイシェアが調査[19:53 2/9]周辺機器
- クレオ、"ブライダル"に欠かせないソフト「筆まめ Braidal 6」2製品を発売[19:42 2/9]ソフト
- ドスパラ、ドイツ「ROCCAT」製ゲーミングマウスとキーボードを販売開始[19:39 2/9]ドスパラ
- 米Micron台湾とNanya、42nmの2GビットDDR3を共同で開発[18:47 2/9]自作











