<?xml version="1.0" encoding="utf-8"?>
<!-- -*- indent-tabs-mode: nil -*- -->
<chapter id="core-tech">
  <title>中核となる技術</title>

<section id="graphics">
  <title>グラフィカルなインタフェース</title>

  <para>多くのアプリケーションではユーザと対話するためにグラフィカルなインタフェースを提供する必要があります。グラフィカルなインタフェースは人間がソフトウェアと対話するときに直感的かつ発見的な手段であり、ユーザはアプリケーションが使いやすく魅力的なユーザインタフェースを提供することを期待します。</para>

  <para>GNOMEプラットフォームの特徴は洗練されたグラフィクス、およびユーザインタフェース技術であり、それは標準的なユーザインタフェースのコントロールから高品質なグラフィクスをスクリーンに描画するためのAPIまでを含みます。GNOMEのグラフィクス技術を使用することにより統一感があり、直感的で、心をとらえるアプリケーションを作成することができます。</para>

  <figure>
    <title>グラフィクス・ライブラリの階層</title>
    <mediaobject>
      <imageobject>
        <imagedata format="PNG" fileref="figures/graphics.png"/>
      </imageobject>
    </mediaobject>
  </figure>

  <section id="gtk">
    <title>GTK+</title>

    <para>GTK+はGNOMEにおいてインタフェースを構築するときの主要なライブラリです。このライブラリは一般的なグラフィカルなアプリケーションで使用されるユーザインタフェースのコントロールやウィジェットのすべてを提供します。そのモダンでオブジェクト指向のAPIにより、描画やデバイスとの相互作用などの低レベルの詳細を処理することなく、魅力的で洗練されたユーザインタフェースを構築することができます。</para>

    <para>GTK+はボタン、チェックボックス、テキスト・エントリ等の基本的なウィジェットに加え、ツリービュー、マルチラインのテキスト・フィールド、およびメニューやツールバーのアクションのためのモデル・ビュー・コントローラ(MVC)にもとづく強力なAPIを提供します。</para>

    <para>GTK+のウィジェットはウィンドウ上にボックス・パッキング・モデルで配置されます。プログラマは位置を絶対的な座標を指定して配置するのではなく、コンテナ・ボックスにウィジェットをどのようにパックするか指定するだけです。GTK+はそれらのコンテンツを的確に配置し、ウィンドウのサイズ変更を自動的に処理することを保証します。</para>

    <para>GTK+は柔軟なAPIを提供しているため、GTK+のアプリケーションで追加のウィジェットを開発するのは簡単です。追加のウィジェットを提供するサードパーティによるライブラリが数多く存在し、多くの開発者が自分のアプリケーションのために、特定の目的に使用するカスタム・ウィジェットを作成しています。</para>

    <para>GTK+がユーザインタフェースやユーザとの相互作用にまつわる難解な詳細を処理し、シンプルで強力なAPIを提供するので、あなたはアプリケーションの詳細に集中することができます。GTK+を使用して開発されたアプリケーションは自動的にユーザのテーマやフォントの設定を引き継ぎ、アクセシビリティ技術と適切に対話し、ユーザの期待通りに動作します。</para>

    <para>GTK+についての詳細は <ulink url="http://library.gnome.org/devel/gtk/stable/">GTK+ Reference Manual</ulink> を参照するか、<ulink url="http://gtk.org/">GTK+のWebサイト</ulink> を参照してください。</para>
  </section> <!-- gtk -->

  <section id="libglade">
    <title>Libglade</title>
    <note><para><note><para>Libgladeは <ulink url="http://library.gnome.org/devel/gtk/stable/GtkBuilder.html">GtkBuilder</ulink> に置き換えられたため、使用は推奨されていないことに注意してください。新しく記述するコードでは代わりに GtkBuilder を使用するべきです。</para></note></para></note>

    <para>LibgladeはXML定義からユーザインタフェースを動的に構築するためのライブラリです。あなたは <application>Glade</application> のようなグラフィカル・インタフェース・ビルダを使用してユーザインタフェースを構築して、そのインタフェース定義をアプリケーションにインポートすることができます。これにより複雑なレイアウトを構築し、レイアウトの詳細を調整することができます。</para>

    <para>Libgladeによりインタフェースの構築でコードが分断されることなく、プログラマはアプリケーションのロジックに集中することができます。またグラフィカル・インタフェース・ビルダにより、デザイナはプログラムを知らずにインタフェースを構築することが簡単になります。</para>

    <para>Libgladeについての詳細は <ulink url="http://library.gnome.org/devel/libglade/stable/">Libglade Reference Manual</ulink> を参照してください。</para>
  </section>

  <section id="pango">
    <title>Pango</title>

    <para>PangoはGNOMEプラットフォームにおいてテキストとフォントを処理する際に中核となるライブラリです。このライブラリはGTK+を介してテキストのレイアウトとレンダリングを受け持ちます。<footnote>
    <para>Pangoレイアウト・エンジンは異なるフォント・バックエンド、および描画バックエンドで使用することができます。大抵のGNOMEシステムでは、PangoはFreeType、fontconfig、およびフォントへのアクセスとテキストの描画にCairoを使用します。ほかのシステムではPangoはネイティブのフォントシステム、たとえばMicrosoft WindowsではUniscribe、MacOSではATSUIを使用します</para></footnote></para>
 
    <para>Pangoは世界中のさまざまな書記体系を広範囲にサポートします。言語により使用される多くの書記体系にはグリフのレイアウトや合成文字(composing characters)にたいする複雑なルールがあります。Pangoはほとんどすべての言語による記述を正しく表示し、すべての場所でユーザがネイティブの言語でテキストを閲覧できるようにします。Pangoは複数の書記体系を自動的にサポートします; アプリケーションのの開発者は他の言語をサポートするために特別なコードを記述する必要はありません。</para>

    <figure>
      <title>Pangoによる複数言語の表示</title>
      <screenshot>
        <mediaobject>
          <imageobject>
            <imagedata format="PNG" fileref="figures/pango.png"/>
          </imageobject>
          <textobject><para>スクリーンショットは <application>gedit</application> テキストエディタで複数の言語、書記体系によるテキストの表示です。</para></textobject>
        </mediaobject>
      </screenshot>
    </figure>

    <para>Pangoは特有のドキュメントとインタフェースにより斜体、フォントの太さ、アンダーラインを含めたテキストの整形をサポートします。PangoはPangoMarkupと呼ばれる、XMLに似たシンプルな言語を使用することで、フォントのサイズや色、スタイルやその他のテキストの属性を設定することを可能にします。PangoMarkupを使用することにより、テキストブロックに手動で挿入することなくインラインでスタイルを設定できます。PangoMarkupはGTK+から直接使用され、グラフィカルインタフェースのテキストを整形するのを容易にします。</para>

    <para>スクリーンやその他のデバイスにテキストをレイアウトするときは常にPangoを直接使用するべきです。Pangoを使用することによりGTK+やGNOMEプラットフォームの他の部分とシームレスにテキストをレイアウトすることができます。また可搬性のあるコードを記述でき、あなたのアプリケーションが異なる数百の言語を表示できることを保証します。</para>

    <para>Pangoについての詳細は <ulink url="http://library.gnome.org/devel/pango/stable/">Pango Reference Manual</ulink> を参照してください。</para>
  </section> <!-- pango -->

  <section id="gdk">
    <title>GDK</title>

    <para>GDKはGTK+によって使用される、グラフィクスおよび入力デバイスにたいしてシステムを通してやりとりするための低レベルなライブラリです。あなたがアプリケーションのコードでGDKを直接使用するのは稀でしょうが、このライブラリにはオブジェクトやテキストをスクリーンに描画し、さまざまな入力デバイスとやりとりするのに必要なすべての機能が含まれています。<footnote>
    <para>GDKはX Window System、Microsoft Windows、DirectFB、Quartzを含む、いくつもの異なるプラットフォームで実行されます。それらのさまざまなプラットフォームにおいてGDKは統一された同じAPIを提供することでGTK+、そしてGTK+によるアプリケーションを変更することなしに実行することを可能にします。</para></footnote></para>

    <para>GDKの特徴は簡単なオブジェクトの描画や、スクリーンにイメージをレンダリングするのに適したグラフィクス・コンテキストと基本的な描画機能です。Cairoにより広範囲の描画システムが提供されるようになって以来、GDKはCairoのコンテキストを使用するためのフックを提供しています。</para>

    <para>GDKはGTK+で使用される高レベルのシグナルによる接続ではなく、より低レベルのキーボードやマウスおよびその他の入力デバイスからのシグナルにアクセスすることを可能にします。GDKはドラッグアンドドロップやシステムのクリップボードにアクセスするための低レベルなルーチンも提供します。カスタムコントロールを実装するときは、これらのシグナルを通じたユーザとの適切なやりとりを実装するために、これらの特色の利用が必要となるでしょう。</para>

    <para>GDKはGTK+のような完全なグラフィック・ツールキット実装するのに必要となる、その他の機能を提供します。GDKがプラットフォームの抽象化を提供するようになって以来、GDKはGTK+で必要となるすべてのシステムの機能をAPIとして提供し、GTK+複数の環境の元で実行できるようになりました。 これには複数のディスプレイ、解像度、カラーデプス、カラーマップ、カーソルなどが含まれます。</para>

    <para>イベント、ウィンドウ、クリップボードを含む、背後のウィンドウシステムに対する低レベルのアクセスが必要な場合はGDKを使用するべきです。これらの処理にGDKを使用することにより可搬性のあるコードを記述できるとともに、GTK+で記述されたコードと統合することが可能になります。GDKで提供されるシンプルな描画ルーチンを使用することは通常ありません。かわりにCairoで提供される、拡張された機能が使用されます。</para>

    <para>GDKについての詳細な情報は <ulink url="http://library.gnome.org/devel/gdk/stable/">GDK Reference Manual</ulink> を参照してください。</para>
  </section> <!-- gdk -->

  <section id="cairo">
    <title>Cairo</title>

    <para>Cairoはベクタグラフィクスやパノラマ画像の描画、およびアンチエイリアスによるテキストのレンダリングといった機能のための、洗練されたAPIを特色とする２Dグラフィクス・ライブラリです。CairoはX Window System、Microsoft Windows、イメージ・バッファを含めた複数の出力デバイスへのサポートを提供し、異なるメディアにグラフィクスを描画するコードを、プラットフォームに依存せずに記述することを可能にします。</para>

    <para>CairoはPostScriptやPDFと似た描画モデルを提供します。CairoのAPIは３次元のベジエ曲線の線描と塗りつぶし、パノラマ画像、およびアフィン変換処理といった描画のための操作を提供します。あなたのアプリケーションのコードでこれらのベクタ操作を使用することにより、高価な処理であるピクセル・ベースの描画を使用することなく、アンチエイリアスされた画像を使用することができます。</para>

    <para>Cairoの豊富な描画モデルは複数メディアへの高品質なレンダリングを可能にします。同じAPIを使用して、スクリーンに魅力的なグラフィクスやテキストの描画、イメージのレンダリングができ、印刷に適した明瞭な出力を作成することもできます。</para>

    <para>アプリケーションでGTK+により提供されるウィジェットへの描画という範囲を越えるグラフィクス描画が必要な場合は常にCairoを使用するべきです。GTK+内部の描画にはCairoが多く使用されています。カスタムな描画にCairoを使用することにより、アプリケーションは高品質でアンチエイリアスされた、解像度に依存しないグラフィクスを手にすることができます。</para>

    <para>Cairoについての詳細は <ulink url="http://www.cairographics.org/manual/">Cairo: A Vector Graphics Library</ulink> を参照してください。</para>
  </section> <!-- cairo -->
