【コラム】
先日、Mac開発系な方々が集うMOSAの新年会に参加したのですが、そうしたらですね、ジャンケンでお年玉を争奪する出し物で1等金5,000円也を当ててしまったんですよ。ありがたく当コラムのネタ資金として使わせていただき、ネタは後日MOSAのイベントに賞品として提供したいと思います。
さて、今回は「Cocotron」について。名前を聞いただけではピンとこないかもしれないが、ひと言でいえば"GNUstepのCocoa版"、分かりやすくいえば"他プラットフォーム上で動作するCocoa互換環境"というべき実装系だ。かつてYellow Boxに胸をときめかせたタカシマヤ世代(わかる?)には、ぜひとも体験していただきたい。
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およびCDTはIntel / PowerPCいずれのプラットフォームでも動作するが、筆者は初代MacBookで動作確認を行った。
まずはCDTのインストールから。書庫ファイルに同梱されたシェルスクリプトを実行するだけで万事整えてくれるので、以下の通りコマンドを実行した後は、茶でも飲みながら20分ほど待機しよう。
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に収録されているサンプルコードはことごとく起動に失敗。ケアレスミスをしている気配濃厚だが、紙幅も尽きたので続きは次回(すいません)。
| レノボ・ジャパン、ウェブ広告モデルを一般公募 - 新生活キャンペーンの一環で [21:21 2/10] |
| 【レポート】スマートフォンを狙ったワンクリック詐欺やオンラインバンキングを狙うゼットボット - トレンドマイクロマンスリーレポート [20:43 2/10] |
| 【レポート】レノボ、大和研究所の開発陣らによる「ThinkPad X1 Hybrid」の技術解説 [20:41 2/10] |
| デル、「冬モデルファイナルセール」最終週 - 各種アップグレードが無料 [20:13 2/10] |
| Appleが3月初旬にスペシャルイベント開催の噂 - iPad 3の発表か [18:34 2/10] |
|
坂本教授、木の光合成に着目した不思議な音楽的挑戦!『ETV特集』 [10:08 2/11] キャリア |
|
バロックで異端!水墨画の巨匠、雪村周継の神業に迫る! [10:07 2/11] キャリア |
|
元・宝塚の真琴つばさ、ドラマ初主演で小学生の母親役に挑戦! [10:07 2/11] キャリア |
|
「四大陸フィギュア」今夜は連覇のかかった高橋、昨年末復活した浅田、村上に注目! [10:07 2/11] キャリア |
|
【EU発!Breaking News】精神疾患治療のため?マラリア患者の血液を注射された男性。(オーストリア) [10:05 2/11] キャリア |