Think GNU 第 5 回

□GNU 史探訪 (2) と Emacs の周辺□

CUJJ#9/'90.6.18 発売号掲載

0. はじめに

 USENIX という Unix のコンファレンスについて、このあいだまで書いていたと思っていたら、もう既に 6 月の USENIX の準備を開始しなければならなくなった。今回の USENIX のコンファレンスでは次のような GNU 関連の催しがある。

 先月までの説明では、GNU の歴史はまだ Richard M. Stallman の個人史の段階であったが、そろそろプロジェクト GNU を始めた経緯に触れよう。

1.GNU 史探訪

1-1. 歴史的意義

 これまでの社会的事件の中で、これは歴史に残るに違いないと事件発生当時に感じたのものは、小さいころ (10〜20 年前、というと年がばれてしまうかな :-) ちなみにこの記号はスマイル・マーク、顔を横にして見ると納得がいくだろう。Unix の世界ではなじみの方も多いと思う) よりも最近の方が多く発生している気がする。例えば、冷戦の終結、東西両ドイツの併合などなど。昔の話で当時、歴史ものだと思った事件といえば、よしのぶちゃん事件に 3 億円事件、石油ショック、ちょっとローカルかもしれないが、仙台沖地震などである。

 高校のころ (正確に言うと高専なのだが) いつもテストの間際になって思ったことがある。もう 1 週間テストが延長になれば結果は完璧なのに、といつも思ってテスト勉強していたものである。ところが、これまでに 1 度だけこの思いが天に通じたことがある。ドイツ語のテストの前日のことである。夕方の 5 時ごろ、テストに備えて仮眠をとっていたときに地震が起きた。本棚の本が落ち、ロッカーの上の荷物が崩れてくるほど大きなものである。もちろん停電、仙台市の市街地の方では心なしか煙が上がっている。学生はというと、テスト勉強に備えて町にさっそくろうそくの買い出しに出かけた。もしかしたら、テストが延期になるかもしれないとも考えたが、その通知はまだ受けていないのでテストがあるものとして、ろうそくのもとで試験勉強をしなければならない。その時に町に出かけた人の話によれば、石垣が崩れていたところもあったそうな。校庭はひび割れし、学校の裏側では一部崖が崩れていた。

 そのころの計算機端末として、よく使われていた Teletype 社の ASR 33 という若干頭でっかちの機械式電動テレタイプもひっくり返っていた。面白いことに、同じ大きさの同じくらいの重さの本棚が、方向によってひっくり返っているものとそうでないものがあった。おそらく地震の揺れの方向が関係しているのだろう。

 結局、その日の夜 11 時にテストの 1 週間延期の知らせが入った。みんな (筆者を含めて) 大喜びであった。しかし、1 週間後に行なわれたテストのできはというとふだんとそれほど変わらなかった。

 原稿にも同じことが言えるかもしれない。締切が 1 週間延びたからといって品質はそれほど上がらないだろう (それでも 2〜3 日延びればだいぶ違うと都合のいいことを考えている)。

 脱線につぐ脱線、閑話休題。歴史的な事実が発生当時から後世に残る出来事だとわかるものは希だろう。

 そういった意味で、今は認識していないが動いているプロジェクト GNU は歴史的存在価値があるのかもしれない。

1-2.GNU Emacs の作成

 前回に引き続き、GNU の歴史を紐解くことにする。この歴史はまだ終わっていない。現在進行形なのである。表 1 に 1984 年から 1987 年までのプロジェクト GNU の歴史を示す。

表 1.   プロジェクト GNU 歴史年表

年 代         出 来 事
1984/M     GNU システムは Unix ベースのシステムとする。
           GNU Manifesto(GNU 宣言) を作成する。
           GNU Emacs の開発を開始する。