</section> <!-- graphics -->

<section id="gio">
  <title>仮想ファイルシステム</title>

  <para>GLibの一部であるGIOはGNOMEアプリケーションでのファイル、およびフォルダに対する操作のための中核となるライブラリです。GIOは取り換え可能なバックエンドにたいする、統一された仮想的ファイルシステムというレイヤーを提供します。GNOMEでは、GIOのバックエンドとして、複数のネットワークプロトコル、およびローカルプロトコルを実装するGVFSライブラリが提供されます。アプリケーションでGIOをGVFSとともに使用することによりローカルにファイルと同じくらい容易に、リモートマシン上にあるファイルにたいして処理を行うことができます。</para>
  
  <para>GIOはファイルやフォルダにたいして、MIMEタイプやファイルのアイコン、どのアプリケーションがそのファイルを開くことができるかといった広範な情報を提供します。GVFSがファイルタイプの決定と関連付けの標準として <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink> に採用されて以来、GVFSは異なるデスクトップ環境で正常に動作するようになり、開発者が異なる環境で実行されるソフトウェアを作成する助けとなりました。</para>

  <para>GIOはGNOMEデスクトップを通じて使用されます。ファイルマネージャである <application>Nautilus</application> はローカルおよびリモートのフォルダの表示に GIOを使用します。ユーザにとってこれは、ネットワークサーバがあたかもローカルのフォルダであるかのように機能することを意味します: ユーザはこれらの間で、ファイルのドラッグアンドドロップ、プロパティ参照、アプリケーションからファイルを開くことができます。アプリケーションでGIOを使用することにより、ユーザがデスクトップからアクセスすることができる、すべてのファイルを開くことが可能になります。</para>

  <para>GIOについての詳細は <ulink url="http://library.gnome.org/devel/gio/stable/">GIO Reference Manual</ulink> を参照してください。</para>

  <anchor id="gnome-vfs"/>

  <para>GNOMEの以前のバージョンでは、GnomeVFSライブラリがファイルおよびフォルダへのアクセスに使用されていました。 GnomeVFSでもリモートフォルダへの透過的アクセスを含めた同様な機能が提供されていましたが、いくつかの制限もあり、それはGIOによって解決されました。GnomeVFSはGNOME 2でも引き続きサポートされますが使用は推奨されていないので、新しく記述するコードで使用するべきではありません。GnomeVFSについての詳細は <ulink url="http://library.gnome.org/devel/gnome-vfs-2.0/stable/">GnomeVFS - Filesystem Abstraction Library</ulink> を参照してください。</para>
