Think GNU 第 7 回

□アナハイム USENIX 編□

CUJJ#11/'90.8.18 発売号掲載

0. はじめに

 アナハイム USENIX に参加したあとボストンへ行き、プロジェクト GNU の人々とミーティングを済ませてきた。この行程のうち GNU BOF と Richard(rms) との会話を再現したい。

1. アナハイム USENIX にて

 今回の USENIX はロサンゼルス郊外、車で飛行場から 75 分のアナハイムで開かれた。そこはすぐ 1 ブロック向こうがディズニーランドである。発表はアナハイム・コンベンション・センターで、チュートリアルや展示会はアナハイム・マリオット・ホテルで行なわれた。

 ちなみに USENIX は米国の Unix のユーザ・グループである。

1-1.T シャツが付いてきた

 USENIX が結成されて 15 周年の記念 T シャツが受付で参加者に配られていた。色は黒と赤の 2 種類から選べるようになっていた。15 周年ということで発表内容も特色のあるものになった。例えば、これまで確立した技術のレビュー的なものもあえて採り入れられていた。

1-2. キーノート・スピーチは Dennis Richie だった

 USENIX ではテクニカル・セッションの最初にキーノート・スピーチを設け、その時々で注目を浴びている人を招いて発表してもらっている。今回は 15 周年記念なので Unix OS の作成者の 1 人である Dennis Richie が招かれていた。

 彼はスピーチの中で、次のように少しだけ FSF に触れた。

「新しい仕事を始めたが、何も目新しいものを作っていない。しかし、これまでのソース・コードや慣習にひきずられずに制限のないものを書けるという点から、もう 1 度最初からコマンドや OS を作っていることは評価できる。誰もがソース・コードをアクセスできた時代は、本当に良かった」

 ここで回想している昔とは、全ての Unix がソース・コードを含めての配布であり、バイナリのみの配布形態はなかった。従ってソース・コードを自由にやりとりできたし、修正情報は全てソース・コードを対象にしてオープンであった。この点だけから考えると、昔は良かった、ということになる。筆者らも同感である。

 古き良き昔のオープンな姿を再現しようとしているのがプロジェクト GNU なのである。

1-3.GNU BOF のチェア・パーソンは Richard だった

 GNU に興味を持つ人間が集まる非形式的な集まり、GNU BOF が今回も USENIX 開催中の第 2 夜に開かれた。いつもは Len がチェア・パーソンを務めるが、Richard が gcc のチュートリアルをするために USENIX にやって来ていたので彼が司会を務めた。その時の話をまとめたものを次に示す。

1-4.CMU Mach カーネル「マイクロカーネル」

 もっぱら CMU の OS のプロジェクト、Mach を GNU カーネルのベースにできるかどうか、という点に注目が集まった。結局 Mach プロジェクトのリーダに尋ねることになり、後日 rms がそのリーダに問い合わせた。

 Mach プロジェクトのリーダからの返事は「もう既にアカデミック・サイトに配布しており 7 月末にマイクロカーネル (フリーMach) をリリースの予定」とのことである。◆1

1-5.gcc バージョン 2.0

 2.0 の紹介が rms よりあった。次のような特徴があるとのこと。

 最適化については、次のような点が新しい。

1-6.Emacs バージョン 19

 この紹介が rms よりあった。次のような特徴があるとのこと。

1-7.GNU ソフトウェアの入った CD-ROM

 X11 R4 のソース・コードと GNU ソフトウェアが入っているものを Young Mind 社が配布しているとの説明があった。

1-8. 著作権法がない国への配布

 著作権がない国へ GNU ソフトウェアを配布していいかどうかを筆者が尋ねたところ、「著作権法がなければ自由なソフトウェアの配布の障害にはならないので、OK」との返事が rms からあった。

1-9. 新しい gdb

 次の特徴を入れたものを gdb バージョン 4.0 として作成中である、とのこと。◆3

1-10.GNU ソフトウェア

 次のようなフリー・ソフトウェアを求めているとの説明が rms からあった。

1-11. その他

 calc というパッケージの紹介が rms からあった。

 GNU Emacs 用の拡張電卓パッケージ、電卓の機能のほかに簡単な数式処理もできる。

 フリー・ディスカッションが続いた。例えば、GNU カーネルのファイル・システムとして使えそうなものは何か、など。

2. ボストンにて

 筆者らは個人的にも質問があった。FSF の社長でありプロジェクト GNU のリーダ、そして第一線のプログラマでもある rms と話す機会があったので報告したい。

2-1.Richard との会話

 rms に最初に出会って、まずは次のような会話をした。ちなみに彼は文法的に完全な英語を話す。