1985/?     GNU Emacs の配布を開始する。
1985/3     GNU Manifesto を Dr. Dobb's Journal 誌に発表する。
1985/ 夏   GNU Manifesto を付けて GNU Emacs バージョン 16 を配布する。
1986/2     Free Software Foundation, Inc. (通称 FSF) を設立する。
           GNU Bulletin Vol.1 No.1 を発行する。
           GNU Emacs バージョン 17 や Is、make、texinfo を配布する。
1986/?     gcc (GNU C Compiler) の開発を開始する。
1987/7     Byte 誌に Richard M. Stallman のインタビュー記事が掲載される。
1986/E〜
1987/B     gdb(GNU Debugger) を作成する。
1987/1     各種 GNU ソフトウェアを配布する :
           gdb、GNU Emacs V.18(VMS 用)、gcc、gas(VAX 用)、GNU Window(X)、
           Is、grep、make、ld、cron、at、m4、gawk、bison、MIT Scheme、
           Hack、GNU Chess
           diff や lex の作成を開始する。

 これは文献★2 によると、GNU Emacs は、最初から作ったり、あるいは MIT 時代に rms(Richard) が作成した Emacs(Twenex Emacs あるいは TOPS Emacs) を元にしたのではなく、当初 James Gosling Emacs(James Gosling が作ったのでこう呼ばれている) をベースに作成した。

 この James Gosling Emacs は筆者らが初めて使った Emacs である。当時 CMU(カーネギー・メロン大学) の学生であった James Gosling が、Unix 用の Emacs として最初に 1979 年に開発した。MOCH Lisp と呼ばれるカスタマイズ用の拡張言語を備えている。この MOCH Lisp は一般の Lisp と比較すると、あるいは GNU Emacs の拡張言語である Emacs Lisp と比較すると、機能は十分ではない。この Emacs の作成時に掲げた目標は「プログラム言語を作っているのではなく、拡張言語付きエディタを作ること」とのこと。ちなみに彼は CMU で Andrew ウィンドウ・システム上のエディタを開発したのち、Sun で NeWS の開発に携わっていた。★3 当初、このエディタのソース・コードは大学間で自由にコピーすることができたが、その後、この Emacs のバージョンアップは Unipress Inc. という会社で販売とともに行なわれるようになったため、それより後のものは自由にコピーできなくなった (この会社の手に渡ったものは Unipress Emacs と呼ばれる)。

1-3. 3 種類の Emacs

 TOPS Emacs(オリジナル PDP-10 Emacs、Twenex Emacs) のフルセットと同じものを Unix 上に狙ったものに次のものがある。

【Gosling Emacs】

 James Gosling が作成したもの。現在は Unipress 社が販売している。日本国内では DIT 社が扱っている。現在のバージョンは MS-DOS 上でも動作しているとのこと。最初に発売されたワークステーション SONY NEWS のシリーズには Unipress Emacs がバンドルされていたことを思い出す。

【CCA Emacs】

 Computer Corp. of America で作成されたもの。USENIX という米国の Unix のユーザ・グループがある。そこの活動の一貫として、USENIX テープと銘打って面白そうなソフトウェアを配布している。何年か前に CCA Emacs を USENIX テープの中に入れて配布したことがある。しかし、数カ月の後に CCA Emacs のソース・コードの中にライセンスに触れるものが入っていたことがわかったのですぐに全てを消すように、との連絡がきたことがあった。その後、米国のソフトウェア販売会社が CCA Emacs を売り出した。日本国内ではライフボートが扱っていた覚えがある。特徴として GNU Emacs よりも TOPS Emacs に似ている。

【GNU Emacs】

 これら 3 種類のうちの 2 種類 (CCA Emacs と GNU Emacs) に関して、以前、「UNIX Review」誌で取り上げられたことがある。★4 その文献では GNU Emacs の方が優れているとの結論を出している。Golsing Emacs や CCA Emacs、Twenex Emacs を rms が比較討論した結果が、GNU Emacs 配布テープに emacs/etc/GOSDIFF と emacs/etc/CCADIFF、emacs/etc/DIFF というファイル名で入っている。