</section> <!-- gio -->

<section id="gconf">
  <title>コンフィギュレーションとロックダウン</title>

  <para>GConfはGNOMEのコンフィギュレーション設定を保存および取得するシステムです。GConfは２つのパートからなります:設定にアクセスするためのクライアントライブラリと、それらの設定の保存および取得を受け持つセッションデーモンです。デーモンを使用することによりGConfは、異なるストレージをバックエンドとする、入力をチェックする、同時に複数のアプリケーションからのアクセスを可能にする、などのことができるようになります。</para>

  <para>GConfにより保存された設定は、ユニークなキーもしくは識別文字列を使用して保存・取得します。キーは単純な階層による 名前空間を使用することにより他のアプリケーションやデスクトップの設定との衝突を避けいています。あなたはンフィギュレーション・キーの詳細をスキーマファイルとして提供することができます。これによりGConfはキーの入力タイプの確認、そしてキーにたいするローカライズされたドキュメントを表示することができます。またシステム管理者はこれにより、複数の設定を設定ダイアログを操作せずに一度で設定することができます。</para>

  <para>GConfは異なる設定を一度に参照することができます。典型的な例は異なる場所のファイルシステムの参照です。システムソースを適切に設定することにより、GConfはすべてのユーザにたいする既定・必須の設定を適用することができます。GNOMEの <application>設定エディタ(Configuration Editor)</application> や <application>プロファイル・エディタ(Sabayon)</application> のようなツールはGConfで設定されたシステムへのデプロイ作業を容易にします。</para>

  <para>GConfのクライアントライブラリは設定の変更にたいする通知を提供します。それにより他のツールからアプリケーションの設定が変更された場合でも、変更された設定をアプリケーションに即時に適用することが容易になります。キーにたいする値の設定は、それに興味を持つすべてのアプリケーションに通知され、デスクトップや他のアプリケーションにまたがる設定を素早く簡単に処理することができます。</para>

  <para>GConfは特定のキーを読み取り専用に設定にして、ユーザが値を変更できないようにすることによりシステムのロックダウンを容易にします。さらにGNOMEはディスクへの保存やパネルのレイアウト変更を禁止するために使用できる高レベルのキーをいくつか提供しています。<application>ロックダウン・エディタ(Pessulus)</application> のようなツールは管理者が重要なキーを探してロックダウンするのを容易にします。</para>

  <para>あなたのアプリケーションがすべてのユーザの設定を保存するような場合はGConfを使用すべきです。GConfを使用することにより即時に適用が可能な設定を提供でき、システム管理者や設定、バックアップツールから設定にアクセスすることが可能になります。</para>

  <para>GConfについての詳細は、 <ulink url="http://library.gnome.org/devel/gconf/stable/">GConf Reference Manual</ulink> を参照してください。</para>
