1    Advanced Printing Software の概要

Advanced Printing Software は,UNIX オペレーティング・システムのための,柔軟な分散型のクライアント・サーバ型プリント・システムです。このプリント・システムの特長は,次のとおりです。

このプリント・システムは,印刷に関する次の業界標準に準拠しています。

DPA 標準では,抽象的なプリント・オブジェクト,それらの状態,構文,プロトコル,および総合的な標準属性のセットが定義されています。POSIX ドキュメントでは,プリントおよびプリント・システムの管理に関連するコマンド操作,および引数のセットが指定されています。

1.1    概念および用語

Advanced Printing Software の概念を理解すると,システムの管理を簡略化するのに役立ちます。この節では,本書で使用される用語を定義し,説明します。

1.1.1    クライアントおよびサーバ

Advanced Printing Software では,クライアント・サーバ型プリント・アーキテクチャが採用されています。クライアントおよびサーバは,プロセス間通信メカニズムを使用して情報を交換します。クライアントはサーバに要求を送信し,サーバは応答をクライアントに戻します。このプリント・システム・ソフトウェアには,プリント・システムとのインタフェースをとるいくつかのクライアント・プログラムが含まれ,また,クライアント・ユーティリティによって要求された操作を実行するサーバ・プログラムが提供されています。

1.1.1.1    クライアント・プログラム

クライアント・プログラムを使用すると,ユーザはプリント,リスト,およびシステム管理操作を開始することができます。要求を受信すると,サーバはその操作を実行して,結果をクライアントに送り返します。要求によって,結果は,単純な肯定応答,エラー・コード,またはプリント・ジョブのフォーマットされたリストなどのような,要求された情報のセットになります。

サポートされているクライアント・プログラムは,次のとおりです。

1.1.1.2    サーバ・プログラム

サーバ・プロセスには 2 種類あります。

どの構成にも,少なくとも 1 つのスプーラおよび 1 つのスーパバイザが含まれます。それぞれのスプーラおよびスーパバイザは,プリント・オブジェクトのデータベースを管理します。物理プリンタを除く,プリント・システム中のすべてのオブジェクトは,1 つのスプーラ・データベース内に作成されて,保存されます。物理プリンタのオブジェクトは,1 つのスーパバイザ・データベースに保存されます。

スプーラはシステム中の 1 次サーバとして認識されます。スーパバイザはエンド・ユーザにはほとんど認識されません。

1.1.2    オブジェクトおよび属性

このプリント・システムのアーキテクチャは,指定されたオブジェクトおよびオブジェクト属性によって表現されます。オブジェクトには,プリンタ,キュー,プリント・ジョブなどがあります。1 つのオブジェクトの属性は,そのオブジェクトを表現します。属性には,プリンタ名,ドキュメント・フォーマット,ジョブ識別子などがあります。

プリント・システムで定義されているオブジェクトは,次のとおりです。

オブジェクトを作成すると,システムによって,一部の属性に値が割り当てられます。これらの属性の多くは読み取り専用属性であるため,これらの値を設定することはできません。その他の属性については,管理者や他のプリント・システムのユーザが定義したり,変更したりすることができます。このような属性は,読み取り/書き込み属性と呼ばれます。

このプリント・システムは,多数の属性をサポートしていますが,これらすべてについて知る必要はありません。ただし,頻繁に目にする特定の属性については,時間をかけて知る価値があります。

属性には,1 語またはハイフンで区切られた複数の語からなる標準名があります。一般的なプリンタ属性の例としては,printer-nameassociated-queueenabledinput-trays-ready,および sides-supported があります。同様に,ジョブ属性の例としては,job-namejob-id,および job-state-message があります。ドキュメント・オブジェクトは, document-formatsides,および number-up のような属性で表現できます。

1.1.3    操作

操作とは,オブジェクトに対して実行するアクションです。たとえば,ユーザはドキュメントを印刷したり,状態情報をリストしたり,ジョブを削除したり,プリンタを使用可能または使用不可能にしたり,サーバ属性を設定したりします。