2. アーカイブ

 アーカイブ・プログラムとは複数のファイルを 1 つにまとめるプログラムである。使用目的に合わせてさまざまなオプションがある。

 使用目的を分類するとおおむね次のようになるだろう。◆2

 1 つにまとめた後、圧縮するオプションもある (配布用)。アーカイバと呼ばれることもある。ディスク上のファイルをテープにコピーする場合によく使われる。テープというのは基本的に複数のレコードをバラバラに管理しにくいメディアなので、見かけを 1 つのファイルとして記録、再生して用いる。

 例えば、フロッピー・ディスクに格納することを考えてみる。1 つにまとめないで格納すると、オーバヘッドがあり多くのファイルが入らない。アーカイブ・プログラムを用いればファイルをより多く格納することができ、圧縮するオプションを併用するとさらに効率がよくなる。

 また、anonymous ftp マシンにファイルを置いておく場合にも、ハードディスクの節約のため、あるいは取り扱いを楽にするためにアーカイブして圧縮する。anonymous ftp とは、以前の回でも説明したように、ファイル転送プログラムを使って、広域ネットワーク内で広くファイルの交換を行なう場合に用いられる方法である。

 アーカイブ・プログラムと共に用いられる圧縮プログラムにもさまざまな種類がある。

 これらの 3 種類の機能を比較したものを表 2 に示す。ここではバックアップ用や配布用、ライブラリ用の代表的な Unix のコマンド dump、tar、ar を想定した。

 この表でマルチボリュームとは、アーカイブを複数のメディア (フロッピー・ディスクやテープ) に分けて入れる機能があるか否かを示している。また、ファイル名のリストをアーカイブ・ファイルの先頭に置けば、アーカイブ・ファイル全てをスキャンしなくても、その先頭を見るだけでアーカイブされているファイル名がわかる、という利点がある。

 GNU ソフトウェアのアーカイブ・プログラムである GNU tar は表の△の機能を満たしている。

表 2. アーカイブ・プログラムの特徴

×: 機能なし △:GNU tar にある機能 ○: 機能あり

- : この項目での比較は無意味

機能                  バックアップ用   配布用     ライブラリ用
                       (dump)         (tar            (ar)
                                       あるいは
                                       GNU tar)
---------------------+---------------+-----------+---------------
内容のリストを作成する      ○            ○            ○
ファイルの削除              ×            △            ○
ファイルを抜き出す          ○            ○            ○
ファイルを追加する          ×            △            ○
ファイルを移動する          ×            ×            ○
比較する                    ×            ×            ○
アーカイブ・ファイルの移植性×            ○            ○
マルチボリューム            ○            △             -
圧縮                        ×            △            ×
ファイル名をアーカイブ・
ファイルの先頭に置く
オプションがある            ○            △            ○

3. 今月のニュース

 今月は、新 / 旧 GNU ソフトウェアのリリースについてその特徴や入手方法などを紹介し、各種マシン上での GNU の採用状況と Mach カーネルの日本国内再配布について報告する。

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

 rms も含む複数の GNU ボランティアの共同作業でこの GNU ファイル・ユーティリティ (fileutils) は作成された。これらは本年になってリリースされ、まだまだ不安定な部分もあると思う。早期品質向上のためにもユーティリティ・プログラムに関する提案やバグを報告してほしい。宛先は電子メールで bug-gnu-utils@prep.ai.mit.edu へ。

●種類

 fileutils に入っているものは次の通りである。dir と vdir というのは、ls の出力結果の表示方法を変えたものである。create や mkinfo は POSIX 規格に則ったものである。

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

●特徴
●入手方法

 ftp でアクセスできる方は次の情報を参考にお試しいただきたい。

方 法 anonymous ftp

マシン名 prep.ai.mit.edu

IP アドレス 18.71.0.38