筆者 「日本の GNU ソフトウェア・ユーザに望むことはある ?」

rms 「寄付だね。寄付をよろしく (有用なソース・コードや寄付金のこと)。それから日本はどんどん新しいコンピュータを開発している割には、フリー・ソフトウェアが少ないね。もっとフリー・ソフトウェアに注目して、増やしてほしいなあ」

筆者 「今何をやりたいと思う ?」

rms 「プログラミングだよ」

 プロジェクト GNU の運営や管理の仕事で忙しいのだと想像される。それでプログラミングしている時間がないようだ。我々も、rms に、落ちついてプログラミングできるような環境を整えてあげなければ、と思う。

2-2.Intel 社 i860 のマスク・パターンの額縁の話

 rms の部屋の下にビニールで包装された額が立てかけてあった。それは Intel 社の i860 という 32 ビット (外部バスが 64 ビットなので 64 ビット CPU とも言われることもある)CPU のマスク・パターンの拡大写真である。その下に「Richard の協力に感謝する」といった文面があった。◆5

 どうも i860 の gcc の移植に rms がイチマイ噛んでいるような気がした。というのは最近の gcc(GNU C コンパイラ) にはきれいな Intel 社 i860 のコードが入っていたし、Intel 社からも i860 用のサポートのアナウンスがしきりとあったので。MIT に一番近い中華レストランへ夕食に行く道すがらこの筆者の疑問を rms にぶつけてみた。

筆者 「rms の部屋のところに立てかけてあった Intel の i860 のマスク・パターンの写真は何かな ?」

rms 「以前 Intel 社でコンサルタントをしていたことがあったんだ。その時の作業は gcc の一連のターゲット・マシンに Intel i860 を加えることだった。その際にもらったものなんだ。そのチップの命令セットはちょっと変わってたなあ」

筆者 「実際の Intel i860 を使ったマシンは借りられなかったの ?」

rms 「昔、Intel 社に雇われていたことがあって、その時の作業は calvin と接続されている i860 を使った。calvin にはまだ接続されているよ」

 calvin とはシリアルの箱に出てくるキャラクタではない。英語の漫画で calvin とか susie とか hobbes が出てくるものがあるらしい。それを持ってきてプロジェクト GNU で使っているマシンのホスト名にしている。その中で calvin というホスト名のマシンは、以前 Intel 社から一時期借用していた。IBM PC/AT 互換機で Intel 社の 386 を使用ったパーソナル・コンピュータである。現在配布されている gcc/386 や gas/386 のソース・コードはその時の作業がベースになっている。

2-3. 一般公的使用許諾改訂について ◆6

 FSF では一般公的使用許諾 (GPL、GNU General Public License) の手直しを考えている。これまでは、もっぱら GNU ソフトウェアとのリンクを想定しているプログラムも GNU ソフトウェアから派生したプログラムと見なされていた。従って、GPL でカバーされるという見方であった。そのため商用ソフトウェアの開発には GNU ソフトウェアを使えなかった。GNU ソフトウェアの使用を断念したユーザも多い。また、GNU データベース・ライブラリを使っていたが、GPL の話を聞いてがっかりした人もいた。

 しかし、GPL のライブラリに対する条項に変更を加えようとしている。ライブラリのソース・コードと商用ソフトウェアのリロケータブル・ファイルを配布し、ユーザの手でリンクしてもらう、という案である。★1

 この改訂が済めば GNU ソフトウェアの採用も激増すると考えられる。この改訂の進み具合を中華を食べながら、尋ねてみた。

筆者 「ところで、GPL のライブラリの適用条件の変更によって大幅なユーザの増加が考えられるし、システム・コンパイラとしての gcc の採用も増えると思うんだけど」

rms 「今改訂中だけど、時間がかかると思う。困難な点がたくさんあるからね」

2-4.GNU Emacs について

 GNU Emacs では 1 つ起動すれば、そのエディタのセッションを終了しないで複数のファイルの編集が可能である。それぞれのファイルは GNU Emacs の世界の固有のバッファ名に割り当てられる。一般にはパス名からディレクトリ部分を除いたものをバッファ名にしている。

 GNU Emacs では、バッファの大きさの制限で合計 16M バイト未満というのがある。GNU Emacs の内部データ構造と密接に関連している。以前、uunet の Emacs に関するニュース・グループ (comp.emacs というグループ名だったと思う) でこの点について議論された。これを広げるにはどうするか、とか広げる必要はないんじゃないの、という議論だった。面白い議論であったが、一連の議論に対して原作者 rms の意見はそのニュース・グループには出てこなかった。

 また、GNU Emacs のパッケージ作成言語 Emacs Lisp には、基本データ・タイプとして整数型がある。その整数型は 24 ビットで内部表現されているのでそれを簡単に越える扱いはできない。◆7

 この辺の事情について rms の意見を聞いてみた。

