注: 脚注がたくさんあります。
そろそろオーム社から入門GTK+が出版されます。最後に日本語のGTK+関連書籍が出版されたのが2002年なので、実に7年ぶりです*1。
クリアコードにはGTK+に精通している開発者が在籍していたり*2、GTK+を利用したソフトウェアに関するサポートを提供していたり*3と日本でGTK+がもっと普及して業務でよりクリアコードの技術力を活かせる機会が増えることを期待しています。
というように期待している入門GTK+ですが、レビュー他で少し参加したため一足早く手元に届いています。興味がある方が購入するかどうかを検討するための材料になるようにGTK+まわりの現状も含めながら紹介します。
入門GTK+ではざっくりまとめると以下を解説しています。
一方、以下は含まれていません。
もうすでにGTK+を使ってアプリケーションを書いている人には物足りないかもしれません。ただ、名前の通り、入門書なので上記のように線を引いたことによりとっつきやすくなっている印象があります。各種Linux(Ubuntu、Fedora、OpenSUSE)やWindows(Visual Studio 2008 Express Editionを使用)での開発環境の作り方や(簡単な)Gladeなど周辺開発支援ソフトウェアの使い方が載っているのも入門者には嬉しいのではないでしょうか。
GTK+は最近のバージョンに対応しています。昔、GTK+アプリケーションを書いていたという方には多少得るところがあるもしれませんが、最近のGTK+事情などは書かれていないので、消化不良になるかもしれません。本書の売れ行きが続編や加筆に影響するかもしれないようなので、応援の気持ちで購入するというのはアリかもしれません。
最近のGTK+/GNOMEをキャッチアップできている方には向いていないでしょう。
本書の流れを簡単に紹介します。
まず、簡単なGTK+アプリケーションをチュートリアル形式で作ります。読み進めていくにしたがって徐々にアプリケーションができあがっていくのでGTK+アプリケーションの雰囲気をつかむのによいのではないでしょうか。ここがあることで、GTK+を触ったことがない方がスタートでつまづいて諦める、というシチュエーションが減るのではないでしょうか。
続いて、GTK+のウィジェットの配置とシグナルについて説明します。配置のところはスクリーンショットが多く、説明が直感的に理解しやすいでしょう。
その後、GLib、GdkPixbuf、cairoとGTK+の周辺ライブラリの解説になります。
GLibの部分はそれほど厚く解説されているわけではありません。例えば、GStringまではカバーしていません。GStringはGLibを使いこんでいる人には便利さが身に染みてわかっているオブジェクトの一つですが、GListやGHashTableの方が優先されています。GLib部分を期待しすぎると物足りなく感じるかもしれません。
GdkPixbufは一通り解説されているので、簡単に使う分には困らないでしょう。アニメーションや拡大・縮小・回転については触れられていません。
cairoは基本的な考え方からしっかり解説されています。スクリーンショットが豊富なのでわかりやすいです。Rubyist Magazine - cairo: 2 次元画像描画ライブラリでは省略されている部分も解説されています。日本語でcairoの基礎的な部分を解説している文章では一番まとまっていてわかりやすいものかもしれません。隠れたオススメポイントと言えるでしょう。
周辺ライブラリに触れた後、またGTK+に戻ります。GTK+でよく使われるウィジェットの使い方をスクリーンショット付きで解説します。スクリーンショット付きなので、この部分をパラパラめくりながら使えそうなウィジェットを探すという使い方ができて便利そうです。ここもオススメポイントです。
最後に、簡単な独自ウィジェットの作り方などもう一歩先へといった感じの内容があります。
というように、GTK+の知識がそれほどない方でも読み進めていきながら徐々に理解を深められる流れになっています。
久しぶりにGTK+の日本語書籍が出版されるので、GTK+まわりの現状も含めながら内容を紹介しました。日本でGTK+がより広く使われるようになることを期待しています。
また、クリアコードにもGTK+関連のお話がくることも期待しています。会社ブログっぽいですね。
*1 一方、Qt関連の日本語書籍は定期的に出版されています。日本ではQtの方が多く使われているのでしょうか。フリーソフトウェア・オープンソースソフトウェアとして公開されているものだけみると大差はないようにみえます。
*2 GTK+の日本語入力まわりや、GeckoやWebKitなど複数のレンダリングエンジンを切り替えられるGTK+を用いたWebブラウザや、RubyからGTK+を利用するためのバインディングやプレゼンツールなどの開発に深く関わっていたりなど。GNOMEの開発チームにも参加している。
*3 Mozillaサポートを提供しています。Linux版のMozilla Firefox/ThunderbirdはGTK+を使っています。他に、GLib/GTK+を利用しているCutterのサポートや、Linux上で動作するクライアントソフトウェアのサポート・開発も行っています。
*4 ポータブルなユーティリティライブラリ
*5 ラスタ画像操作ライブラリ
*6 ベクタ描画ライブラリ
*7 C言語でオブジェクト指向を行うためのライブラリ
*8 ファイルシステムやソケットなど入出力に関する機能を提供するポータブルなライブラリ
*9 X Windows SystemやWindows API、Quartzなど環境依存のGUIのしくみを抽象化するライブラリ
*10 多言語に対応したテキストレイアウト・描画ライブラリ
*11 GTK+を用いたデスクトップ環境
*12 PDFパーサ・描画ライブラリ
*13 音楽や動画などマルチメディアコンテンツを扱うためのフレームワーク
*14 SVG描画ライブラリ
*15 GTK+のようにC言語で書かれたライブラリとRubyやPythonやJavaScriptなど他の言語の連携を支援するライブラリ
*16 SpiderMonkeyをC言語から使うためのライブラリあるいはGTK+などのC言語ライブラリをSpiderMonkeyから使うためのライブラリ。
*17 JSCoreをC言語から使うためのライブラリあるいはGTK+などのC言語ライブラリをJSCoreから使うためのライブラリ。Seedの方がよさそう。