</section> <!-- gconf -->

<section id="i18n">
  <title>インターナショナライゼーション</title>
  <para>GNOMEデスクトップと開発者用プラットフォームはアプリケーションをインターナショナライズ(訳注：異なる言語環境において機能するソフトウェアをデザインすること)、ローカライズ(訳注：実際にアプリケーションのメッセージやラベル、その他のインタフェース要素を異なる言語に翻訳すること)へのフルサポートを提供します。インターナショナライゼーションはあなたのアプリケーションがローカライズできることを保証するためのプロセスです。そのローカライズには、アプリケーションで翻訳されるすべての文字列をマークすること、その文字列にたいして番号と書式を正しくマーキングすること、そして時刻や日付、単位や書式にたいする慣習の違いの調整などが含まれます。</para>

  <para>GNOMEはローカライゼーションの機能にアクセスするために、標準のgettextと関連するルーチンを使用します。gettextを使用したローカライゼーションへのサポートは、GNOMEプラットフォームのすべてのコンポーネントに組み込まれています。あなたのソースコードは特別なツールのために、自動化されたツールによってスキャンされます。それらの文字列はPOファイルの中に配置され、翻訳者が翻訳を追跡できるようにします。gettextを使用することにより、あなたは簡単かつ効果的に実際にユーザが目にする翻訳されたバージョンの文字列、つまりアプリケーションがインストールされた翻訳ドメインにしたがって翻訳された文字列にアクセスすることができます。</para>

  <para>これらの翻訳ドメインは、文字列の変更を追跡し、翻訳のための更新を適宜行うことができるPOファイルを使うことにより作り出すことができます。GNOMEにはintltoolという、POファイルの中の翻訳を管理するためのツールが付属しています。intltoolを使用することにより、アプリケーション中の文字列の翻訳だけではく、GConfのスキーマファイルやデスクトップのエントリファイル、そしてXMLファイルにもPOファイルを使用することができます。</para>

  <para>GNOMEはgnome-doc-utilsパッケージの一部としてxml2poツールも提供します。このツールにより翻訳者はPOファイルからXHTML、DocBookを含めたさまざまな形式の翻訳済みXMLを作成することができます。</para>

  <para>インターナショナライゼーションにはは文字列が翻訳されることを可能にするだけでなく、あなたのアプリケーションを開発するときに、インターナショナライゼーション・プロセスの各ステップをGNOMEサポートするということが含まれています。GTK+は右から左に読むような言語の表示を自動的に調整し、Pangoは両方向から読むようなテキストや、さまざまな異なる書記体系で記述されたテキストを完全にサポートします。GTK+は複数の入力メソッドをサポートし、すべての言語のユーザが自身のキーボードでテキストを効果的に入力することを可能にします。GNOMEプラットフォーム全体ではUnicodeの表記法の１つであるUTF-8エンコードをネイティブでサポートし、全世界の文字と書記体系へのアクセスを提供します。</para>

  <figure>
    <title>複数言語による <application>Gnumeric</application></title>
    <screenshot>
      <mediaobject>
        <imageobject>
          <imagedata format="PNG" fileref="figures/i18n.png"/>
        </imageobject>
        <textobject><para>スプレッドシート・アプリケーションである <application>Gnumeric</application> でヘブライ語、日本語、セルビア語を実行したときのスクリーンショット。</para>
        </textobject>
      </mediaobject>
    </screenshot>
  </figure>

  <para>あなたのアプリケーションをインターナショナライズすることは、世界中の多くのユーザがアプリケーションを使用する手助けとなります。経験を積んだ翻訳者がいくつもの言語への翻訳を提供しなければならない間、アプリケーションが完全にローカライズされるまでは、アプリケーションがインターナショナライズされていることをプログラマは保証しなければなりません。</para>

  <!-- FIXME: where is danilo's awesome guide? -->
  <para>GNOMEのインターナショナライゼーションについての詳細は <ulink url="http://www.gnome.org/~malcolm/i18n/">Internationalizing GNOME Applications</ulink> を参照してください。</para>
