iPhone 3Gで音楽を聴くとき、かなりの確率で使ってしまう「Genius」。自分のサウンドライブラリから選び出すだけに、大きく的を外すことのない自動選曲は安心感があります。Macで楽しむときには、iTunes Storeの"おすすめ"もいいですね。自分が知らない曲に巡り会えますから……って、これが定額制サービスで通しで聴けるようになったら、かなりインパクトありますよね。

さて、今回は急遽予定を変更して「GTK+ on OSX」について。既報のとおり、LinuxなどPC-UNIXで普及しているGUIフレームワークGTK+がOS Xネイティブで利用できるようになった。OS XではGoogle ChromeもTraceMonkeyも動作しない現状、SquirrelFish Extremeの検証が思うようにできないため、GTK+ on OSXから先にお伝えする次第だ。

GTK+を利用できるというメリット

GTK+は、アプリケーションの操作性や外観に関わる機能を提供するGUIツールキット。OS Xに置き換えると、Cocoa / CarbonのUI・外観 (Aqua) に相当する機能を提供するフレームワーク、と考えればわかりやすいかもしれない。

このGTK+、そもそもはオープンソースの高機能フォトレタッチソフト「GIMP」用に開発され (名称はGimp Tool Kitに由来)、機能的に優れることから他のアプリケーションでも利用されるようになり、やがてGIMPから分離して開発が進められるようになった。統合デスクトップ環境「Gnome」でも採用されるなど、いまやPC-UNIX / Linuxに不可欠なGUIツールキットとして認知されている。

GTK+ on OSXに注目すべき理由は、これまでOS XではX Window System (X11.app) ベースで動作していたGTK+が、Aqua / Quartzの描画機構をサポート、X11のしがらみから開放されたこと。AtkやPangoといったGTK+とセットで使用される下位レイヤーも含め、OS Xの流儀 (ライブラリやヘッダファイル一式を含む「Gtk.framework」) でフレームワーク化されているため、Xcodeのプロジェクトから (#include として) GTK+の機能を呼び出せるようになった。早い話が、GTK+を用いたPC-UNIX / Linux用のアプリケーションをAqua環境に移植しやすくなったのだ。

ただし、実際にPC-UNIX / Linuxで利用されているGTK+ベースのアプリケーションは、今回GTK+ on OSXとしてフレームワーク化された以外のライブラリ (libgnomeなど) に依存していることが多く、そのままOS Xに持ち込んでビルドすればOK、ということにはならない。文字入力機能が未実装など課題も多く残るため、普及にはそれなりの時間がかかりそうだ。

まずはお約束「Hello World」、それもコピー&ペースト

どれだけかんたんに「OS XネイティブのGTK+アプリ」を作成できるか、実例を紹介してみよう。手始めは、GTK版のHelloWorld。作業は、新規作成したGTK+プロジェクトに含まれる「main.c」に、コピーしたコードをペーストするだけ。1分も経たないうちに、「.app」形式のGTK+版HelloWorldが完成するはずだ。

コードをコピー&ペーストするだけでOK

このように、「.app」なGTK+版HellowWorldが作成できる

  1. Xcodeで[ファイル]→[新規プロジェクト...]を選択し、プロジェクトのひな形として「Application」項にある「GTK+ Application」を選択する
  2. 適当なプロジェクト名を付けて保存
  3. main.cのコードすべてを消去
  4. HelloWorldのコードをコピーし、main.cにペーストする
  5. [ビルドして進行]ボタンをクリックする

GTK+な時計アプリをドラッグ&ドロップで作成する

複数のファイルを使用するアプリケーションも試してみた。手頃なソースコードはなかなか見当たらなかったが (GTK+以外のライブラリに依存するアプリケーションが多いのだ) 、3年ほど前にThe Gnome Journalで紹介されていたGTK+ 2.8とCairoを使った時計アプリを発見。Xcodeのプロジェクトにソースファイルをドラッグ&ドロップするだけで動作するので、試してみてほしい。

まずは、3つのファイル (main.cとclock-ex4.c、clock.h) をこちらからダウンロード。その後、Xcodeで新規作成したプロジェクトから「main.c」を削除し、その後「Other Sources」項目へその3つのファイルをドラッグ&ドロップ。そしてビルドを実行すれば、GTK+ / Cairoベースの時計アプリが完成だ。

ダウンロードしたソースファイルを、このようにプロジェクト画面上へドラッグ&ドロップ

ファイルの処理方法について尋ねられるが、初期設定のままでOK

ビルドすると、無事GTK+ / Cairoな時計アプリが動き始めた

生成されたバイナリのリンク先をotoolでチェックすると、しっかりGTK+やGLib、Cairoのフレームワークもリンクされていることがわかる