筆者 「GNU Emacs ではバッファの大きさの合計が 16M バイト未満という制限があるけど、この制限は Emacs バージョン 19 で取り除く予定はあるの ?」

rms 「予定はない。バージョン 19 ではそれぞれのスクリーンのバッファの大きさの制限が 2M バイトになり、8 枚のスクリーンを持てる構成にするつもりだよ。この制限を外すには、GNU Emacs の非常に多くの箇所を修正しなければならないんだ」

筆者 「Emacs Lisp では整数型基本データ・タイプの大きさが 24 ビットになっているけど、32 ビットまで扱えるようなパッケージを作った人が会社にいるよ」

rms 「どうして無限長まで扱えるようにしなかったのかなあ ?」

筆者 「それはですね、Emacs Lisp の中から RPC ルーチンを操作したいためだけだったらしいよ」

 この RPC とは Remote Procedure Call の略で、マシンにまたがってサブルーチン呼び出しができるものである。Sun の NFS はこれを使って実現されている。rms にしてみればどうせ作るのなら汎用のものを作ればいいのに、と考えたのであろう。

2-5. 生年月日と血液型について

 ちょっと聞き間違いがあるかもしれないが、Richard の生年月日を尋ねてみた。

筆者 「生まれた年はいつなの ?」

rms 「1953 年だよ」

筆者 「誕生日は ?」

rms 「4 月 16 日です」

筆者 「血液型は ?」

rms 「知らない。でも、どうしてこういったことを尋ねるの ?」

筆者 「日本人の多くは初対面の人との話をスムースに進めるために、最初に血液型や星座を聞いて、それを導入にするんだよ」

rms 「どうして信じるのかなあ ? 根拠がないじゃないの。星占いは信じない方がいいよ」

(……と筆者ら 2 人は説得される)

 この会話から、rms の性格の一端がうかがえたと思う。

2-6. 自分で作りたいプログラムは

 rms はこれまで多くのプログラムを書いてきた。書きたくてプログラミングをしたものなのかどうか、興味があった。そこで次のような質問をした。

筆者 「今どんなプログラムを書きたいと思う ?」

rms 「数式処理プログラムと DTP かな」

筆者 「数式処理プログラムというと、MAXIMA や Mathematica のようなものだね。DTP ソフトウェアには、何かアイデアがあるの ?」

rms 「GNU Emacs 上に実現したい。ページという概念のないものがいい。ページという概念があると、テキストを挿入しただけで、何ページものドキュメントの再レイアウトのために膨大な再計算を行なわなければならないからね」

 これらのプログラムはまだ手つかずである。しかし、彼ならば作り始めたらそれほど時間をかけずに作れると思うし、その出来上がりが今から楽しみである。

3. 今月のニュース

 今月リリースされたものの中から面白そうなものを取り上げる。小物のツールとこれまでリリースされたコマンドの修正情報である。

3-1.COFF 形式がサポートされた gdb と gas

 Sun-386i や System V 系列の COFF(Common Object File Format、オブジェクト・ファイルの形式) 用に gas と gdb を修正したニュースが 7 月 8 日 gnu.gcc というニュース・グループにアナウンスされた。GNU ソフトウェアでは BSD で用いられているオブジェクト・ファイル形式を採用しており、それ以外は原則としてサポートしていない。この発表はユーザの Michael Bloom からである。◆8

●入手方法

 オハイオ州立大学から anonymous uucp と anonymous ftp で入手可能である。

方 法 anonymous ftp

マシン名 tut.cis.ohio-state.edu

ファイル名 /pub/gnu/coff/gnu-coff.tar.Z

 UUCP の場合、次のファイル名でアクセス可能である。オハイオ州立大学では、以前から anonymous ftp だけではなく UUCP のサービスも提供している。しかし、UUCP で入手するには設定も面倒で電話代もかかる。

osu-cis!~/gnu/coff/gnu-coff.tar.Z

 このファイルの中には gas と gdb の修正情報が圧縮された形式 (tar コマンドの結果を compress という圧縮プログラムで圧縮しているので .tar.Z という拡張子の付いたファイル名になる) で入っている。

