【コラム】
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に収録されているサンプルコードはことごとく起動に失敗。ケアレスミスをしている気配濃厚だが、紙幅も尽きたので続きは次回(すいません)。
ヘッドライン
- 3D映像をブルーレイ高画質で! 3D対応最新版「PowerDVD 10」[20:01 3/16]ソフト
- エレコム、iPad用液晶保護フィルム - 「低反射光沢仕様」「操作性向上マット仕様」[19:15 3/16]アップル
- Lian Li、本体色「ゴールド」と「グレー」のキューブ型マイクロATXケース[17:37 3/16]自作
- エレコム、MacBook/MacBook Pro/iMac用液晶保護フィルム・ハードケースなど[17:10 3/16]アップル
- ディスカバリーチャンネル人気10タイトル収録の超字幕スペシャルBOXが発売[16:54 3/16]ソフト
- エレコム、セルフパワーとバスパワーの両用タイプなど4種類のUSBハブ[16:27 3/16]周辺機器
- iPad販売ペースが急ブレーキ - 3日目終了時点での推計は152,000台[16:13 3/16]アップル
- エレコム、日本語108キー配列のアイソレーションフルキーボード[15:14 3/16]周辺機器
- 米NVIDIA、大画面TVで3D立体視ゲームを楽しめる「NVIDIA 3DTV Play」発表[15:06 3/16]自作
- 低制作コスト/低料金iPhoneアプリによる情報配信を模索する米出版社[15:00 3/16]アップル