サポートされている操作は,次のとおりです。

エンド・ユーザが使用することを想定している操作もありますが,管理目的に限って使用することを想定している操作もあります。ほとんどの操作は,特定のオブジェクトにだけ適用されますが,すべてのオブジェクトに適用される操作もあります。たとえば,管理者は「作成」操作を使用して,新しいプリンタ,キュー,およびオブジェクトの初期値を設定することができます。ユーザは,「印刷」操作を使用してジョブやドキュメントを作成します。同様に,管理者はプリンタ属性を設定しますが,ユーザはジョブを変更できます。

1.1.4    論理プリンタ,物理プリンタ,およびキュー

このプリント・システムでは,論理プリンタおよび物理プリンタという 2 種類のプリンタ・オブジェクトが定義されています。これらはともに,プリント・デバイスのソフトウェア的表現を意味します。論理プリンタ・オブジェクトには,1 つまたは複数の物理プリンタの特性および機能が含まれています。ユーザがジョブを印刷するときに論理プリンタを指定すると,その論理プリンタは,そのジョブおよびドキュメントの印刷を行うために必要な条件を満たす物理プリンタにジョブを送信します。物理プリンタは,実際の出力デバイスのソフトウェア的表現です。物理プリンタ・オブジェクトには,そのプリンタの製造元とモデル,接続の詳細,およびすぐに使用できる機能のリストが含まれています。

論理プリンタと物理プリンタは,キューによって結合されています。論理プリンタと物理プリンタをキューで関連付けることによって,ユーザが印刷のために指定するプリンタと,出力デバイスの特性によって定義された物理プリンタの間に関係が確立されます。

論理プリンタと物理プリンタを区別することにより,ユーザは,アドレスやモデル番号によってではなく,機能によってプリンタを指定することができます。このようにすると,ユーザのデスクトップでのプリンタ設定をほとんど,またはまったく更新することなく,プリンタのハードウェア構成を拡張することができます。論理プリンタは,エンド・ユーザに対して,一定の,サイト固有の,省略時の属性値を持つ物理プリンタを提供するために使用されます。さらに,論理プリンタを使用すると,ファン・イン・キューおよびファン・アウト・キューを設定して,複数の類似の論理プリンタがジョブを 1 つのキューに送信したり,1 つのキューが 2 つ以上の出力デバイスに対してジョブを実行したりすることも可能になります。

1.1.5    ジョブおよびドキュメント

ドキュメントとは,ユーザが印刷するファイルのことです。ドキュメントによっては,アプリケーションまたはプリンタ・ドライバによって,PCL または PostScript のようなプリンタ言語にフォーマットされます。ドキュメントは,ほとんど,またはまったくフォーマット情報を持たない,シンプル・テキスト・ファイルにすることもできます。

1 つまたは複数のドキュメントを印刷するという要求によって,システムにジョブが作成されます。プリント・システムはこのジョブおよびそのドキュメントに,追跡と管理のために使用する固有の識別子を割り当てます。さらに,このジョブに名前を付けて,プリント・キューの末尾に挿入します。

1.1.6    初期値オブジェクト

システムでは,ジョブおよびドキュメントに対する属性の初期セットを提供する,次の 2 つのオブジェクトがサポートされています。

initial-value-job オブジェクトは,ジョブをシステムに対して実行するときに適用される,ジョブ属性のセットです。1 つのスプーラ上にある 1 つまたは複数の論理プリンタを initial-value-job オブジェクトに関連付けることにより,これらのプリンタに対して実行されるすべてのジョブが,ジョブ属性の初期セットをとるようにすることができます。ユーザは,initial-value-job オブジェクトをプリント・ジョブの実行の一部として指定することにより,ジョブがその属性をとるようにすることができます。

initial-value-document オブジェクトは,initial-value-job オブジェクトと似ていますが,含まれるのはドキュメント属性だけであり,ジョブを構成する個々のドキュメントに適用できるという点が異なっています。