ファイル名 pub/gnu/gdbm-1.3.tar.Z か、または

pub/gnu/gdbm-1.2-1.3.shar.Z

●提案やバグ報告先

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

3-2.xgnuplot(バージョン 2.0)

 xgnuplot は gnuplot(グラフィック・プログラム)2.0 の X11R4 対応版で、Chris Peterson や Dana Chee、他によって作成された。

●特徴
●入手方法

 次の情報を参考に ftp でアクセスするか、あるいは電子メールにて ejk@uxh.cso.uiuc.edu へ問い合わせる。

方 法 anonymous ftp

マシン名 uxc.cso.uiuc.edu

ファイル名 pub/xgnuplot/xgnuplot.shar

3-3.MIPS チップのソフトウェア・シミュレータ

 ウィスコンシン大学は、作成したシミュレータ SPIM S20 に copyleft(GNU 一般公的使用許諾) を採用して、4 月から配布を開始した。◆4

 copyleft を採用したからといって、すぐに GNU の ftp マシンに置かれたり配布テープに入るとは限らないが、プロジェクト GNU 以外のプロジェクトでもこのように copyleft で保護し、GNU のいうところの「フリー」な配布を保証する例が多くなっている。これによって、フリーに配布したいが商用目的には使われたくないというプログラム作成者の、あるいは配布者の意思表示が法的に有効となるわけである。殊に、米国においては (正確には日本以外では) 共有精神分かち合い感覚が日常的にも浸透しているので、copyleft の理解層も急速に広まりつつある。

3-4. シミュレータ SPIM S20 とはどのようなものか

 SPIM S20 は、RISC チップを使った MIPS R2000/R3000 マシンのアセンブリ・ソース・プログラムをアセンブルしてからシミュレートするシミュレータで、デバッガや OS のインタフェースを持ち単体で動作するプログラムである。コンパイラを学ぶ学生のために作成された。

●特徴
●今後
●入手方法

 ftp でアクセスできる方は次の情報を参考にお試しいただきたい。今後のバージョンアップについては電子メールにて larus@cs.wisc.edu へ問い合わせる。

方 法 anonymous ftp

マシン名 primost.cs.wisc.edu

IP アドレス 128.105.8.17

ファイル名 pub/spim.tar.Z

3-5.Tektronix 社が 88k シミュレータのフロントエンドに gdb を採用

 ワシントン大学の Robert Bedichek が、今年 1 月の USENIX コンファレンスで「Some Efficient Architecture Simulation Techniques」と題して、Tektronix 社の XD-88(88k マシン) のシミュレータ開発についての研究を発表している。OS は System V である。

●特徴

 このシミュレータを使ってみたいと思う方は、どのようなホスト・マシンの上でどのような目的で使おうとしているのかを、Robert Bedichek(robert@june.cs.washington.edu) に電子メールで連絡してほしい。そのコードに対して何をしなければならないかを研究する情報を得られ、また品質の向上にもつながる。

3-6. 日本でも Mach OS 再配布サービスを行なう企業が現れる

 OMRON が Mach OS のソース・コードを手数料のみで再配布する。受付は (1990 年)5 月 20 日から、再配布は 6 月 20 日からで、詳細は同社へ問い合わせのこと。この Mach は将来の GNU カーネル候補にあがっている分散 OS で、カーネギー・メロン大学の Mach プロジェクトが開発している。

 この再配布によって、Mach ユーザへは研究の自由と容易性を提供し、Mach OS へはその普及に伴う品質向上をはかることができる。ソフトウェアがソース・コードで提供されることの意義にその価値を認識できる良い先例だと思う。

