[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][TOP]

GGAD$B$NK]Lu(B


$B$$$D$b$*@$OC$K$J$j$^$9!#(B
(BLASER5 $B@PED3(M}$G$9!#(B
(B
(BGGAD intro.xml $B$NK]Lu=*$o$j$^$7$?!#(B
$BMQ8l$J$I<+?.$NL5$$E@$,$"$j$^$9$N$G!"(B
$B$G$-$k$@$1B?$/$NJ}$K::FI$7$F(B
$B;XE&$7$F$$$?$@$1$k$H$&$l$7$$$G$9!#(B
(B
$BB3$1$F!"(Bglib.xml $B$b$*0z$-e$NFCD'(B $B!'(B
$B!&%?%0(B <function>, <widget> $B$G64$^$l$?C18l$O$=$N$^$^!#(B
(B
$B!&%?%0(B <term> $B$G64$^$l$?C18l$OF|K\8l$K$G$-$k$b$N$OF|K\8l$K!#(B
(B
$B!&$?$V$s0l4S$7$F!V$G$9!&$^$9!WD4(B
(B
(Bxml $B$N7A<0$OA4$/CN$j$^$;$s!#(B
$B4V0c$C$F$$$?$j!"LdBjE@$,$"$k$h$&$G$7$?$i65$($F2<$5$$!#(B
(B
(Bxml -> sgml $B$X$NJQ49J}K!$b65$($F$$$?$@$1$?$i$H;W$$$^$9!#(B
(B
(B
$B$A$g$C$H$@$=$/$G$9$,!":#8e>/$J$/$H$b%I%-%e%a%s%H4X78$G$O(B 
(BGNOME$B%W%m%8%'%/%H(B $B$H(B KDE $B$G$N5;=QDs6!$,(B $B$"$k$h$&$G$9$M!#(B
(BKDE $B$G$O(B Eric$B$H(BFrederik $B$,Cf?4$K$J$C$F(B
(BGNOME $B$G$O(B Dan Mueth $B$5$s$,$=$&$$$C$?$*OC$r$7$F$$$^$9!#(B
(B
(B
(B
(B
(B-- 
(BEri ISHIDA <eri@xxxxxxxxxxxx>
(BLASER5 <http://www.laser5.co.jp/>
(B (B (B はじめに (B (B

この章では、本書で解説する技術的概要を紹介します。

(B (Bとは?

は 1997年に Mexican Autonomous (B National University (メキシコオートノマース国立大学) の Miguel de Icaza氏 (B によって開始されたフリー (または "オープンソース") ソフトウェア開発プロジェクト (B の一つで、世界中のプログラマで構成される小さな集まりです。Kデスクトップ環境 (B (KDE) プロジェクトのような功績、GNU/Linux オペレーティングシステムへの人気の (B 向上 そして何よりも グラフィカルツールキットの威力によって示唆され (B は急速な発展を遂げています。 --- 一年の間に何百人ものプログラマ (B が参加し、何千行ものコードがかかれました。 は現在のあらゆる (B 互換で動作する GUI アプリケーション開発用の強力なフレームワークです。 (B

(B (B

(B"" とは実のところ GNU Network Object Model Environment (B (GNU ネットワーク オブジェクト モデル 環境)の頭文字です。 (B    元来、このプロジェクトはマイクロソフト社の OLE や COM テクノロジのような (B    アプリケーション・オブジェクトに対するフレームワークを構築する予定でしたが、 (B    急速にプロジェクト範囲が拡大し、ネーミングの "network object" (B    (ネットワーク オブジェクト)にあたる部分を現実化する前に、それに見合った (B    基盤が明らかに必要となりました。最新の 開発バージョンには (B    Bonobo というアーキテクチャをはめ込んであるオブジェクトが含まれています。 (B また、 1.0 では ORBit という名称の軽くて速い CORBA 2.2 ORB (B が組み込まれています。 (B

(B (B

(B は GNUプロジェクトの一つで、その全体的目標はフリーオペレーティングシステム (B (GNU という名の) 及び、そのシステム上で動作するさらなるアプリケーションの (B 開発です。 GNU は "GNU's Not "(GNU は単なる ではない。) (B と宣言しています。つまり GNUオペレーティングシステムは (B -コンパチブルであるという意のユーモラスでしょう。 (B      GNU に関する更に詳しい情報は http://www.gnu.org です。 (B

(B (B

は 2つの重要な側面を持ちます。ユーザの立場から見れば総合デスクトップ (B   環境でありアプリケーション群です。プログラマ側から見ると (多数の有用な (B   ライブラリから成り立つ) アプリケーション開発フレームワークです。 (B ライブラリを用いて作成されたアプリケーションは、たとえユーザが (B   そのデスクトップ環境を使用していなくても快適に動作します。しかしながら (B   デスクトップが利用できるならば、その上で精密な統合性を披露します。 (B

(B (B

(Bこのデスクトップ環境はファイルマネージャ、タスク切り替えのための "パネル"、 (B つまり設定に用いられる "コントロールセンタ" のようなプログラムを起動し、 (B アプレットをドッキングする機能、そしてさらに小さないくつかのベル音や警笛を (B 含んでいます。これらのプログラムは使いやすいグラフィカルインタフェースの裏に、 (B 伝統的な シェルを隠しもっているのです。 (B

(B

(B の開発フレームワークは、一貫した操作性をもつ、使いやすいアプリケーション (B の作成を可能にしています。Xウィンドウシステムの設計者達はどのような (B ユーザインタフェースポリシーも開発者に強いないといった慎重な決定を下しました。 (B そこで では、統一性のあるルック&フィールを構成するため "ポリシー (B レイヤー" を追加しています。 それは、完成している アプリケーションは (B デスクトップで快適に動作しますが、"スタンドアローン" 状態でも (B 使用可能ということです。--- つまり、ユーザは 共有ライブラリのみ (B インストールすればいいのです。Xウインドウシステムによらない (B アプリケーション、を作成することでさえ可能です。ただし、例えば非グラフィックな (B CORBA のサービスは必要かもしれません。 (B

(B (B

(B本書は開発者の観点から見た についてです。ライブラリ (B やツールを用いた アプリケーションの作成方法を紹介します。 (B

(B (B 開発フレームワーク (B (B

(Bアプリケーション開発フレームワークは、全てが互換性のある ANSI C でかかれ、 (B 互換機で使用される一連のライブラリに集中してます。グラフィックスを (B 含むライブラリは Xウインドウシステムに依存します。ラッパは可能で、考えつく (B ほぼあらゆる言語、 Ada、Scheme、Python、Perl、Tom、Eiffel、Dylan、そして (B オブジェクティブC に対して API をエクスポートします。少なくとも (B 3つの異なる ラッパも存在します。 (B

(B (B

(B本書はライブラリとして Cインタフェースを基準としますが、C からその他の言語への (B マッピングは一般的に見てシンプルなので、どんな言語構築者にも役立つでしょう。 (B また、ライブラリ (1.0.9のようなコンパチブルバグフィックスを含み (B ---バージョン1.0.x は全てコンパチブルです。) のバージョン1.0にも適応しています。 (B

(B (Bライブラリ (B (B

(B今までのフリーソフトウェアの功績をフルに活用しているため はゼロから出発 (Bしたわけではありません。プロジェクトとは別に形成されているいくつかの (Bライブラリを用いています。 ただし、これらは アプリケーション開発フレームワークの (B一部なのでその存在を 環境に含める見方もできます。 (B

(B (B (B (B

インフラストラクチャの基礎です。これは、Cユーティリティ (B ライブラリで共有データ構造を作成し、処理する過程を提供します。また、移行性のある (B 問題、例えば多数のシステム上の関数 snprintf() の欠如 (B にも関与します。しかし はどのプラットフォームにも存在し、 (B わずかながら snprintf() (常にターゲットバッファを (B NULL-終了)より安全な g_snprintf() (B の両インプリメンテーションを含んでいます。 (B

(B (B

(B1.0 は バージョン1.2 を使用しているので、どの 1.2シリーズ (B (1.2.1、1.2.2等) でも動作します。バージョンが 1.2 で (B 始まっている は全て互換性のあるバグフィックスリリース版です。 (B

(B (B (B (B

、及び Gimp Tool Kit は アプリケーションで使用される (B GUIツールキットです。 はもともと Gimp (GNU Image (B Manipulation Program --- (B http://www.gimp.org のために作成されましたが、 (B 今では多目的ライブラリとなっています。また (B に依存します。 (B

(B (B

パッケージは 、つまり Gimp Drawing Kit を含んでいます。 (B これは、簡素で抽象的な低レベルの Xウインドウシステムライブラリの一つです。 (B は直接 X を呼び出すのではなく を用いるので、 のポート (B のおかげで は、ほとんど修正のない X 以外のウインドウシステム (B で実行が可能なのです。 と Gimp は、既にこの方法で Win32 プラットフォーム (B に取り込まれています。 (B

(B (B

アプリケーションにもたらす特徴: (B (Bダイナミックタイプシステム (B (BC でかかれたオブジェクトシステムは、引き渡し、タイプ検証、シグナル/コールバック (B のインフラストラクチャで完結しています。そのタイプやオブジェクトの (B システムは GUI 特有ではありません。 (B (Bオブジェクトシステムを用いて作られた GtkWidget は、 (B のグラフィカルコンポーネントインプリメントを定義します。 (B (B (B 有用な GtkWidget を集めてサブクラス (B (ウィジェット) を構成します。このサブクラスは コード (B の大部分を形成します。 (B (B (B

(B (B

は追加ウィジェットの多くを基本的な ウィジェットに追加します。 (B

(B (B

(B1.0 は バージョン 1.2 に基づいています. バージョンが (B 1.2 で始まる (例えば 1.2.1 のように) は全て互換性のある (B バグフィックスリリース版です。 (B

(B (B (B (B

(B は C でかかれた CORBA 2.2 ORB です。ほかの ORB と比べると軽く、速く、 (B かつ C言語マッピングをサポートしています。 はライブラリ群の一つ (B のように扱われます。 (B

(B (B

(BCORBA、もしくは Common Object Request Broker Architecture (B(ネットワーク経由分散オブジェクト実現テクノロジ) は Object Request Brokers、 (Bまたは ORB を明確にしたものです。ORB はオブジェクトでも動きますが、 (Bサブルーチンというよりもむしろダイナミックリンカのような働きをします。起動時に、 (Bプログラムは特別なオブジェクトのサービスを要求できます。つまり、ORB はオブジェクトを (B配置し、オブジェクトとプログラム間のコネクションを作成します。例えば、電子メール (Bプログラムは``アドレス帳''といったオブジェクトを必要とし、名前を検索するのに (Bそのオブジェクトを用いるといった場合が具体的かもしれません。ダイナミックリンカと (B異なる点は、CORBA はネットワークを通じて快適に動作します。たとえ、プログラミング言語や (B互いに相互作用するオペレーティングシステムが異なっていても問題ありません。 (BCORBA はウインドウズオペレーティングシステムの DCOM によく似ています。 (B

(B (B (B (B

(B ("イメージライブラリ") は、一般的な形のイメージファイル (GIF, JPEG, PNG, (B TIFF等を含め) をロード、保存、表示、縮尺するためのルーチンを提供します。 (B それは、2種、Xlib のみのバージョンと ベースのバージョン から (B 成り立ちます。 バージョンを使用しています。 (B

(B (B ライブラリ (B (B

この章のライブラリは、gnome-libsの一部です。特に、 (Bプロジェクトのために開発されました。 (B

(B (Blibgnome (B (B

(Blibgnome は、Gnomeアプリケーションで用いる GUI に関係しない (Bルーチンの集まりです。例えば、設定ファイルをオペランド解析するためのコードが (B含まれています。また、多少の外部的機能インタフェース、国際化 (GNU gettext (Bパッケージを通して)、引数構文解析 (popt パッケージを通して)、そして (Bサウンド (エンライトメントサウンドデーモン esound を通して)等も含んでいます。 (Bgnome-libs パッケージは、これらの外部的ライブラリを用いて (B相互作用を行うので、プログラマ自身がインプリメンテーションやその有効性に注意を払う (B必要性は無いのです。 (B

(B (Blibgnomeui (B (B

libgnomeui GUI に関係した コードを集めます。 (Bおもに、 を効果的かつ拡張するようにできているウィジェットから構成されます。 (Bウィジェットは、通常、ユーザインタフェースポリシーを要請します。 (Bこのポリシーによって更に API の便宜を向上させます。(というのは、プログラマが明確に (Bしなければいけないことはほとんどないのです。) もちろん、より一貫性のある (Bインタフェースをもつアプリケーションという形でも現れます。 (B

(B (B

(Blibgnomeui は下記のすばらしい機能を含んでいます: (B (B (BGnomeApp ウィジェットは、スマートなアプリケーションウインドウ (Bの作成を容易にします。それは、GnomeDock という、ユーザが (Bツールバーに再配列したり、そこからはずしたりできる別のウィジェットを用います。 (B (B (BGnomeCanvas ウィジェットは、複雑なフリッカーフリー (Bカスタマイズ可能なディスプレイを気軽に書けるようにします (B (B (B はピックスマップ (開く、閉じる、保存、その他の操作上アイコン) を (B保持しています。 (B (B (Bダイアログの作成と使用上便利なルーチン (B (BGnomePixmap ウィジェットは GtkPixmap (B以上に機能が多才です。 (B (B (B

(B (Blibgnorba (B (B

(Blibgnorba は、セキュリティ対策及びオブジェクトのアクティブ化 (B 取り込みつつ、CORBAに関連した機能を提供します。(オブジェクトのアクティブ化とは (B 与えられたインタフェースを実装するオブジェクトを読みにいくといった過程です。 (B サーバプログラムの実行、共有ライブラリモジュールのロード、また新規オブジェクト (B インスタンス用既存プログラムの要請などを行うことができます。) (B

(B (Blibzvt (B (B

この小さなライブラリは、プログラム上で使用可能なターミナルウィジェット (B (ZvtTerm) を含みます。 (B

(B (Blibart_lgpl (B (B

このライブラリは、Raph Levien によるルーチンを提供するグラフィックス (Bのためのものです。ここで含まれているルーチンは、GNU Library General Public (BLicense に基づいてリリースされ、GnomeCanvasウィジェットで (B用いられています。Raph Levien では、強化した商用バージョンの販売もしています。 (B libart_lgpl は、アンチエリアス化、ミクロタイル再領域、そして (Bその他の効果的サービスを提供します。本質的には、ベクトルグラフィックス (Bラスタライゼーションライブラリで、機能的には PostScript言語と類似します。 (B

(B (Bその他のライブラリ (B (B

(Bこれらのライブラリは、アプリケーションでよく用いられますが、 (Bgnome-libs には属しません。 (B

(B (Bgnome-print (B (B

(Bgnome-print は、まだ幾分実験的ですが、非常に有望です。 (Blibart_lgpl を用い、GnomeCanvas上で (B快適に動作します。仮想出力デバイス ("プリントコンテキスト"という) を提供するので、 (Bシングルコードベースは、プリントプレビュウィジェットやポストスクリプト、そしてほかの (Bプリンターフォーマットにさえ出力可能です。gnome-print は、 (Bプリント関連の GUI の要素も含んでいます。例えば、プリントセットアップダイアログ (Bや仮想フォントインタフェース (Xフォントが印刷できないといった問題を扱うため)です。 (B

(B (Bgnome-xml (B (B

gnome-xml は、ワールドワイド・ウェブ コンソーシアムの (BDaniel Veillardが書いた非確認な XMLエンジンです。XML をツリー構造内で解析し、 (B更に、XML としてツリー構造に出力することもできます。構成日をロードし保存の必要が (Bある全てのアプリケーションに有用です。多くの アプリケーションは、これを (Bフィルのフォーマットとして用いています。このライブラリは、その他どのライブラリにも (B依存しません。 にすら依存しないので --- 名称のみ と結びついています。 (Bしかしながら、ほとんどの ユーザが、このライブラリをインストールすると (B思われるので、作成するアプリケーションがこのライブラリを使用するなら、 (Bそのアプリケーションのユーザに不便であっては困りものです。 (B

(B (BGuile (B (B

(BGuile は、ライブラリでの Schemeプログラミング言語のインプリメンテーションです。 (Bそれゆえ、どのようなアプリケーションでも埋め込まれた Schemeインタプリタを (B備えることができます。Guile は、GUIプロジェクトの公式拡張言語で、数々の Gnome (Bアプリケーションで使われています。作成中のアプリケーションに拡張言語を追加するのは、 (B複雑そうに思われますが、Guile はそれをほとんど難なく処理します。(数々の (Bアプリケーションが Perl や Python もサポートしています。つまり一度何か第一弾を (B実行すると、いくつかの言語をサポートするのは、通常容易なことなのです。しかるに、 (B 開発者の中では、Guile は特別な位置付けになっています。) (B

(B (BBonobo (B (B

(B出版時 ハッカーは、最終作業を Bonobo で行いました。Bonobo は、 (B マイクロソフトOLE といった伝統に存在する、複合ドキュメント技術です。 (B 例えば、表計算ソフトに図を埋め込んだりできます。この機能は、 (B を通じて幅広く用いられるでしょう。というのも、どんなアプリケーションでも (B プレーンテキスト、HTML、またはイメージのような MIMEタイプ化されたデータを (B ライブラリに対し適切な Bonoboコンポーネントを要求することで (B 表示可能だからです。次回 メジャーリリースでは、この Bonobo技術を (B 探してみて下さい。 (B

(B (Bヘッダファイル関連 (B (B

(Bブックを通じ、各機能を宣言するまさにそのヘッダファイルは、関数プロトタイプに (B そって与えられます。これのように、ソースコード解析が容易になっています。 (B しかるに、おそらく手動で に存在する何百ものヘッダ (B を含めたいとは思わないでしょう。実は、

gtk/gtk.h
ヘッダファイル (B を含むことによって、全ての ヘッダ en masse を含めることが (B できるのです。
gtk/gtk.h
は、
gdk/gdk.h
(B も含んでいます。
gnome.h
を含むことで、全ての (B ヘッダを含むことになります。つまり
gnome.h
は、 (B
gtk/gtk.h
を含んでいるのです。ほとんどの アプリ (B ケーションファイルは、単に
gnome.h
を含めています。 (B

(B (B (B本書の構成 (B (B

(B本書は以下のいくつかのパートに分かれています: (B (Bさて、パート1です。この章では、アプリケーション開発フレームワーク (B の概念を説明します。それに続く、2つの章では簡単に、 (B について紹介します。-- 既に、プログラミングに精通されている方なら (B 直接パート2に移ってもいいでしょう。 (B (B (Bパート2では、大概的なアプリケーションの開発について解説します。 (B ソースツリーの作成から始まり、メニュー、ダイアログ、その他の重要な (B アプリケーションコンポーネントの書き方の説明まで行います。パート2 (B の終わりに、あらゆるアプリケーションが保持すべき機能のチェックリスト (B を加えてあります。 (B (B (B (Bパート3は、若干高度な話題について記述してあります。例えば、オブジェクト (B やタイプシステムの内蔵をインクルードし、カスタムされた (B GtkWidgetサブクラスを書き、そして (B GnomeCanvasウィジェットを使用するといったことです。 (B 更に、についてもふれます。 (B (B (B (B付録には、各オブジェクトの簡単な解説付きの オブジェクト階層 (B マップを含めました。ヘッダファイルのマップと (B オンラインプログラミングリソースへのポインタです。 (B (B (B (B

(B (B

(B本書では、多少の プログラミング知識を仮定しています。つまり、もしそれに (B 関する知識が非常に少ないなら、2及び3章で簡単な概念を得られるでしょう。 (B しかしながらそれらの章は、詳細にまでは至っていません。 特定の (B ウィジェットのほとんどが、含まれていないのです。この本は、 (B プログラミング及び若干高度な話題の導入書なので、導入書の付録 (B 程度です。 (B

(B (B

(B時間とスペースに限りがあるので、中心的 ライブラリにのみ解説しています。 (B 特に、CORBA、プリント関係、XML、プラグイン、そしてスクリプトまでは解説 (B しきれていません。最も大きなアプリケーションは、コアライブラリに加えて、 (B それらの機能も用いることになるでしょう。 (B

(B (B

(B日本語翻訳:レーザファイブ (info@xxxxxxxxxxxx) (B