ボストクリプトテータを普通のレーサプリンタに出力可能 - 貯 i PLUS 標準価格 ( 税別 ) 198 , 000 円より PDL - Write PLUS はポストスクリプトデータを U N Ⅸワークステーション上で 解釈・実行し、ラスタイメージ生成・出力をするソフトウェアです ■機能・特長 ・日本語ポストスクリプト言語仕様に準拠 ・和文アウトラインフォント 10 書体まで搭載可能 ・欧文アウトラインフォント 35 書体を標準搭載 ・データファイルの入力および会話形式で、オペレータをインタラクテイプに実行可能 ■動作環境 Sun Microsystems Sun シリーズ —NEWS シリーズ 日本旧 M RS / 6000 シリーズ SUMISTATION S - S300 シリーズ 日本 DEC ( 御相談下さい ) NEC EWS -4800 シリーズ ( 御相談下さい ) OMRON LUNA シリーズ ( 御相談下さい ) YHP HP9000 シリーズ ( 御相談下さい ) ※各ワークステーションの仕様のちがいにより PDL write PLUS の仕様か 多少異なります ※上記ワークステーション以外にも移植可能ですので、御相談ください。 ー対応プリンタ •CANON ・ Sun Microsystems ・ HEWLETT PACKARD ・ XEROX ・ SONY ・ R ℃ OH ・京セラ ・ NEC ・旧 M ・ DEC ・ CASIO LASER SHOT B406 , A408 NEW LASER SHOT A404 , B406S , B406D , B406E , A304E SPARCprinter Laser JetII Laser press 4 5 ( sun シリーズの場合はシリアル、パラレル、変換が必要です。 ) NWP533 NWP537 CLP3320-SP4 L -580 , L -780 , L -980 ( Laser 」 e Ⅲ工ミュレーションモードで使用 ) N7846- 別 5586- HOL5589- H 田 LN03,LN05 CP -2000 ※その他、プリンタにも順次対応予定※ハードウェア名、ソフトウェア名等は各メーカーの商品または登録商標です PostScript は、米国アドヒ・システムズ社の登録商標です HP - GL は、ヒューレット・バッカード社で開発されたプロッタ制御用の命令セットです PostScript テータの出力は標準出力又は指定ファイルへの出力 HP - GL データの入力は標準入力又は指定ファイルからの入力 ・入出力 ・コピー枚数の指定が可能 ・ランドスケーアポートレート出力をサポート ・拡大縮小を自由に設定可能 ・線幅は 0mm 以上の実数で自由に設定可能 ・出力文字は PostScript に実装されているアウトラインフォントを使用 PostScript Level 1 対応の出力機器に出力 ・出力される PostScript のプログラムは、 PDL-JPLUS 、 PDL-WritepLIJS をはじめとする ・ダウンロードフォント ( ユーザー定義フォント ) 対応 ・エミュレートモードの実装によりほとんどの HP - GL プロッタに対応 ・コマンド仕様は、 HP7580B をベースに漢字仕様を追加 ■機能・特長 PostSc ⅱ pt のプログラムに変換するソフトウェアです G L-SCRI PT は、ワークステーション上で H P-G L 記述のプログラムを解釈して、 標準価格 ( 税別 ) 190 , 000 円 - S IP HP - GL テータをポストスクリプトテータに変換 ・開発・著作 シーアイシステムテサイン株式会社 〒丐 0 東京都渋谷区渋谷 2 ヨ 57 東邦生命ヒル 発売フ匸 ■ 藤忠エレクトロニクス株式会社 営業第一部 : 〒巧 0 東京都渋谷区渋谷 2 ー巧東邦生命ビル 27 階 TEL03 ( 3486 ) 59 引 大阪支店 : 〒 5 大阪市中央区久太郎町 4 ー 2 ー丐本町セイキビル 5 階 TEL06 ( 24D42 引 名古屋営業所 : 〒 460 名古屋市中区丸の内トロー円名古屋長銀ビル 6 階 TEL052 ( 204 ) 2575 資料請求 N 。 054
連載 /UNIX Commurmcation Notes—O リスト 9 手作り whois サーパー : その 2 アクセス・コントロールロしたサーパー case $accesshost in accesshost= ( /usr/etc/getpeername database="/public/whois/database " export PATH PATH=/usr/ucb : /usr/bin : /bin # ! /bin/sh *osaka—u ・ ac ・ jp) *wide. ad. jp) read key # accepted # accepted echO use thiS service, exit 0 ; key='echo $key ー tr —d ' \ 015 , ( grep ー -i —w $key $database Ⅱ ech0 NO match entry for \ ” '$key"\" exit 0 WhOiS サー′ヾー whois サーバーは、 2 つのプログラムから構成されま す。片方が、実際のデータベースを検索するプログラムで す。これはキーを標準入力から読み出し、検索結果を標準 出力に書き出すものです。もう 1 つはデーモンを構成する プログラムで、 inetd と同様にクライアントからリクエス トを受け付け、ソケット標準入出力に張り付け、検索プロ グラムを起動します。 ます、デーモンのプログラムをみましよう。リスト 10 を見てください。このプログラムでは、最初に ioctl() で TIOCNOTTY をおこなうことでコントロール・ター ナルを切り離します。次にソケットのセットアップをし て listen() でクライアントからの接続を待ちます。接 続要求がくるとプロセスを fork し、子プロセスはその まま次の接続要求を待ちます。親プロセスでは、ソケッ トに標準入出力を張り付け、実際に検索するプログラム /usr/local/etc/do-whois. pl を起動します。 実際に検索するプログラムの最初の部分をリスト 11 に 示します。ここで用いている Perl は、 pgperl と呼ばれ る Postgres とのインターフェイスを組み込んだもので、 Postgres の配布キットのなかに含まれているものです。 プログラムでは、最初に標準出力に対するバッファリ ングを小さく ( 1 ) にして、出力がすぐにソケットに書き込 まれるようにしています。次にメッセージを出力したあと に、標準入力から検索キーを読み込みます。キーに関して は、 chop を用いて行末文字を削除するとともに、 ASCII UNIX MAGAZINE 1992.11 whois の長短 whois のプロトコルはごく単純なので、 whois サーバー によるサービス提供の実現も容易です。組織内でオンライ ンイゞ可能なデータは、 whois を使えば簡単に共有できる でしよう。利用ガ去も簡単なので、多くの人に受け入れら れると思います。 しかし、 wh 。 is にはさまざま問題点もあります。大きな 問題は、 whois サーバーか動いている計算機が分からない と、サービスを受けられないことです。 NIC 、 JNIC など の whois サーバーは、ひろく知られています。ところが、 どの大学や組系哉が whois サーバーをもっていて、どのよ うなサービスを提供しているのかすらも分からないのか現 状です。 もう 1 つの問題は、 whois サーバーは、ほかの whois バーとの関係をもたずにそれぞれが独立してサービ スを提供することです。たとえば、日本国内のすべての wh 。 is サーバーに検索リクエストを送り、山口 " という 名前で登録されているデータをすべて得る、という処理は 簡単にはできません。 whois サーバーがある場所が分か らないうえに、それらを相互に連携して大きな 1 つの分 の印刷可能文字 (PrintabIe Character) 以外を取り除い てキーとします。その次に得られたキーを用いて検索処理 をしています。実際の検索処理は Postgres にかなり依存 したものなので、ここでは省略します。 63
気楽に IJN Ⅸ、かっこよく X 0 図 21 寝転んだ kterm2 途中釜茴はあまり美しくありませんが、とりあえすこれ (iostview, e 田 n 1 コ で EPS ファイルができました。 7 11 : 33 : 第 こまでは、、 xwd → xpr → pstoepsi" という方 ~ 去で したが、匠になってもっと便利なツールカ鯛発されまし た。その名も xwd2ps で、 xwd フォーマットをいきな り EPS に変換するという優れものです。 使い方は簡単です。 xwd2ps [ オプション ] Cxwd ファイル ] 結果は標準出力に書き出さ入力ファイル (xwd フ ォーマット ) を省略すると標準入力から読み込むので、次 のようにすると余分なファイルを作らすにすみます。 xwd —frame ー xwd2ps > f00. eps 各種のオプションがありますが、指定したほうがいいの は、 -P" (Portrait) オプションです。理由は、 xpr コマ ンドの -portrait オプションの場合と同様です。さきほど の kterm. xwd を変換するには次のようにします。 monkey% xwd2ps —P kterm2. xwd > kterm2. eps monke y% 2. ウインドウ名を指定 (-name オプション ) 3. ウインドウ ID を指定 (-id オプション ) xwd2ps もフリーソフトウェアです。インストールは簡 1 はすぐに分かりますが、 2 と 3 は説明が必喫でしよう。 単ですから、ソースファイルが入手できるのなら、あなた 画面上のウインドウは、それぞれが名前と、、ウインドウ もコンパイルにチャレンジしてみてはいかがでしようか。 ID" と呼ばれる番号をもっており、ウインドウ ( クライ XtoPS アント ) が生成されるときに割り当てられます。ウインド こまでは xwd を基本に、フォーマットを変換して ウの名前や ID を知る方法はいくつかありますが、 xwin- PostScript ファイルを生成しましたが、次に紹介する ⅲ f 。コマンドを使うのが手つ取り早いでしよう。図 18 の コマンドは、直接 PostScript ファイルを作り XtoPS oclock を xwininfo で調べ、 PostScript ファイルに取り ます 9 。 込んでみましよう。 xwininfo の使い方は以前 ( 1992 年 9 月号 ) に紹介し XtoPS [-root ト id (ID) ト name (name)] [-frame] ( フ ましたが、マウスでウインドウをクリックすると情幸肋ゞ表 ァイル名 ) 示されます。 oclock をクリックすると、次のような結果 これで、指定されたファイルに EPS フォーマットで か彳等られました。 出力します ( ファイル名に一を指定すると、標準出力に書 monkey% xwininfo き出します ) 。 ウインドウ窈旨定には次の 3 つのガ去があります (xwd xwininfo : P1ease select the window about vhich you vould like information by clicking the のオプション指定と同しです ) 。 mouse in that window . 1. 画面まるごと (-root オプション ) xwininfo : Window id : 0XIC00007 "oclock" 9 XtoPS は、 X の contrib ( 寄贈されたフリーソフトウェア ) に含ま れています。 Abs01ute upper—left X : 942 . neptl-nex - 41 UNIX MAGAZINE 1992.11
連載 /An lntroduction to X Window System Quit コマンド領域 三一 Fi1e Stattß : NO し ncniified unnaned. 「 i Fi1e: Di 「 ec し。「 9 : 図 2 F ⅱ e のメニュー 142 ディレクトリやファイルの変更をおこなわずに、このメ ◇ Cancel きます。 Directory と同様にキー入力します。 読込み、格納の対象となるファイル名の表示、変更がで ◇ File マウスカーソルを移動し、キー入力します。 変更ができます。変更したいときは、このボタンの上に ファイルの編集をおこなうカレントディレクトリの表小、 ◇ Directory 選択するポップアップ・メニューか現れます ( 図 2 ) 。 され、左ボタンをクリックすると、さらに下記の機能を す。マウスの右ボタンをクリックするとファイルに格納 図形の格納や読込みなどのファイル操作をおこないま File を、もとの場所に貼り込むことができます。 直前にカット & ペーストでバッフアに格納された図形 Paste 再描画できます。文書ェデイタの L と同様の機能です。 キャンバス上の図形表示がおかしくなった場合、これで Redraw 取り消せます。 誤って消去 / 変更 / 追加したとき、その直後ならはこれで Undo 態にします。 キャンバスに描かれたすべての図形を消去して、白紙状 Delete ALL のとき、左マウスポタンを押すと、強制終了します。 まいませんか ? 〃というメッセージが表示されます。 いない状態で Quit を選択すると、、、本当に終了してもか xfig を終了します。図形の編集後、ファイルに格納して 図 3 Export のメニュー HagnificationX: 0 「 ie . a し ion : Language: De 「 aul し 0 . p . FiIe: 円朮 . FiIe: 100 landscape PS unnaned. ps ニューを終了します。 ◇ Save ファイルに図形を格納します。もし、同名のファイルが すでにある場合は、石薩忍を求めてきます。 ◇ Load ファイルから図形を読み込み、それまでの編集内容と置 き換えます。 ◇ Merge Load それまでの編集内容に追加するかたちでファイルから図 形を読み込みます。 Export 図形のファイルへの保存や、その形式などを設定します。 右ボタンをクリックするとファイルに格納さ左ボタ ンをクリックすると、さらに下記の機能を選択するポッ プアップ・メニューが現れます ( 図 3 ) 。 Magnification ◇ 出力系言言、の変換時に拡大 / 縮小したいときは、この 部分に倍率を書き込みます。 ◇ Onentation 出力時に、用紙に対する出力方向を選びます。横長の Landscape と、縦長の Portrait があります。 ◇ Language 出力に利用する言語を選びます。初期設定では、 ps つま り PostScript 形式に設定されています。なお、これらの 出力言語に変換する場合は、 TransFig として提供される 変換プログラムを間接的に呼び出すので、これらのツー ルが用意されていないと出力できません。 ◇ DefauIt 〇 utput File 出力ファイル名カ甘旨定されないときに使われるファイル 名を設定します。 ◇〇 utput File 出力先のファイル名を設定します。 UNIX MAGAZINE 1992 ユ 1
気楽に IJN Ⅸ、かっこよく X ロ 図 18 見慣れた ? X ウインドウ xwd [-root ト土 d (ID) ト name (name) ] [-frame] [-out おもな使い方は次のとおりです。 イルにすることができるので、気軽に使えるツールです。 せんが、マウス操作で簡単にウインドウのイメージをファ ァイルに取り込みます。いきなり PostScript にはなりま X に標準で伺属しているツールで、ウインドウ単位でフ xwd て考えていきます。 にしましよう。ここでは、図 18 のようなサンプルを使っ ぞれ向き不向きがあるので、状況に応して使い分けるよう さえあります。しかし、取り込むガ去がさまざまで、それ なかには直接 PostScript ファイルになってしまうツール 丘では X の画面をファイルに取り込むツールか増え、 PostScript フォーマットにできれば、あとの処理は簡単 ルに取り込むテクニックをいくつか紹介します。いったん そこで、 X の画面を PostScript フォーマットのファイ ファイル名 ] UNIX MAGAZINE 1992.11 の右上の、、 kterm2 " を取り込むには次のようにします。 込みたいウインドウ上でマウスをクリックします。図 18 実行するとマウスカーソルが、、十 " に変わるので、取り むときに指定します。 -frame オプションは twm などのタイトルバーも取り込 でファイル名を指定すると、ファイルに出力できます。 xwd の実行結果は標準出力ですが、 -out オプション 図 19 xwud コマンド 6 れ : xw 像駅 可 kt 礎 11 39 力するために作られたものですから、 PostScript フォー xwd フォーマットのファイルをさまざまなプリンタへ出 換するには、 xpr コマンドを使います。これはもともと、 xwd フォーマットから PostScript フォーマットに変 すが、これを PostScript に変換する必要があります。 ォーマットを便宜上、 xwd フォーマットと呼んでおきま のままではいなどの文書に取り込めません。このフ ファイルは PostScript フォーマットではないので、そ こんなに簡単に使えるのですが、残念ながら出力される xwd から PostScript へ リックすると消えます。 指定すると図 19 のようなウインドウか現マウスでク 標準入力から読み込みます ) 、さきほどの kterm2. xwd を と簡単で ( ーⅲオプションでファイルを指定しないときは xwud [-in ファイル名 ] 使い方は、 ちゃんと取り込めたか、 xwud コマンドで確かめます。 にします。 きますが、これについてはもうすこしあとで説明すること すれは、マウスを使わすにウインドウを指定することもで などの孑長子を付けて区別しましよう。オプションを利用 . xwd できます。ほかのファイルと間違えないように ンドウをクリックすれは、画面をまるごと取り込むことも したってからプロンプトか現れれば成功です。ルートウィ ・マウスを動かして kterm2 をクリックしたあと、すこ monkey% monkey% xwd ー f rame ー out kt erm2. xwd
ワークステーションのおと・一⑩ たがって、大きさが \ 1 矼 ge のポールド体を出力する の書体が有効であってもローマン体の文字になる。し 「これらのサイズ変更宣言を使用すると、その時点でど サイズの変更に関する説明 ( 117 ページ ) を読むと、 \normalsize の順番の間違いです。『い』の文字 ではそうなっていません。原因は、 \bf と \Large 、 字で出力する " だったと思われます。ところが、図 1 プタイトルは本文で使われているのと同じ大きさの文 の意図は、、、タイトルはやや大きめのポールド体、サ これだけでは、まだ駄目です。このソースを書いた人 \end{center} \bf\normalsize スケーラカレ・フォントとフォントサーパー } {\bf\Large X のフォントキ諚 ( 3 ) \ \ \begin{center} 具イ神勺には次のようにします。 とカきます。 ライター体になってしまった " などいう事故を防ぐこ と } で括れば、、、ある箇所以降の文字がすべてタイプ にすれは、後ろの \normalsize は不要です。また { していますが、 { と } を使って環境を切り替えるよう また、 \Large や \normalsize で文字サイズを変更 うです。正しくは、 ce Ⅱ ter 工竟を使うべきでしよう。 ようです。大量の \ 凵は、センタリングをするためのよ 9 ~ 21 行目 . quote 竟の部分でタイトルを出力している の説明にあるように、 \vspace* を使うようにします。 スを取り除く " という牛に引っ掛かったわけです。上 を使っているので、、、ページの知頁の垂直方向のスペー この例では、 \begin{document} の直後で \vspace かれることはない」 スペースは、ページの : 頁や末尾になったときも取り除 を取り除く。ただし、 \vspace* コマンドで作成された に、はページの地頁と末尾の垂直方向のスペース 「行頭と行末で水平方向のスペースカ陬り除かれたよう 説されていました。 \vspace の説明 ( 97 ページ ) を見ると、次のように解 『 I hX 』 (LesIie Lamport 著、邦訳 : アスキー刊 ) の してなのでしようか。 のようです。しかし、出力はそうなっていません。どう 7 行目 . この \vspace で、タイトルをすこし下ナるつもり 78 には、 \large\bf と入力する必要がある (\bf\large では出力できない ) 」 となっています。ですから、それぞれ \Large\bf 、 \normalsize\bf とします。 23 行目 : タイトルの体裁を整えるために縦方向にスペー スを空けているようです。しかし、きれいなタイトルを 出したいのなら、 \maketitle コマンドを使うべきで しよう ( 『い TI 砂 YX 23 ページ ) 。これは、次のようにす ればよいでしよう。 \titIe{X のフォントキ諚 ( 3 ) \normalsize\bf スケーラカレ・フォントとフォントサーパー } \author{#f 眞 } \maketitle 25 行目 . さきはど説明したように、 \section を使うよう にします。 \ sectio Ⅱ { スケーラブル・フォント (ScaIab1e Font)} 26 行目 : \section では、節見出しの前後に適当な間隔を 空けてくれますから、この \vspace は不要です。 28 ~ 31 行目 : \ \ を使って、強制的に改行しています。文 章を読むと、、、改行 " がしたいのではなく、新しい段落 を始める ( 改段する ) のが目的のようです。こういう場 合には、次のように空行を挿入します。 X11R5 ては、標勺な X サーパーにもスケーラブル・ フォントを扱う劼功ロわりました。 そのため、フォントは次のような方法で サービスされることになります。 い TEX の初心者がよく犯す誤りが、この \ \ の使いすぎ です。ほとんどの場合、このように空行を挿入すれは解 決します。 また、次のように \ \ を残したまま空行を入れてはいけ ません。 X11R5 てせ、標勺な X サーバーにもスケーラカレ・ フォントを扱う劼ヾ加わりました。 \ \ そのため、フォントは次のような方法で サービスされることになります。 これだと、 \ \ による改行と空行による改段の指示が重 なってしまいます。このまま物杉すると、 Underfu11 \hbox (badness 10000 ) in paragraph at lines 123 ーー 125 UNIX MAGAZINE 1992.11
続きが完了します。ログイン時のメッセージカ俵示され、 シェルからプロンプトが出力されます。 以上で、リモートマシンでの作業ができるようになりま した ( 前例では、 hostnames whoami などのコマンドを実 行しています ) 。リモートマシンでの作業がひととおり終 了したら、リモートマシンからログアウトします。これは 通常の方法と同じですから、シェルを終了するく CTRL ー D 〉、 10g 。 ut 、 exit などのコマンドを使ってログアウトしま す。すると、 Connection closed. というメッセージが表示され、 rlogin コマンドが終了して ローカルマシンのシェルに戻ります。 リモートログインに失敗したら ? 以上のように、リモートログインでは、リモートマシン に登録されているユーザー名とパスワードを利用してログ インします。このどちらかか誤っていると、リモートログ インは成功しません。その様子を見てみましよう。 wife—% rlogin husband ー 1 belle Password: X X X X X Login incorrect login: 登録されていないログイン名を利用したり、あるいは不 正なパスワードを入力すると、メッセージ、、 Login incor- rect" とログイン・プロンプト、、 login : 〃が出力され、再度 ログイン名の入力が促されます。ここで正しいログイン名 とパスワードを入力すれば、リモートログインは成功しま す。誤った入力を繰り返してしまうと、何度目かの入力の wife—% rlogin husband ー 1 belle Password: X X X X X Login xncorrect 10g ⅲ : belle Password: X X X X X Login lncorrect 10g1 Ⅱ : belle Password: X X X X X Login xncorrect login : belle Password: X X X X X UNIX MAGAZINE 1992 ユ 1 IJN Ⅸへの招待 チルドエスケープ rlogin コマンドによるリモートログインでは、ローカル マシンのキーポードからの入力が、ネットワークを介して リモートマシンに送られます。ローカルマシンはキーポー ドからの入力を読み取り、それを、、そのままクリモートマ シンに渡しているわけです。一方、リモートマシンからの 出力、たとえばコマンドの実行結果とかシステムからのメ ッセージなどは、ネットワークを介してローカルマシンの 画面に表示されます。 さて、リモートログインの最中に、ローカルマシンに対 して 2 種類の孑ぐが出せます。これを、チルドエスケープ と呼びます。具体的には、 . とく CTRL ー Z 〉のいすれかの 工スケープ・シーケンスを入力して指示をおこないます 1 。 これらの入力は、ローカルマシンからリモートマシンへは 送信されす、ローカルマシンで処理されます。 . は、 rlogin コマンドを終了するものです。このエスケ ープ・シーケンスを入力すると、リモートマシンには 、、 rlogin コマンドを終了します〃という通知がされず、ロー カルマシンとリモートマシン間の接続が切れてしまいます にれにともない、リモートマシンのシェルも終了します。 このとき、リモートマシンのシェルで中断状態にあったプ ロセスなどは、強制終了されてしまいます ) 。では、その様 Login incorrect login: belle Password: X X X X X Login incorrect Connect10n closed. wife-% 子を見てみましよう。 husband-% ~ Closed connection. wife-% rlogin husband Password: X X X X X Login incorrect login: C10sed connection. wife—% ー 1 belle く CT 日 L ー Z 〉は、 rlogin コマンドをいったん停止し、ロ ーカルのシェルに戻るためのエスケープ・シーケンスです。 1 ~ く CT Ⅲ . Z 〉は、ローカルのシェルがジョブの中断機能を備えている場合にの み有効です。 159
連載 UN Ⅸマルチメディア 図 4 通常のプログラムとイベントープログラム プログラムの流れ scanf(.. printf( prl n せ (... 入力 出力 入力 出力 イへント getEvent() 出力 open 入力 keypress め、丘のウインドウ・プログラミングはオプジェク ト指向の考え方をとりいれています。 Xt もそのヨ列ですが、オプジェクト指向でない言語、 すなわち C 言語で実現しているために多少無理があ り、すっきりした記述ができません。 InterViews[2] 、 ET 十十 [ 3 ] などは、 C 十十によるウインドウ・システム のためのクラスライプラリです。このようなクラスライ プラリを使うためには、オプジェクト指向言語を採用す る必要があります。 ・ GUI との親和性 イベント駆動型プログラムの特徴に加えて、ウインド ウの GUI (Graphic User lnterface) では、ウインド ウ、メニュー、ボタンなどの部品が使われます。これら の部品をオプジェクトとしてモデル化することにより、 プログラムで簡単に使えるようになります。このように オプジェクト指向と GUI の相生は上罅交的よく、それは オプジェクト指向誕生のきっかけとなった SmaIItaIk が GUI を用いていたことからも分かります。 オプジェクト指向を採用したところで、次に間題となる のは、開発言語を何にするかです。もちろん、 C のような 非オプジェクト指向言語でも、オプジェクト指向にもとづ いた設計を実現することはできます。 Xt がその一例です が、やはり多少無理があり、けっきよくプログラマーに 言語の選択 UNIX MAGAZINE 1992.11 負担となって返ってきます。オプジェクト指向にもとづ く言語としては、 C 十十、 Smalltalk 、 CLOS (Common Lisp Object System) などさまざまなものがありますが、 それぞれいくつかの特徴があります。 メタレレ・プログラミングとまれます。 機能 4 です。つまり、実行時にシステムを拡張できるの いった要求に応えることカきるというきわめて強力な ッドを受け取ったときにちょっと前処理をしたい、と これは、すべてのクラスの振舞いを変えるとか、メソ CLOS などでは、クラスの実行時の変更が可能です。 ・重加勺な機能 す。 にシステムを作りながら試してみることも難しいようで ンパイルしなければならないからです。また、部分的 通性はありません。クラスを変更したら、とりあえずコ 一方、 C 十十のようなコンパイラ型言語にはこうした融 CLOS はこのタイプにあたります。 作を試すことが簡単にできるからです。 SmaIItaIk や その場でインスタンスを作り、メッセージを送って動 最たに発揮します。なにしろ、いま定義したクラスから ます。この特徴は、インタープリタ型言語で有効性を て、とりあえず衄乍を試してみることか容易におこなえ イプを作ったり、本を作らすに部分だけをこしらえ ングです。既存のクラスを組み合わせて簡単なプロトタ オプジェクト指向のもう 1 つの特徴は、プロトタイピ インタープリタかコンパイラか 4 71
連載 An lntroduction tO X Window System 中村眞 図形工テイタ ( 1 ) xfig の使い方 roff から X へ これまで、この連載では MIT が提供する標準的なコマ ンドや機能に重点をおいて説明してきました。それでも、 まだ触れていない拡張機能がいくつかあります。これら は、やや特殊な話であったり、今後も変化が予想されるの でそのままにしてあります。 ところで、この連載は、ともすればその折々の私の興味 に引きすられがちで、、、実際の役に立たない話になってはい まいか〃とちょっと気になるこのごろです。すこしでも身 近な話題はないものかと悩みながら、ふと画面を見ると、 図形工デイタのウインドウが目に留まりました。 図版の作成や文字列の編集は、私たちの周囲でも日常的 におこなわれています。もちろん UNIX の世界でも、文字 編集は、その出現とともに提供されたアプリケーションの 1 つです。 ed 、 ex 、 vi 、 Emacs など、それぞれ奥の深いコ マンドが、本誌でもさまざまな機会に紹介されています。 では、現在のようにピットマップ・ディスプレイが一般 的ではなかった初期の UNIX では、どのようにして図形 を作成していたのでしようか。図版の出力が必要とされる のは、おもに清書や印刷の分野です。 UNIX には、かなり 早くから写植機と接続し、印刷用の版下を作成するコマン ドが用意されていました。これが、 roff と呼ばれるコマン ド群です。 roff とは、、 run off" の略で、写植機 ( 現在では、レーザ ープリンタでの活用のほうが多いようです ) を対象とする 、 hroff 〃と、同しソースデータをキャラクタ端末に出力する ための、、 nroff" があります。 man コマンドのソースデー タは、この roff 形式になっています。 140 roff と併用する図形出力のためのコマンドに pic があ ります ( troff のプリプロセッサとして使われます ) 。 pic の 入力は図形を論理的記述で表したもので、たとえば、、、箱か ら矢印か精円までイ申びる〃というように、文字列や座標な どで記述されます。これは、ちょっとした図形を描いたり、 座標や構造の決まった図形の作成には便利ですが、イメー ジをもとに描くのには不向きです。 組版用アプリケーションとして、 troff と並び称される のか 1 X です。明 X にも図形を論理的に記述し、図として 取り込む機能が備わっていますが、 troff にくらべると複 雑な図形は描きにくいようです。これは、図形を特別なフ オントの組合せてオ苗いていることが一因でしよう。 これらの組版用アプリケーションとは別に、 LBP など のページプリンタを制御するための言語としてよく知られ ているのが、 Adobe の PostScript です。最近では、多く のメーカーから PostScript 対応のプリンタが提供され ていますから、 troff や X の最終出力にもよく Post- Script が使われます。 話をもとに戻しましよう。図形編集プログラムは、紙に 出力できてこそ利用価値があるというものです。 X 上での 図形編集プログラムの多くは、編集後は直接、間接になん らかの手段を用いて troff や X 、 PostScript の形式で ファイル出力できるようになっています。 今回から数回に分けて、これらの図形編集プログラムに ついて解説していきます。 xfi g xfig は、ユーサー構築プログラムとして MIT からの配 布ソースの c 。 n 地 b ディレクトリにも収められています。 UNIX MAGAZINE 1992 ユ 1
す。ここではこのはかの、 . emacs に成疋するカスタマイ ズのガ去をいくつか紹介しておきましよう。 あるメッセージをプリンタに出力したいときは、 (mh-print-msg) を入力します。デフォルトでは lpr コ マンドを実行しているだけですが、実行させたいコマンド を mh-print-msg に孑旨定すると、 PostScript ファイル へ変換したり、プリンタ名を指定できるようになります。 これは、 . emacs ファイルに次のような行を加えます。 (setq mh—lpr—command—format "lpr —Pm1" ) (setq mh—lpr—command—format "nkf —e top 引 lpr" ) 最初の例はプリンタ名を "ml" に指定し、次の例ではメ ールを PostScript に変換してから lpr を実行します。 メールの返事を出すとき、もとのメールを引用すると行 頭に > > カ甘甲入されますが、次のような行を加えると変更 できます。 (setq mh—ins—buf—prefix " > " ) 行頭に > とスペースが挿入されるようになります。 現在のところ、引用には > を使うことが多いようです。 したがって、引用に > > を使うと、、引用の引用 " と思わ れかねません。なるべく周囲の人と統一したほうがよいで X からの利用 こでは、 X ウインドウから MH を利用するガ去を参 考程度に挙げておきましよう。 X で MH を利用するのに xmh コマンドが用意されて います (/usr/bin/X11/xmh)0 コマンドを引数なしで 起動すると図 17 のようなウインドウが立ち上がり、フォ ルダーのスキャンやメッセージの削除、移動など、メッ セージの編集以外はすべてマウスて操作できます。 しかし、図を見ても分かるように、残念ながら日本語が 正しく表示されていません ( X11R5 の contrib には Xsi に対応した xmh があります ) 。キーポードに慣れると、 マウスを操作するのにキーポードから手を離すのがうっと うしいという人もいますし、たいていは Nemacs があれ は事足りるので、わざわざ xmh を使わなくてもいいよう な気はしますが Nemacs から MH を利用すると、コマンドラインから MH を利用するよりすっと楽です私たちも、メールを 0 38 図 17 xmh 回 mh: c ー一住司區壘司匡亟司 c ・ 1 UNIX MAGAZINE 1992.11 ル $ j 鈩 $ お ? ! ◆ Aa$$ 1 ! ・ c 1 〉 52 : 40 い ! ! ! 1 = 8 》 = jAl ( J : 1 : ・ 582 〉 1 ? l< 、、 1 い 調 : ~ 4Y1 ( J : 1 ! { ん ! 一日 AI(J ( ー日 ( の AI$ ・ t ・ : t. SQ 兜 14 : : 圏◆ 0 *bject: 画双ー j1.kÄ ro : 0 加ー ld: ( 9 れ从 1 圏 77 ー t は cs ・ 01a ーⅡ・ j 》 ードコピーを貼り込んで出力できるようになりました。 リンタが普及してきた結果、 I*TEX の文書に絵や画面の のハードコピーが必要な場合もあります。 PostScript フ もありますが、プログラムの出力例などのように、画面 絵を描くには、 kdraw や tgif などのお糸苗きツール えがいいですよ 文章で理まった文書よりも、適度に絵を配したはうが見栄 の、、絵 " のほうか説得力をもっことがあります。それに、 論文やレポートなどを作るときに、文章よりも 1 枚 面を、紙に印字したいと思ったことはありませんか ? 皆さんは、自分がいつも使っている X ウインドウの画 画面のハードコピー なるパワーアップを目指してください。 ほど挙げたマニュアルや参考文献などをよく読んで、さら 使うには、 MH のことをもっと知る必要があるので、さき うときにはもっとたくさんの機能があります。より便利に キーの割当て表を見ても分かりますが、 Nemacs から使 ときは 1 週間もそのままということもあります。 読むのに Nemacs を動かしたままのことが多く、ひどい