3-7. ベンチマーク・テストの標準化

 特にワークステーションの性能向上曲線が急カーブな近頃では、マシンの性能評価の一端となるベンチマーク・テストを標準化し、ユーザ・アプリケーションのように評価しようという動きがある。その先頭をきっているのが SPEC(Systems Performance Evaluation Cooperative) という非営利団体である。

 標準化によって、各種ベンチマーク・テスト・プログラムの欠点も補われ、結果としてマイクロプロセッサの演算能力に依存した現実的でないデータが出にくくなるだろう。

 興味ある点はこの SPEC ベンチマーク・テスト・プログラムの 1 つとして gcc が採用されたことである。整数演算速度の目安にしている。問い合わせ先を次に示す。◆6

SPEC
c/o Waterside Associates
39510 Paseo Padere Suite 350
Fremont, CA 94538
U.S.A.

4. おわりに

 プロジェクト GNU の歴史の一部と Emacs にまつわる話をした。今月のニュースでは GNU の一般公的使用許諾で保護したプログラムや gdb(GNU DeBugger、GNU デバッガ) のフロントエンドを採用している話題を取り上げた。いろいろな GNU ソフトウェアの応用がさまざまなユーザによって行なわれている。◆7

 アーカイブ・プログラムの一般概要とほんの少し GNU tar について触れた。詳細は回を改めてレビューしたい。

参考文献

★1

栗田多喜夫、「コンピューティングの玉手箱 (41)、ファイル圧縮」「bit」1988 年 5 月号

★2

リチャード・ストールマン、斉藤康己、高木茂行、竹内郁雄、近山隆「座談会 リチャード・ストールマン氏を囲んで」「bit」1987 年 8 月号、共立出版

★3

Scott McREGOR「James GOSLING が語るユーザー・インターフェイス」「UNIX MAGAZINE」1987 年 1 月号、アスキー

★4

Issac J. Salzman「製品評価--from UNIX REVIEW、EMACS」"UNIX Review"1989 年 10 月号

★5

Gerry Kane, mips RISC ARCHITECTURE, Prentice Hall, 1988

付録 表

アーカイブ・プログラム tar と cpio の比較

(×: 機能なし、○: 機能あり)

機  能           tar   GNU tar  cpio  GNU cpio
-----------------------------+------+---------+-------+----------
内容のリストを作成する     ○   ○   ○   ○
ファイルの削除         ×   ○   ×   ×
ファイルを抜き出す       ○   ○   ○   ○
ファイルを追加する       ○   ○   ×   ×
ファイルを移動する       ×   ×   ×   ×
比較する            ×   ×   ×   ×
アーカイブ・ファイルの移植性  ○   ○   ○   ○
マルチボリューム        ×   ○   ○   ○
圧縮              ×   ○   ×   ×
ファイル名をアーカイブ・
ファイルの先頭に置く
オプションがある        ×   ○   ×   ×
操作対象のファイル名を
標準入力から与える
オプションがある        ×   ○   ○   ○

Think GNU 連載第 5 回【脚注】

◆1

GNU の小冊子「GNU ダイジェスト」を USENIX ごとに 300 部配布していたが、最近は 120 部に減った。

 どうしてだろうか ? 米国の人の間で当初物珍しくて持っていったようだが、最近はそういった熱もさめたのか ?

◆2

アーカイブ・プログラムを取り上げている。BSD 系の Unix で tar コマンドが配布イメージによく用いられる。System V 系では cpio である。GNU 版も用意されている (第 7 回で触れる)。tar と cpio を比較した表をこの章の最後に示す。

◆3

GNU C ライブラリを作成しており 1992 年現在バージョン 1.05 である。

◆4

前述のように現在は GNU 一般公有使用許諾と呼んでいる。

◆5

X Window System 用のインタフェースは既にリリースされている。

◆6

SPEC ベンチマーク・テストプログラムの一部を変更した最新のバージョンを SPEC 92 と呼び、古い SPEC のバージョンと区別している。コンパイラの改良により 10 倍程度差が出るテスト・プログラムを省いた点と、整数テスト・プログラムと浮動小数点テスト・プログラムの性能を分けて表記することも勧めている。

◆7

現在は GNU 一般公有使用許諾と呼んでいる。