</section> <!-- i18n -->

<section id="a11y">
  <title>アクセシビリティ</title>

  <para>アクセシビリティとは。あなたのアプリケーションをハンディキャップを持つさまざまな人が使えるよう保証するプロセスのことです。ハンディキャップはさまざまな形をとります: 視力障害、運動機能障害、聴覚障害、認知機能、および言語障害、そして発作障害などです。なんらかのハンディキャップをもつ人々が多数存在し、あなたのアプリケーションのアクセシビリティは、それら多くの人々がアプリケーションを効果的に使用することを可能にします。</para>

  <para>GNOMEはATKフレームワークを使用することによりアクセシビリティのためのデバイスのサポートを提供します。このフレームワークはグラフィカル・インタフェースのコンポーネントと密接に結びついたいくつかのインタフェースを定義します。これによりたとえば、スクリーンリーダーはインタフェースのテキストを読み上げ、インタフェスのコントロールと相互作用を行うことができます。ATKのサポートはGTK+に組み込まれており、残りの部分はGNOMEプラットフォームではGAILライブラリが使用されます。そのためGTK+を使用する任意のアプリケーションは、何ら苦労することなく妥当なアクセシビリティのサポートを提供することができます。</para>

  <para>それにもかかわらず、あなたはアプリケーションを開発するときはアクセシビリティの問題点を知っているべきです。GTK+のインタフェースが妥当なアクセシビリティを既定で提供するとしても、ATKに対して追加の情報を与えることでアクセシビリティツールに対するあなたのアプリケーションの振る舞いを改善できることがあります。もしあなたが独自のウィジェットを開発する場合、それらのプロパティをATKから使用できるよう保証すべきです。また、ユーザに情報を伝える際はサウンド、グラフィクス、色などのうちのどれか１つだけに頼るべきではありません。</para>

  <para>GNOMEデスクトップにはハンディキャップを持つ人々がデスクトップやアプリケーションを最大限有効に使用することを可能にするためのいくつかのアクセシビリティツールが付属しています。ATKをフルに実装したアプリケーションはアクセシビリティツールと協調して動作します。GNOMEのアクセシビリティツールにはスクリーン・リーダー、スクリーン拡大鏡、オンスクリーン・キーボード、そしてグラフィカルな事前予測テキスト入力システムである <application>Dasher</application> が含まれます。</para>

  <para>アクセシビリティについてのさらに広範な推奨については <ulink url="http://developer.gnome.org/projects/gap/guide/gad/index.html">GNOME Accessibility for Developers</ulink> を参照してください。また <ulink url="http://library.gnome.org/devel/atk/stable/">ATK - Accessibility Toolkit</ulink> と <ulink url="http://library.gnome.org/devel/gail-libgail-util/stable/">GAIL Reference Manual</ulink> も参照してください。</para>