初期値オブジェクトを使用すると,ユーザは,よく使用するジョブおよびドキュメント属性のセットを,容易にプリント・ジョブに適用することができます。初期値オブジェクトは,必要に応じていくつでも作成することができ,また,その中に含まれる属性および値は,簡単に追加,削除,および変更することができます。

1.1.7    supported 属性および ready 属性

特定のオブジェクトまたは機能がサポート対象および使用可能になっている場合を宣言する,いくつかの属性があります。このような属性は,xxx-supported 属性および xxx-ready 属性と呼ばれます。これらの属性のほとんどはプリンタに適用され,管理者およびオペレータによって設定されます。これらの属性のごく一部はサーバに適用されますが,そのような属性はサーバによって設定され,読み取り専用です。

スプーラは,ジョブの必要条件および使用可能なプリント機能に基づいて,プリント・ジョブをスケジューリングします。多くのプリント機能は,ユーザがそれらを利用できるようにするためには,その前に,サポート対象および使用可能な属性として宣言する必要があります。管理者およびオペレータは,特定の xxx-supported 属性および xxx-ready 属性を設定して,ユーザが出力デバイスまたはプリント・ソフトウェアの機能を使用できるようにする必要があります。たとえば,物理プリンタの sides-supported 属性および sides-ready 属性を設定して,ユーザがドキュメントを両面印刷できるようにする必要があります。

物理プリンタ,論理プリンタ,スプーラ,およびスーパバイザは,supported 属性および ready 属性を,次のように処理します。

設定する必要のある supported 属性および ready 属性についての詳しい説明は,第 5 章を参照してください。

1.1.8    ネーム・スペースおよびネーム・サービス

プリント・システムでは,サーバ,プリンタ,およびキューは,名前で識別されます。ネーム・サービスを使用することによって,分散型のクライアントおよびサーバが,オブジェクトのネットワーク・アドレスをその名前から探し出すことができます。クライアントおよびサーバは,要求を処理するときに,ネーム・サービスを使用してお互いを探し出します。

1.1.9    サーバ・データベース

サーバは,プリンタ,キュー,およびジョブなどのオブジェクトを,永続的な,ディスク上のデータベースで保守します。このため,管理者は,システムがリブートされた場合でも,変更されるまでシステム上に存在するこれらのオブジェクトの属性を定義することができます。ユーザのニーズに合わせて,プリンタ,キュー,初期値オブジェクトを作成します。ジョブ・オブジェクトおよびドキュメント・オブジェクトは,プリント・クライアントがジョブを実行すると作成されます。これらのオブジェクトは,物理プリンタ・オブジェクトを除いてすべて,スプーラのデータベースに保存されます。物理プリンタ・オブジェクトは,スーパバイザ・データベースに保存されます。

ここで説明したオブジェクトの他にも,それぞれのサーバ・データベースには,サーバ名,スーパバイザなのかスプーラなのか,プリンタの名前とサポートするキューなど,そのサーバについて記述する属性を保存するために使用されるサーバ・オブジェクトが含まれています。

1.1.10    ユーザ・タイプおよびアクセス制御

プリント・システム・ソフトウェアを管理するユーザを制限するために,プリント・システムでは,明確なユーザのクラスおよびそれぞれのクラスが実行できる操作を定義します。

管理操作は,システム管理者によって実行されるものと,プリンタ・オペレータによって実行されるものに分類されます。エンド・ユーザ操作では,ファイル (ドキュメント) を印刷することや,プリント・ジョブがシステムで処理される途中経過を監視することができます。

アクセス制御リストを使用して,スプーラおよびスーパバイザへのアクセスを制限します。管理者は,どのユーザが,どの種類の操作を実行するかをサーバごとに指定する,アクセス制御リストを定義します。

1.1.11    通知およびイベント