3-2. cpio(バージョン 1.1) ◆9

 7 月 8 日 gnu.utils.bug というニュース・グループに David J. MacKenzie が cpio のリリースをアナウンスした。普通のユーザには (前回紹介した GNU tar が十分な機能を有しているので) 必要ないと思われるが、cpio 形式のテープを抱えている人にとっては朗報だろう。cpio とは System V の Unix で用いられている配布用の形式、あるいはコマンド自体のことである。

●特徴

 Unix 版の cpio と比較して次のような特徴がある。

●入手方法

 最新の GNU ソフトウェアが置いてあるいつものマシンから次の方法で入手可能である。

方 法 anonymous ftp

マシン名 prep.ai.mit.edu(IP アドレスは 18.71.0.38)

ファイル名 pub/gnu/cpio-1.1.tar.Z

●提案やバグ報告先

 電子メールにて bug-gnu-utils@prep.ai.mit.edu へ。

3-3.GNU ファイル・ユーティリティ (バージョン 1.3)

 バージョン 1.2 から 1.3 に更新された、という情報を David J. MacKenzie がアナウンスした。

●内容

 このパッケージには次のプログラムが入っている。

cat、chmod、cmp、cp、create、dd、dir、du、head、install、ln、ls、mkdir、mkfifo、mv、rm、rmdir、tac、tail、vdir

●特徴

 バージョン 1.2 との変更点を示す。

●入手方法

方 法 anonymous ftp

マシン名 prep.ai.mit.edu(IP アドレスは 18.71.0.38)

ファイル名 pub/gnu/fileutils-1.3.tar.Z

●提案やバグ報告先

  電子メールにて bug-gnu-utils@prep.ai.mit.edu へ。

3-4.GNU find(バージョン 1.0)

 GNU find のリリース情報があった。find は、あるディレクトリの下に含まれるファイルに対して、ある操作を行なうプログラムである。David J. MacKenzie からのアナウンスである。◆10

●特徴
●入手方法

方 法 anonymous ftp

マシン名 prep.ai.mit.edu(IP アドレスは 18.71.0.38)

ファイル名 pub/gnu/find-1.0.tar.Z

●提案やバグ報告先

 電子メールにて bug-gnu-utils@prep.ai.mit.edu へ。

3-5.GNU finger(バージョン 1.0β)

 finger が Brian Fox からリリースされた。紹介文の日本語訳を次に示す。

●概要

 GNU finger は、Internet ネットワーク上で Unix ホスト・マシンのユーザ相互の情報を入手するために設計されたユーティリティ・プログラムである。これは、Berkeley 4.3 の finger のソース・コードの完全な置き換えを狙ったものである。

●なぜ finger を作成したか ?

 1 人当たりの計算能力の向上に伴い、メインフレームは主役の座をあけわたした。最新の計算機はたいてい 1 人 1 台を所有し、それが 1 つのホスト・マシンとなり、1 つのサイトに複数のホストが接続される構成になっている。ログインしているユーザを 1 人見つけ出すのにそれぞれのサイトに問い合わせてから、ほかのサイトでログインしている複数のユーザを見つけ出そうとする。そのサイトに 20 個のホスト・マシンがあるとすれば、ログインしているたった 1 人のユーザを探すのに、finger プログラムを 20 回も実行しなければならない。

 GNU finger は簡単で効果的な方法でこの問題を解決している。多くのホスト・マシンを抱えているサイトのために、ある 1 つのホスト・マシンを finger サーバとして扱うように設計した。サイト A にあるユーザがサイト B でログインしているユーザについて知りたい場合は、そのサイト上のホスト 1 つ 1 つに問い合わせる代わりに、サーバ・ホストだけを問い合わせるだけで済む。これは大変便利である。

 GNU finger は、既存の finger プログラムを全て書き換えて、さらに拡張を施したものである。

 サイト A(例えば MIT、マサチューセッツ工科大学) のあるユーザが、サイト B(例えば Caltech、カリフォルニア工科大学) のあるユーザの顔のビットマップを、GNU finger コマンドをタイプするだけですぐに見ることができる ! あるフォーマットから別のフォーマットへのグラフィック・データ変換も GNU finger を経て行なわれる。そのようなイメージがどこでどのようにして保存され、ほかのどのサイトでイメージを表示することができるかどうかを、サイトが知る必要はない。

 finger はどのような方法で起動されたかを判断して、いろいろなフォーマットでユーザに関する情報を伝達する。コマンド引数を与えずに起動された GNU finger は、どのマシンで動作しているかにかかわらず、サイト全体の finger リクエストを処理する。詳細に表示するためのオプションもある。ローカル・マシンの情報だけを集めるオプションもある。

 GNU finger は、指定されたホストのサーバ・プロセスの実行を行なう。これはローカルなマシンにログインしているユーザを見失わないようにするためである。