</section> <!-- a11y -->

<section id="multimedia">
  <title>マルチメディア</title>

  <para>GStreamerはサウンド、ビデオ、その他のメディアを再生・作成・操作するための強力なマルチメディア・ライブラリです。GStreamerを使用することによりサウンドとビデオの再生、複数ソースからの記録、そしてマルチメディア・コンテンツの編集ができます。GStreamerは既定でいくつかの形式に対するエンコード・デコードをサポートします。その他の形式についてはプラグインにより追加することができます。</para>

  <para>GStreamerはメディアをエレメントのパイプラインを通して処理する柔軟なアーキテクチャを提供します。それぞれのエレメントにはエンコード、デコード、複数ソースの合成、マルチメディアの変換などの、コンテンツにたいするフィルターを適用することができます。このアーキテクチャによりエレメントに任意の引数を指定することができるので、GStreamerを使ってさまざまなバーチャル・エフェクトを実現することができます。そのうえ、GStreamerはオーバーヘッドが低くなるようデザインされているので、潜在的に高い負荷を持つアプリケーションと実行することができます。</para>

  <para>GStreamerはマルチメディアを取り扱うための強力なAPIを提供します。また、そのAPIは単純な再生のための便利なルーチンも提供します。GStreamerはあなたのアプリケーションで簡単にサウンドやビデオを使用するために、サポートしている形式のファイルを読み込み再生するためのパイプラインを自動的に構築することができます。</para>

  <para>GStreamerのアーキテクチャにより、エンコーダ、デコーダ、そしてすべての種類のコンテンツのフィルタをプラグインにより追加することができます。サードパーティはGStreamerを使用する他のアプリケーションから自動的に使用可能になるGStreamerのプラグインを提供することができます。プラグインではほかのマルチメディア形式や追加の機能や効果の追加を提供できます</para>

  <para>あなたのアプリケーションでマルチメディアのコンテンツを読み込んだり再生する必要がある場合や、サウンドやビデオを取り扱う必要がある場合はGStreamerを使用するべきです。GStreamerを使用することによりあなたのアプリケーションを開発することが簡単になり、GStreamerが提供する充分にテストされたエレメントをあなたの必要に応じて使用することができます。</para>

  <para>GStreamerについてのわかりやすい情報は <ulink url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html">The GStreamer Application Development Manual</ulink>、<ulink url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/">The GStreamer 0.10 Core Reference Manual</ulink>、および <ulink url="http://gstreamer.freedesktop.org/documentation/">the GStreamer documentation page</ulink> を参照してください。</para>