通知プロファイルを定義することによって,プリント環境がどのように機能しているかについて,常に情報を得ることができます。システム内のサーバ,プリンタ,キュー,ジョブ,およびドキュメント・オブジェクトには,それぞれ関連付けられたさまざまなイベントがあります。たとえば,プリンタの状態が変わると通知されるイベント,ジョブが完了すると通知されるイベント,サーバがシャットダウンされると通知されるイベントなどがあります。個々のイベントを指定する他に,通知プロファイルによっても,特定のイベントが発生したときの通知方法を指定することができます。イベントの通知方法としては,電子メール,または X/Motif コンソールのどちらかを選ぶことができます。

1.2    コンポーネント

この節では,1 次プリント・システム・ソフトウェアのコンポーネントについて詳しく説明します。対象となるのは,クライアント・ユーティリティ,サーバ・プログラム,デーモン,データベース,およびプリンタ属性ファイルです。

1.2.1    クライアント・プログラム

プリント・システム・ソフトウェアには,システムに対するコマンド行インタフェース (CLI),および 3 つのグラフィカル・ユーザ・インタフェース (GUI) ・プログラムが含まれています。

1.2.1.1    エンド・ユーザ・プログラム

CLI を使用すると,エンド・ユーザがアクセスできるすべての印刷,リスト,およびジョブ削除のプログラムにアクセスできます。CLI に加えて,エンド・ユーザは pdprint および pdprintinfo という GUI プログラムを使用して,これらの機能を実行することもできます。インストレーション・プロシージャでは,pdprint プログラムおよび pdprintinfo プログラムが CDE デスクトップに統合されるため,これらが省略時の印刷および印刷情報の動作となります。

1.2.1.2    管理プログラム

すべてのシステム機能について,プリント・システムの管理者が CLI を使用してアクセスできるようになっており,同等の機能の多数が,pdprintadmin GUI を使用して実行できるようになっています。

1.2.2    サーバ・プログラム

プリント・システム・ソフトウェアには,プリント・システム機能の大部分を提供する,次のような 3 つの 1 次サーバ・プログラムが含まれています。

これらのサーバ・プログラムは,マルチスレッド・アプリケーションであり,多数のプリンタ,ジョブ,および要求を同時に処理することができます。中小規模のインストレーションでは,1 つのスプーラ・プロセスと 1 つのスーパバイザ・プロセスだけが必要となります。大規模なインストレーション (プリンタが 50 台を超える) の場合には,2 つ以上のスーパバイザ・プロセスを実行する必要があります。プリント・システムから既存の lpr/lpd システムまたはプリンタに対して,印刷操作をサポートする必要がある場合には,LPD アウトバウンド・ゲートウェイ・スーパバイザを構成する必要があります。

1.2.2.1    スプーラ

スプーラ pdsplr は,このプリント・システムの中心となるコンポーネントです。pdsplr は,次のような機能を実行します。

クライアントは,要求を作成し,プリント・ジョブを指定されたプリンタに対して実行します。スプーラは,このジョブをプリンタに関連付けられたキューに入れ,initial-value-job 属性および initial-value-document 属性を,このジョブおよびそのドキュメントそれぞれに適用します。スプーラはこのジョブのドキュメント・ファイルをスプール・ディレクトリに保存し,スプール・ディレクトリでは,スーパバイザによってアクセスされるか,またはスーパバイザに引き渡されます。関連付けられた物理プリンタでジョブを受け付ける準備が完了すると,スプーラはジョブを印刷のためにこのスーパバイザに転送します。

1.2.2.2    スーパバイザ

スーパバイザ pdspvr は,直接またはネットワーク接続を経由してホストに接続されている出力デバイスを制御し,これらと通信します。pdspvr は,ドキュメント・データを出力デバイスに送信し,printing (印刷中) 状態にある間のジョブの進捗状況に関する状態情報を返して,報告する役割を果たします。さらに pdspvr は,デバイスが通信に応答しない場合にも,これを報告することができます。

スーパバイザ・プロセスは,最大で 50 のさまざまな種類と接続方式の出力デバイスを制御し,これらと通信することができます。プリンタ,ネイティブ言語,および通信機能に応じて,スーパバイザは双方向通信,柔軟なデバイス制御,複数のプリンタ言語,ドキュメントのデータ・ストリームを翻訳または変更できるフィルタ,およびオプションのフォーマットされたセパレータ・ページを提供します。