●入手方法

方 法 anonymous ftp

マシン名 prep.ai.mit.edu(IP アドレスは 18.71.0.38)

ファイル名 pub/gnu/finger-1.0b.tar.Z

●提案やバグ報告先

 電子メールにて bug-gnu-utils@prep.ai.mit.edu へ。

3-6.flex(バージョン 2.3)

 flex は Unix の lex の代替品である。これは Vern Paxson からのアナウンスである。

 2.2αリリースと 2.3 との主な変更点は、バグの修正とドキュメントの書き直した点である。

●入手方法

方 法 anonymous ftp

マシン名 ftp.ee.lbl.gov(128.3.254.68)

ファイル名 flex-2.3.tar.Z

3-7.groff(バージョン 0.3)

 groff は GNU 版 troff で、James Clark からのアナウンスである。

●概要

 groff は GNU 版 troff であり、関連するプログラムも含む。このリリースでは troff や pic、eqn、tbl を実現している。これらは DWB 2.0 と「同じ機能のものに」となるべく互換性を持たせるように作ってあるが、さらに多くの特徴をも備えている。例えば、PostScript ドライバや TeX dvi フォーマットのファイルを生成するドライバ、タイプライタのような出力デバイス向けのドライバ、X11R4 xditview プリビュア、man マクロ、Berkeley 版 me マクロの修正版から成る。pic では、TeX 用の tpic に似た機能をサポートする。

 groff は C++ で書かれているので、C++ バージョン 2.0 の機能を満たしている G++ あるいは別の C++ コンパイラが必要である。

●入手方法

方 法 anonymous ftp

マシン名 prep.ai.mit.edu(IP アドレスは 18.71.0.38)

ファイル名 pub/gnu/grofff-0.3.tar.Z と pub/gnu/groff.diff-0.3-0.3.1

●提案やバグ報告先

 電子メールにて bug-groff@prep.ai.mit.edu へ。

3-8.m4(バージョン 0.05)

 GNU 版 m4 がリリースされた。GNU m4 は System V の m4 とほとんど互換性があるが、少し非互換の部分を残す。詳細はマニュアルを参照のこと。

●入手方法

方 法 anonymous ftp

マシン名 prep.ai.mit.edu(IP アドレスは 18.71.0.38)

ファイル名 pub/gnu/m4.tar.Z

●提案やバグ報告先

  電子メールにて bug-gnu-utils@prep.ai.mit.edu へ。

4. おわりに

 アナハイム USENIX と rms との Q&A の各一部を報告し、GNU ソフトウェア関連のニュースも併せて紹介した。今回の USENIX は内容的に興味深いものがあったので機会があれば続報を載せたい。

参考文献

★1

Michael Rowan 他編集 / 引地美恵子、引地信之訳「GNU ダイジェスト」No.9、FSF 1990 年 6 月、この元となった日本語 Texinfo 形式のテキスト・ソース・ファイルを JUNET(日本の Unix を中心としたネットワーク) の電子掲示板に投稿した。また、「The C Users Journal Japan」誌の #11 の追録に掲載。


Think GNU 連載第 7 回【脚注】

◆1

CMU のマイクロカーネルは既にリリースされている。

◆2

ここで述べた特徴や最適化全てが gcc バージョン 2 で既に導入された。

◆3

gdb バージョン 4.5 と gcc バージョン 2.2.2 がリリースされている。

◆4

OCR(光学式文字認識) ソフトウェアをプロジェクト GNU では求めていたが、最近その作業に着手した。

◆5

gcc バージョン 2.3.1 では 64 ビット CPU(例えば DEC Alpha) のコードも生成できるようになった。

◆6

ここでも GNU General Public License のことを一般公的使用許諾と呼んでいるが、現在は一般公有使用許諾という名前に変更している。

◆7

Emacs のソース・コードの一部を修正して、比較的簡単に上限を 16M バイトではなく 32M や 64M バイトに拡張できることがわかった。

◆8

System V 用のオブジェクト・ファイルの形式には新しいものが採用されている。ELF という名前である。GNU ソフトウェアでサポートするオブジェクトの種類がまた 1 つ増えた。

◆9

GNU cpio のバージョンは現在 1.5 に、fileutils は 3.1 に、GNU finger は 1.0b に、flex は 2.3.7 に、groff は 1.05 に、GNU m4 は 1.0 にそれぞれバージョン・アップしている。

◆10

ある条件を満たすファイルを探したり、ある操作をそのファイルに施すために find を用いる。