</section> <!-- multimedia -->

<section id="printing">
  <title>印刷</title>

  <para>印刷にたいするサポートを提供する必要のあるアプリケーションは多数存在します。ユーザはスクリーンに表示される内容と同様のものが印刷できることを期待します。GNOMEプラットフォームはあなたのアプリケーションで高品質な印刷をサポートするためのライブラリを提供します。</para>

  <section id="gnomeprint">
    <title>GNOME プリント</title>

    <note><para>このドキュメントはすでに陳腐化しており、libgnomeprintとlibgnomeprintuiは <ulink url="http://library.gnome.org/devel/gtk/stable/Printing.html">GtkPrint</ulink> に置き換えられていることに注意してください。印刷機能はGTK+ 2.10、およびそれ以降のバージョンでは、すべてのアプリケーションが使用できるクロスプラットフォーム対応のプリントAPIに直接統合されています。APIとABIの安定性はGNOME2のライフサイクルでGnomeprintの機能が引き続きサポートされることを保証します。</para></note>

    <para>GNOMEプリントのフレームワークは、あなたのアプリケーションが統一されたインタフェースによって高品質な印刷を提供する手助けをするための２つのライブラリからなります。 プリントフレームワークの中核はPostScriptの出力を生成してプリンタに送信するlibgnomeprintです。その最上位に位置するのがlibgnomeprintuiであり、これはインタフェースのために標準的なプリント用のコントロールを提供します。</para>

    <para>libgnomeprintライブラリは多くのプリンタで使用されているPostScriptのイメージングモデルを実装しています。PostScriptをサポートしないプリンタについては以降で説明するCUPSを通じてサポートされます。libgnomeprintは標準のPostScriptイメージングに加え、アルファ・チャンネルとアンチ・エイリアスをサポートします。</para>

    <para>The libgnomeprintuiライブラリは標準的な印刷ダイアログ、印刷プレビューダイアログ、そしてその他のさまざまなコントロールを提供し、印刷の処理を構築するのに要求される機能を直感的なユーザインタフェースで提供します。GNOMEプリントフレームワークはプリンタの位置やスプールされた印刷ジョブの詳細を処理し、印刷ダイアログからPostScriptやPDFに直接エクスポートする機能を提供します。</para>

    <para>印刷のためにPostScriptを出力する必要がある時は常にlibgnomeprintを使用すべきです。また、ユーザインタフェースを構築する場合はそれがたとえlibgnomeprint以外のソースによる出力のときでもlibgnomeprintuiを使用すべきです。GNOMEプリントフレームワークはユーザが印刷を行うアプリケーションに期待する統一されたユーザインタフェースを提供します</para>
  </section>

  <section id="cups">
    <title>CUPS</title>

    <para>大部分のGNOMEシステムでは、CUPS (Common UNIX Printing System)が低レベルの印刷システムとして機能します。CUPSはプリンタの検索、プリンタのオプションへのアクセス、そして異なるプリンタに対する印刷ジョブのスプーリングなどのモダンで機能豊富なアーキテクチャを提供します。</para>

    <para>CUPSはローカルおよびネットワーク上にあるプリンタを自動的に検索するユーティリティを提供します。これによりユーザは使用可能なすべてのプリンタを検索できるだけでなく、手動で設定することなく異なる種類のプリンタを使用することができます</para>

    <para>CUPSはプリンタの位置や種類に左右されない、印刷のための統一されたインタフェースを提供します。 複数の印刷プロトコルはCUPSによりシームレスに処理され、自動的にフィルタが適用された後に接続先のプリンタに送信されます。 アプリケーションは単純にPostScriptの出力を提供すれば, CUPSが自動的にPostScriptをネイティブでサポートしないプリンタに対する出力の変換を行います。</para>

    <para>CUPSはPostScriptプリンタ記述(PostScript Printer Description: PPD)ファイルの形式によるプリンタの設定オプションも提供します。PPD設定によりアプリケーションは個々のプリンタの能力を引き出し、統一されたユーザインタフェースによる使用することが可能になります。たとえばPPDにより印刷ジョブに対してcollate(訳注：複数枚印刷する時の出力順序)やstaple(訳注：印刷物にホチキスを打つ位置)を指定できるプリンタを決定してユーザインタフェースにそのオプションを表示することができます。</para>

    <para>ほとんどのケースではアプリケーションからCUPSを直接インタフェースをもつことはないでしょう。GNOMEプリントフレームワークを使用することにより、あなたはCUPSの柔軟さとパワーに自動的にアクセスできます。CUPSを下位にもつということは、プログラミングの量を少なくすることのよいユーザ経験です。</para>
  </section>
</section> <!-- printing -->

</chapter>