1.2.2.3    LPD アウトバウンド・ゲートウェイ・スーパバイザ

LPD アウトバウンド・ゲートウェイ・スーパバイザ pdspvlpr を使用すると,ユーザは,プリント・ジョブを既存の lp/lpr プリンタに送信したり,使用している環境にあるプリント・システムに送信したりすることができます。ジョブを LPD キューに登録したり,まだプリントしていないジョブをキューから削除したりできます。

1.2.3    サーバ・デーモン

Advanced Printing Software には,クライアント・ユーティリティおよびサーバ・プログラムの代わりに動作する,次のデーモン・プログラムが含まれています。

プロトサーバ・デーモンは,ホスト上で動作しているスプーラおよびスーパバイザのために,サーバ登録および検索エージェントとしてサービスを提供します。クライアントはまず,ホストのプロトサーバと通信して,操作で指定されたサーバの RPC バインド情報を取得しなければなりません。プロトサーバは,固定登録プログラム番号を使用して自分自身をホスト上で登録します。

通知サーバは,スプーラおよびスーパバイザによって発行された通知メッセージを配信します。通知サーバは,重大なイベントが発生した場合に,電子メールを送信したり,GUI メッセージ領域にメッセージを表示したりする役割を果たします。コンソール通知デーモン pdconntf は,通知メッセージを CDE システム・コンソール・ウィンドウに表示させる場合に必要です。

これらのデーモンのうち,それぞれ 1 つのコピーだけが,一度に 1 つのホストで実行されます。プロトサーバ・デーモンおよび通知サーバ・デーモンは,inetd プログラムの制御によって自動的に実行されます。

1.2.4    プリンタ属性ファイル

このプリント・システム・ソフトウェアは,さまざまなプリンタ・モデルをサポートしています。このソフトウェア・パッケージには,サポートされているプリンタ・モデルそれぞれについて,プリンタ属性ファイルが含まれています。それぞれのファイルは,対応するプリンタ・モデルの機能を記述し,オプションを指定せずに関連付ける属性のセットを指定します。プリンタ属性ファイルを使用すると,新しくサポートされるプリンタを,現在のプリント・システムに容易にインストールできるようになります。これらのプリンタ属性ファイルには,対応するプリンタの製造元,およびモデルを容易に識別できる名前が付いています。

1.2.5    翻訳フィルタおよび変更フィルタ

スーパバイザは,ドキュメント・データ・ストリームを,出力デバイスに引き渡している間,これを翻訳したり変更したりすることができます。管理者は,1 つまたは複数の翻訳フィルタを設定して,あるフォーマットのドキュメントを,ターゲット・プリンタと互換性を持つ別のフォーマットに自動的に翻訳することができます。ドキュメントを印刷中に,ユーザは変更フィルタを指定することもできます。そのようなフィルタを使用すると,行番号およびページ番号を追加したり,ドキュメントの不要な部分を削除したり,プリンタの必要条件に合わせてコード・セットを変更したりできます。

ほとんどの標準 UNIX ユーティリティを始め,入力を stdin からとり,出力を stdout に送信するプログラムであれば,どのようなプログラムでも,翻訳フィルタまたは変更フィルタとして構成することができます。また,独自のフィルタ・プログラムを開発して,構成することもできます。

Advanced Primting Software には,テキスト・ドキュメントを PostScript に変更する翻訳フィルタ trn_asciips が含まれています。このフィルタはさらに,片面に 1 つ,2 つ,または 4 つのページ・イメージが配置されるようにテキストをフォーマットすることもできる (number-up) ほか,横長または縦長の方向で印刷することもできます (content-orientation)。ユーザがテキスト・ファイルを PostScript プリンタで印刷する必要がある場合には,スーパバイザの filter-definition 属性を設定してこの機能を使用する必要があります。